rubidium@9596: #include "ai_order.hpp" rubidium@9596: rubidium@9596: namespace SQConvert { rubidium@9596: /* Allow enums to be used as Squirrel parameters */ rubidium@9596: template <> AIOrder::AIOrderFlags GetParam(ForceType, HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIOrder::AIOrderFlags)tmp; } rubidium@9596: template <> int Return(HSQUIRRELVM vm, AIOrder::AIOrderFlags res) { sq_pushinteger(vm, (int32)res); return 1; } rubidium@9596: rubidium@9596: /* Allow AIOrder to be used as Squirrel parameter */ rubidium@9596: template <> AIOrder *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIOrder *)instance; } rubidium@9596: template <> AIOrder &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIOrder *)instance; } rubidium@9596: template <> const AIOrder *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIOrder *)instance; } rubidium@9596: template <> const AIOrder &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIOrder *)instance; } truelight@9680: template <> int Return(HSQUIRRELVM vm, AIOrder *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIOrder", res, NULL, DefSQDestructorCallback); return 1; } rubidium@9596: }; // namespace SQConvert rubidium@9596: rubidium@9596: void SQAIOrderRegister(Squirrel *engine) { rubidium@9596: DefSQClass SQAIOrder("AIOrder"); rubidium@9596: SQAIOrder.PreRegister(engine); truelight@9635: SQAIOrder.AddConstructor(engine, "x"); rubidium@9596: rubidium@9596: SQAIOrder.DefSQConst(engine, AIOrder::AIOF_NONE, "AIOF_NONE"); rubidium@9596: SQAIOrder.DefSQConst(engine, AIOrder::AIOF_TRANSFER, "AIOF_TRANSFER"); rubidium@9596: SQAIOrder.DefSQConst(engine, AIOrder::AIOF_UNLOAD, "AIOF_UNLOAD"); rubidium@9596: SQAIOrder.DefSQConst(engine, AIOrder::AIOF_FULL_LOAD, "AIOF_FULL_LOAD"); rubidium@9596: SQAIOrder.DefSQConst(engine, AIOrder::AIOF_SERVICE_IF_NEEDED, "AIOF_SERVICE_IF_NEEDED"); rubidium@9596: SQAIOrder.DefSQConst(engine, AIOrder::AIOF_NON_STOP, "AIOF_NON_STOP"); rubidium@9596: SQAIOrder.DefSQConst(engine, AIOrder::AIOF_INVALID, "AIOF_INVALID"); rubidium@9596: rubidium@9596: SQAIOrder.DefSQStaticMethod(engine, &AIOrder::GetClassName, "GetClassName", 1, "x"); rubidium@9596: SQAIOrder.DefSQStaticMethod(engine, &AIOrder::IsValidVehicleOrder, "IsValidVehicleOrder", 3, "xii"); rubidium@9596: SQAIOrder.DefSQStaticMethod(engine, &AIOrder::AreOrderFlagsValid, "AreOrderFlagsValid", 3, "xii"); rubidium@9596: rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::GetNumberOfOrders, "GetNumberOfOrders", 2, "xi"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::GetOrderDestination, "GetOrderDestination", 3, "xii"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::GetOrderFlags, "GetOrderFlags", 3, "xii"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::AppendOrder, "AppendOrder", 4, "xiii"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::InsertOrder, "InsertOrder", 5, "xiiii"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::RemoveOrder, "RemoveOrder", 3, "xii"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::ChangeOrder, "ChangeOrder", 4, "xiii"); truelight@9707: SQAIOrder.DefSQMethod(engine, &AIOrder::MoveOrder, "MoveOrder", 4, "xiii"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::CopyOrders, "CopyOrders", 3, "xii"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::ShareOrders, "ShareOrders", 3, "xii"); rubidium@9596: SQAIOrder.DefSQMethod(engine, &AIOrder::UnshareOrders, "UnshareOrders", 2, "xi"); rubidium@9596: rubidium@9596: SQAIOrder.PostRegister(engine); rubidium@9596: }