src/ai/api/ai_vehicle.hpp.sq
author truelight
Sat, 14 Jul 2007 21:15:49 +0000
branchnoai
changeset 9657 f2c6e332d8bc
parent 9654 b836eb5c521f
child 9672 18c71ca987e4
permissions -rw-r--r--
(svn r10564) [NoAI] -Add: added a AITileList valuator that checks for a NxM buildable spot with the entry from the AITileList as top-left tile
#include "ai_vehicle.hpp"

namespace SQConvert {
	/* Allow AIVehicle to be used as Squirrel parameter */
	template <> AIVehicle *GetParam(ForceType<AIVehicle *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIVehicle *)instance; }
	template <> AIVehicle &GetParam(ForceType<AIVehicle &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicle *)instance; }
	template <> const AIVehicle *GetParam(ForceType<const AIVehicle *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIVehicle *)instance; }
	template <> const AIVehicle &GetParam(ForceType<const AIVehicle &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicle *)instance; }
}; // namespace SQConvert

void SQAIVehicleRegister(Squirrel *engine) {
	DefSQClass <AIVehicle> SQAIVehicle("AIVehicle");
	SQAIVehicle.PreRegister(engine);
	SQAIVehicle.AddConstructor<void (AIVehicle::*)(), 1>(engine, "x");

	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetClassName,      "GetClassName",      1, "x");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::IsValidEngine,     "IsValidEngine",     2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::IsValidVehicle,    "IsValidVehicle",    2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetLocation,       "GetLocation",       2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetEngineType,     "GetEngineType",     2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetUnitNumber,     "GetUnitNumber",     2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetAge,            "GetAge",            2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetMaxAge,         "GetMaxAge",         2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetAgeLeft,        "GetAgeLeft",        2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetProfitThisYear, "GetProfitThisYear", 2, "xi");
	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetProfitLastYear, "GetProfitLastYear", 2, "xi");

	SQAIVehicle.DefSQMethod(engine, &AIVehicle::FindBestRoadVehicle,     "FindBestRoadVehicle",     3, "xii");
	SQAIVehicle.DefSQMethod(engine, &AIVehicle::FindBestAircraftVehicle, "FindBestAircraftVehicle", 3, "xii");
	SQAIVehicle.DefSQMethod(engine, &AIVehicle::BuildVehicle,            "BuildVehicle",            3, "xii");
	SQAIVehicle.DefSQMethod(engine, &AIVehicle::CloneVehicle,            "CloneVehicle",            4, "xiib");
	SQAIVehicle.DefSQMethod(engine, &AIVehicle::RefitVehicle,            "RefitVehicle",            3, "xii");
	SQAIVehicle.DefSQMethod(engine, &AIVehicle::SellVehicle,             "SellVehicle",             2, "xi");
	SQAIVehicle.DefSQMethod(engine, &AIVehicle::SendVehicleToDepot,      "SendVehicleToDepot",      2, "xi");
	SQAIVehicle.DefSQMethod(engine, &AIVehicle::StartStopVehicle,        "StartStopVehicle",        2, "xi");
	SQAIVehicle.DefSQMethod(engine, &AIVehicle::SkipVehicleOrder,        "SkipVehicleOrder",        2, "xi");

	SQAIVehicle.PostRegister(engine);
}