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

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

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

void SQAITile_Register(Squirrel *engine) {
	DefSQClass <AITile> SQAITile("AITile");
	SQAITile.PreRegister(engine);
	SQAITile.AddConstructor<void (AITile::*)(), 1>(engine, "x");

	SQAITile.DefSQConst(engine, AITile::SLOPE_FLAT,     "SLOPE_FLAT");
	SQAITile.DefSQConst(engine, AITile::SLOPE_W,        "SLOPE_W");
	SQAITile.DefSQConst(engine, AITile::SLOPE_S,        "SLOPE_S");
	SQAITile.DefSQConst(engine, AITile::SLOPE_E,        "SLOPE_E");
	SQAITile.DefSQConst(engine, AITile::SLOPE_N,        "SLOPE_N");
	SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP,    "SLOPE_STEEP");
	SQAITile.DefSQConst(engine, AITile::SLOPE_NW,       "SLOPE_NW");
	SQAITile.DefSQConst(engine, AITile::SLOPE_SW,       "SLOPE_SW");
	SQAITile.DefSQConst(engine, AITile::SLOPE_SE,       "SLOPE_SE");
	SQAITile.DefSQConst(engine, AITile::SLOPE_NE,       "SLOPE_NE");
	SQAITile.DefSQConst(engine, AITile::SLOPE_EW,       "SLOPE_EW");
	SQAITile.DefSQConst(engine, AITile::SLOPE_NS,       "SLOPE_NS");
	SQAITile.DefSQConst(engine, AITile::SLOPE_ELEVATED, "SLOPE_ELEVATED");
	SQAITile.DefSQConst(engine, AITile::SLOPE_NWS,      "SLOPE_NWS");
	SQAITile.DefSQConst(engine, AITile::SLOPE_WSE,      "SLOPE_WSE");
	SQAITile.DefSQConst(engine, AITile::SLOPE_SEN,      "SLOPE_SEN");
	SQAITile.DefSQConst(engine, AITile::SLOPE_ENW,      "SLOPE_ENW");
	SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_W,  "SLOPE_STEEP_W");
	SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_S,  "SLOPE_STEEP_S");
	SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_E,  "SLOPE_STEEP_E");
	SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_N,  "SLOPE_STEEP_N");

	SQAITile.DefSQStaticMethod(engine, &AITile::GetClassName,       "GetClassName",       1, "x");
	SQAITile.DefSQStaticMethod(engine, &AITile::IsBuildable,        "IsBuildable",        2, "xi");
	SQAITile.DefSQStaticMethod(engine, &AITile::IsWater,            "IsWater",            2, "xi");
	SQAITile.DefSQStaticMethod(engine, &AITile::GetSlope,           "GetSlope",           2, "xi");
	SQAITile.DefSQStaticMethod(engine, &AITile::GetHeight,          "GetHeight",          2, "xi");
	SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoAcceptance, "GetCargoAcceptance", 6, "xiiiii");
	SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoProduction, "GetCargoProduction", 6, "xiiiii");
	SQAITile.DefSQStaticMethod(engine, &AITile::RaiseTile,          "RaiseTile",          3, "xii");
	SQAITile.DefSQStaticMethod(engine, &AITile::LowerTile,          "LowerTile",          3, "xii");

	SQAITile.PostRegister(engine);
}