src/ai/api/ai_order.hpp.sq
author truebrain
Sat, 23 Feb 2008 16:21:10 +0000
branchnoai
changeset 9746 e4ab7ea8d897
parent 9741 53c1c5850e01
child 10093 b3849a19d137
permissions -rw-r--r--
(svn r12226) [NoAI] -Fix: remove the dep for AIStationList_Vehicle on AIStationList, as Squirrel doesn't like it
#include "ai_order.hpp"

namespace SQConvert {
	/* Allow enums to be used as Squirrel parameters */
	template <> AIOrder::AIOrderFlags GetParam(ForceType<AIOrder::AIOrderFlags>, HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIOrder::AIOrderFlags)tmp; }
	template <> int Return<AIOrder::AIOrderFlags>(HSQUIRRELVM vm, AIOrder::AIOrderFlags res) { sq_pushinteger(vm, (int32)res); return 1; }

	/* Allow AIOrder to be used as Squirrel parameter */
	template <> AIOrder *GetParam(ForceType<AIOrder *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIOrder *)instance; }
	template <> AIOrder &GetParam(ForceType<AIOrder &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIOrder *)instance; }
	template <> const AIOrder *GetParam(ForceType<const AIOrder *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIOrder *)instance; }
	template <> const AIOrder &GetParam(ForceType<const AIOrder &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIOrder *)instance; }
	template <> int Return<AIOrder *>(HSQUIRRELVM vm, AIOrder *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIOrder", res, NULL, DefSQDestructorCallback<AIOrder>); return 1; }
}; // namespace SQConvert

void SQAIOrder_Register(Squirrel *engine) {
	DefSQClass <AIOrder> SQAIOrder("AIOrder");
	SQAIOrder.PreRegister(engine);
	SQAIOrder.AddConstructor<void (AIOrder::*)(), 1>(engine, "x");

	SQAIOrder.DefSQConst(engine, AIOrder::AIOF_NONE,              "AIOF_NONE");
	SQAIOrder.DefSQConst(engine, AIOrder::AIOF_TRANSFER,          "AIOF_TRANSFER");
	SQAIOrder.DefSQConst(engine, AIOrder::AIOF_UNLOAD,            "AIOF_UNLOAD");
	SQAIOrder.DefSQConst(engine, AIOrder::AIOF_FULL_LOAD,         "AIOF_FULL_LOAD");
	SQAIOrder.DefSQConst(engine, AIOrder::AIOF_SERVICE_IF_NEEDED, "AIOF_SERVICE_IF_NEEDED");
	SQAIOrder.DefSQConst(engine, AIOrder::AIOF_NON_STOP,          "AIOF_NON_STOP");
	SQAIOrder.DefSQConst(engine, AIOrder::AIOF_INVALID,           "AIOF_INVALID");

	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::GetClassName,        "GetClassName",        1, "x");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::IsValidVehicleOrder, "IsValidVehicleOrder", 3, "xii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::AreOrderFlagsValid,  "AreOrderFlagsValid",  3, "xii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::GetNumberOfOrders,   "GetNumberOfOrders",   2, "xi");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::GetOrderDestination, "GetOrderDestination", 3, "xii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::GetOrderFlags,       "GetOrderFlags",       3, "xii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::AppendOrder,         "AppendOrder",         4, "xiii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::InsertOrder,         "InsertOrder",         5, "xiiii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::RemoveOrder,         "RemoveOrder",         3, "xii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::ChangeOrder,         "ChangeOrder",         4, "xiii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::MoveOrder,           "MoveOrder",           4, "xiii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::CopyOrders,          "CopyOrders",          3, "xii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::ShareOrders,         "ShareOrders",         3, "xii");
	SQAIOrder.DefSQStaticMethod(engine, &AIOrder::UnshareOrders,       "UnshareOrders",       2, "xi");

	SQAIOrder.PostRegister(engine);
}