int LuaSyncedMoveCtrl::SetProgressState(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const int args = lua_gettop(L); // number of arguments if (args < 2) { luaL_error(L, "Incorrect arguments to SetProgressState()"); } if (lua_isnumber(L, 2)) { const int state = lua_toint(L, 2); if ((state < AMoveType::Done) || (state > AMoveType::Failed)) { luaL_error(L, "SetProgressState(): bad state value (%i)", state); } moveType->progressState = (AMoveType::ProgressState) state; } else if (lua_isstring(L, 2)) { const string state = lua_tostring(L, 2); if (state == "done") { moveType->progressState = AMoveType::Done; } else if (state == "active") { moveType->progressState = AMoveType::Active; } else if (state == "failed") { moveType->progressState = AMoveType::Failed; } else { luaL_error(L, "SetProgressState(): bad state value (%s)", state.c_str()); } } else { luaL_error(L, "Incorrect arguments to SetProgressState()"); } return 0; }
int LuaSyncedMoveCtrl::SetWindFactor(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->windFactor = luaL_checkfloat(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetGroundOffset(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->groundOffset = luaL_checkfloat(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetTrackGround(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->trackGround = luaL_checkboolean(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetSlopeStop(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->slopeStop = luaL_checkboolean(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetExtrapolate(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->extrapolate = luaL_checkboolean(L, 2); return 0; }
int LuaSyncedMoveCtrl::GetTag(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } lua_pushnumber(L, moveType->tag); return 1; }
int LuaSyncedMoveCtrl::SetTag(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->tag = luaL_checkint(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetCollideStop(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } moveType->gndStop = luaL_checkboolean(L, 2); // FIXME moveType->collideStop = lua_toboolean(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetHeading(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const short heading = (short)luaL_checknumber(L, 2); ASSERT_SYNCED((short)heading); moveType->SetHeading(heading); return 0; }
int LuaSyncedMoveCtrl::SetNoBlocking(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } // marks or unmarks the unit on the blocking-map, but // does not change its blocking (collidable) state moveType->SetNoBlocking(luaL_checkboolean(L, 2)); return 0; }
int LuaSyncedMoveCtrl::SetSlopeStop(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const int args = lua_gettop(L); // number of arguments if ((args < 2) || !lua_isboolean(L, 2)) { luaL_error(L, "Incorrect arguments to SetSlopeStop()"); } moveType->slopeStop = lua_toboolean(L, 2); return 0; }
int LuaSyncedMoveCtrl::SetPosition(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const float3 pos(luaL_checkfloat(L, 2), luaL_checkfloat(L, 3), luaL_checkfloat(L, 4)); ASSERT_SYNCED(pos); moveType->SetPosition(pos); return 0; }
int LuaSyncedMoveCtrl::SetRotationVelocity(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const float3 rotVel(luaL_checkfloat(L, 2), luaL_checkfloat(L, 3), luaL_checkfloat(L, 4)); ASSERT_SYNCED(rotVel); moveType->SetRotationVelocity(rotVel); return 0; }
int LuaSyncedMoveCtrl::SetNoBlocking(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const int args = lua_gettop(L); // number of arguments if ((args < 2) || !lua_isboolean(L, 2)) { luaL_error(L, "Incorrect arguments to SetNoBlocking()"); } // marks or unmarks the unit on the blocking-map, but // does not change its blocking (collidable) state moveType->SetNoBlocking(lua_toboolean(L, 2)); return 0; }
int LuaSyncedMoveCtrl::SetLimits(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const float3 mins(luaL_checkfloat(L, 2), luaL_checkfloat(L, 3), luaL_checkfloat(L, 4)); const float3 maxs(luaL_checkfloat(L, 5), luaL_checkfloat(L, 6), luaL_checkfloat(L, 7)); moveType->mins = mins; moveType->maxs = maxs; return 0; }
int LuaSyncedMoveCtrl::SetPhysics(lua_State* L) { CScriptMoveType* moveType = ParseMoveType(L, __FUNCTION__, 1); if (moveType == NULL) { return 0; } const float3 pos(luaL_checkfloat(L, 2), luaL_checkfloat(L, 3), luaL_checkfloat(L, 4)); const float3 vel(luaL_checkfloat(L, 5), luaL_checkfloat(L, 6), luaL_checkfloat(L, 7)); const float3 rot(luaL_checkfloat(L, 8), luaL_checkfloat(L, 9), luaL_checkfloat(L, 10)); ASSERT_SYNCED(pos); ASSERT_SYNCED(vel); ASSERT_SYNCED(rot); moveType->SetPhysics(pos, vel, rot); return 0; }