truelight@9617: #include "ai_tile.hpp" truelight@9617: truelight@9617: namespace SQConvert { truelight@9708: /* Allow enums to be used as Squirrel parameters */ truelight@9708: template <> AITile::Slope GetParam(ForceType, HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AITile::Slope)tmp; } truelight@9708: template <> int Return(HSQUIRRELVM vm, AITile::Slope res) { sq_pushinteger(vm, (int32)res); return 1; } truelight@9708: truelight@9617: /* Allow AITile to be used as Squirrel parameter */ truelight@9617: template <> AITile *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITile *)instance; } truelight@9617: template <> AITile &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITile *)instance; } truelight@9617: template <> const AITile *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITile *)instance; } truelight@9617: template <> const AITile &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITile *)instance; } truelight@9680: template <> int Return(HSQUIRRELVM vm, AITile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITile", res, NULL, DefSQDestructorCallback); return 1; } truelight@9617: }; // namespace SQConvert truelight@9617: truebrain@9741: void SQAITile_Register(Squirrel *engine) { truelight@9617: DefSQClass SQAITile("AITile"); truelight@9617: SQAITile.PreRegister(engine); truelight@9635: SQAITile.AddConstructor(engine, "x"); truelight@9617: truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_FLAT, "SLOPE_FLAT"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_W, "SLOPE_W"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_S, "SLOPE_S"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_E, "SLOPE_E"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_N, "SLOPE_N"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP, "SLOPE_STEEP"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_NW, "SLOPE_NW"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_SW, "SLOPE_SW"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_SE, "SLOPE_SE"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_NE, "SLOPE_NE"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_EW, "SLOPE_EW"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_NS, "SLOPE_NS"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_ELEVATED, "SLOPE_ELEVATED"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_NWS, "SLOPE_NWS"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_WSE, "SLOPE_WSE"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_SEN, "SLOPE_SEN"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_ENW, "SLOPE_ENW"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_W, "SLOPE_STEEP_W"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_S, "SLOPE_STEEP_S"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_E, "SLOPE_STEEP_E"); truelight@9708: SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_N, "SLOPE_STEEP_N"); truelight@9708: truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::GetClassName, "GetClassName", 1, "x"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::IsBuildable, "IsBuildable", 2, "xi"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::IsBuildableRectangle, "IsBuildableRectangle", 4, "xiii"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::IsWater, "IsWater", 2, "xi"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::GetSlope, "GetSlope", 2, "xi"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::GetHeight, "GetHeight", 2, "xi"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoAcceptance, "GetCargoAcceptance", 6, "xiiiii"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoProduction, "GetCargoProduction", 6, "xiiiii"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, "xii"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, "xii"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::RaiseTile, "RaiseTile", 3, "xii"); truebrain@9814: SQAITile.DefSQStaticMethod(engine, &AITile::LowerTile, "LowerTile", 3, "xii"); truebrain@9834: SQAITile.DefSQStaticMethod(engine, &AITile::DemolishTile, "DemolishTile", 2, "xi"); truelight@9708: truelight@9617: SQAITile.PostRegister(engine); truelight@9617: }