154 bool UnshareOrders(VehicleID vehicle_id); |
154 bool UnshareOrders(VehicleID vehicle_id); |
155 }; |
155 }; |
156 DECLARE_ENUM_AS_BIT_SET(AIOrder::AIOrderFlags); |
156 DECLARE_ENUM_AS_BIT_SET(AIOrder::AIOrderFlags); |
157 |
157 |
158 #ifdef DEFINE_SQUIRREL_CLASS |
158 #ifdef DEFINE_SQUIRREL_CLASS |
159 /* Custom template to allow enums as Squirrel parameters */ |
|
160 namespace SQConvert { |
159 namespace SQConvert { |
|
160 /* Allow enums to be used as Squirrel parameters */ |
161 template <> AIOrder::AIOrderFlags GetParam(ForceType<AIOrder::AIOrderFlags>, HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIOrder::AIOrderFlags)tmp; } |
161 template <> AIOrder::AIOrderFlags GetParam(ForceType<AIOrder::AIOrderFlags>, HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIOrder::AIOrderFlags)tmp; } |
162 template <> int Return<AIOrder::AIOrderFlags>(HSQUIRRELVM vm, AIOrder::AIOrderFlags res) { sq_pushinteger(vm, (int32)res); return 1; } |
162 template <> int Return<AIOrder::AIOrderFlags>(HSQUIRRELVM vm, AIOrder::AIOrderFlags res) { sq_pushinteger(vm, (int32)res); return 1; } |
|
163 |
|
164 /* Allow AIOrder to be used as Squirrel parameter */ |
|
165 template <> AIOrder *GetParam(ForceType<AIOrder *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIOrder *)instance; } |
163 }; // namespace SQConvert |
166 }; // namespace SQConvert |
164 |
167 |
165 void SQAIOrderRegister(Squirrel *engine) { |
168 void SQAIOrderRegister(Squirrel *engine) { |
166 DefSQClass <AIOrder> SQAIOrder("AIOrder"); |
169 DefSQClass <AIOrder> SQAIOrder("AIOrder"); |
167 SQAIOrder.PreRegister(engine); |
170 SQAIOrder.PreRegister(engine); |