bool CSyncedLuaHandle::AllowFeatureCreation(const FeatureDef* featureDef, int teamID, const float3& pos) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 7, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined lua_pushnumber(L, featureDef->id); lua_pushnumber(L, teamID); lua_pushnumber(L, pos.x); lua_pushnumber(L, pos.y); lua_pushnumber(L, pos.z); // call the function if (!RunCallIn(L, cmdStr, 5, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::AllowFeatureBuildStep(const CUnit* builder, const CFeature* feature, float part) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 7, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined lua_pushnumber(L, builder->id); lua_pushnumber(L, builder->team); lua_pushnumber(L, feature->id); lua_pushnumber(L, feature->def->id); lua_pushnumber(L, part); // call the function if (!RunCallIn(L, cmdStr, 5, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::AllowUnitCreation(const UnitDef* unitDef, const CUnit* builder, const BuildInfo* buildInfo) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 9, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined lua_pushnumber(L, unitDef->id); lua_pushnumber(L, builder->id); lua_pushnumber(L, builder->team); if (buildInfo != NULL) { lua_pushnumber(L, buildInfo->pos.x); lua_pushnumber(L, buildInfo->pos.y); lua_pushnumber(L, buildInfo->pos.z); lua_pushnumber(L, buildInfo->buildFacing); } // call the function if (!RunCallIn(L, cmdStr, (buildInfo != NULL)? 7 : 3, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::ShieldPreDamaged( const CProjectile* projectile, const CWeapon* shieldEmitter, const CUnit* shieldCarrier, bool bounceProjectile ) { LUA_CALL_IN_CHECK(L, false); luaL_checkstack(L, 2 + 5 + 1, __FUNCTION__); const LuaUtils::ScopedDebugTraceBack traceBack(L); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return false; // push the call-in arguments lua_pushnumber(L, projectile->id); lua_pushnumber(L, projectile->GetOwnerID()); lua_pushnumber(L, shieldEmitter->weaponNum); lua_pushnumber(L, shieldCarrier->id); lua_pushboolean(L, bounceProjectile); // call the routine if (!RunCallInTraceback(L, cmdStr, 5, 1, traceBack.GetErrFuncIdx(), false)) return false; // pop the return-value; must be true or false const bool ret = luaL_optboolean(L, -1, false); lua_pop(L, 1); return ret; }
int CSyncedLuaHandle::AllowWeaponTargetCheck(unsigned int attackerID, unsigned int attackerWeaponNum, unsigned int attackerWeaponDefID) { int ret = -1; if (!watchWeaponDefs[attackerWeaponDefID]) return ret; LUA_CALL_IN_CHECK(L, -1); luaL_checkstack(L, 2 + 3 + 1, __FUNCTION__); const LuaUtils::ScopedDebugTraceBack traceBack(L); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return ret; lua_pushnumber(L, attackerID); lua_pushnumber(L, attackerWeaponNum); lua_pushnumber(L, attackerWeaponDefID); if (!RunCallInTraceback(L, cmdStr, 3, 1, traceBack.GetErrFuncIdx(), false)) return ret; ret = int(luaL_optboolean(L, -1, false)); //FIXME int???? lua_pop(L, 1); return ret; }
bool CSyncedLuaHandle::AllowStartPosition(int playerID, unsigned char readyState, const float3& clampedPos, const float3& rawPickPos) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 13, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined // push the start position and playerID lua_pushnumber(L, clampedPos.x); lua_pushnumber(L, clampedPos.y); lua_pushnumber(L, clampedPos.z); lua_pushnumber(L, playerID); lua_pushnumber(L, readyState); lua_pushnumber(L, rawPickPos.x); lua_pushnumber(L, rawPickPos.y); lua_pushnumber(L, rawPickPos.z); // call the function if (!RunCallIn(L, cmdStr, 8, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CUnsyncedLuaHandle::DrawProjectile(const CProjectile* projectile) { if (!(projectile->weapon || projectile->piece)) return false; LUA_CALL_IN_CHECK(L, false); luaL_checkstack(L, 5, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return false; const bool oldDrawState = LuaOpenGL::IsDrawingEnabled(L); LuaOpenGL::SetDrawingEnabled(L, true); lua_pushnumber(L, projectile->id); lua_pushnumber(L, game->GetDrawMode()); const bool success = RunCallIn(L, cmdStr, 2, 1); LuaOpenGL::SetDrawingEnabled(L, oldDrawState); if (!success) return false; const bool retval = luaL_optboolean(L, -1, false); lua_pop(L, 1); return retval; }
bool CUnsyncedLuaHandle::DrawShield(const CUnit* unit, const CWeapon* weapon) { LUA_CALL_IN_CHECK(L, false); luaL_checkstack(L, 5, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return false; const bool oldDrawState = LuaOpenGL::IsDrawingEnabled(L); LuaOpenGL::SetDrawingEnabled(L, true); lua_pushnumber(L, unit->id); lua_pushnumber(L, weapon->weaponNum); lua_pushnumber(L, game->GetDrawMode()); const bool success = RunCallIn(L, cmdStr, 3, 1); LuaOpenGL::SetDrawingEnabled(L, oldDrawState); if (!success) return false; const bool retval = luaL_optboolean(L, -1, false); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::AllowWeaponInterceptTarget( const CUnit* interceptorUnit, const CWeapon* interceptorWeapon, const CProjectile* interceptorTarget ) { bool ret = true; if (!watchWeaponDefs[interceptorWeapon->weaponDef->id]) return ret; LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 2 + 3 + 1, __FUNCTION__); const LuaUtils::ScopedDebugTraceBack traceBack(L); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return ret; lua_pushnumber(L, interceptorUnit->id); lua_pushnumber(L, interceptorWeapon->weaponNum); lua_pushnumber(L, interceptorTarget->id); if (!RunCallInTraceback(L, cmdStr, 3, 1, traceBack.GetErrFuncIdx(), false)) return ret; ret = luaL_optboolean(L, -1, false); lua_pop(L, 1); return ret; }
bool CSyncedLuaHandle::TerraformComplete(const CUnit* unit, const CUnit* build) { LUA_CALL_IN_CHECK(L, false); luaL_checkstack(L, 8, __FUNCTION__); const LuaUtils::ScopedDebugTraceBack traceBack(L); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return false; // the call is not defined // push the unit info lua_pushnumber(L, unit->id); lua_pushnumber(L, unit->unitDef->id); lua_pushnumber(L, unit->team); // push the construction info lua_pushnumber(L, build->id); lua_pushnumber(L, build->unitDef->id); lua_pushnumber(L, build->team); // call the function if (!RunCallInTraceback(L, cmdStr, 6, 1, traceBack.GetErrFuncIdx(), false)) return false; // get the results const bool retval = luaL_optboolean(L, -1, false); lua_pop(L, 1); return retval; }
static int KeyValues_FindKey (lua_State *L) { switch(lua_type(L, 2)) { case LUA_TNUMBER: lua_pushkeyvalues(L, luaL_checkkeyvalues(L, 1)->FindKey(luaL_checkint(L, 2))); break; case LUA_TSTRING: default: lua_pushkeyvalues(L, luaL_checkkeyvalues(L, 1)->FindKey(luaL_checkstring(L, 2), luaL_optboolean(L, 3, false))); break; } return 1; }
static int lua_tile_dither(lua_State*L) { getIdxPtrChk size_t projectIDX = *idxPtr; size_t tile = idxPtr[1]; unsigned row = luaL_optinteger(L, 2, 0); bool useAlt = luaL_optboolean(L, 3, false); if (inRangeTile(tile, projectIDX)) projects[projectIDX].tileC->truecolor_to_tile(row, tile, useAlt); return 0; }
static int vlclua_playlist_sort( lua_State *L ) { /* allow setting the different sort keys */ int i_mode = vlc_sort_key_from_string( luaL_checkstring( L, 1 ) ); if( i_mode == -1 ) return luaL_error( L, "Invalid search key." ); int i_type = luaL_optboolean( L, 2, 0 ) ? ORDER_REVERSE : ORDER_NORMAL; playlist_t *p_playlist = vlclua_get_playlist_internal( L ); PL_LOCK; int i_ret = playlist_RecursiveNodeSort( p_playlist, p_playlist->p_playing, i_mode, i_type ); PL_UNLOCK; return vlclua_push_ret( L, i_ret ); }
bool CSyncedLuaHandle::CommandFallback(const CUnit* unit, const Command& cmd) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 9, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined PushUnitAndCommand(L, unit, cmd); // call the function if (!RunCallIn(L, cmdStr, 7, 1)) return true; const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; // return 'true' to remove the command }
bool CSyncedLuaHandle::AllowWeaponTarget( unsigned int attackerID, unsigned int targetID, unsigned int attackerWeaponNum, unsigned int attackerWeaponDefID, float* targetPriority) { assert(targetPriority != NULL); bool ret = true; if (!watchWeaponDefs[attackerWeaponDefID]) return ret; LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 2 + 5 + 2, __FUNCTION__); const LuaUtils::ScopedDebugTraceBack traceBack(L); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return ret; lua_pushnumber(L, attackerID); lua_pushnumber(L, targetID); lua_pushnumber(L, attackerWeaponNum); lua_pushnumber(L, attackerWeaponDefID); lua_pushnumber(L, *targetPriority); if (!RunCallInTraceback(L, cmdStr, 5, 2, traceBack.GetErrFuncIdx(), false)) return ret; ret = luaL_optboolean(L, -2, false); if (lua_isnumber(L, -1)) { *targetPriority = lua_tonumber(L, -1); } lua_pop(L, 2); return ret; }
bool CSyncedLuaHandle::AllowCommand(const CUnit* unit, const Command& cmd, bool fromSynced) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 10, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined PushUnitAndCommand(L, unit, cmd); lua_pushboolean(L, fromSynced); // call the function if (!RunCallIn(L, cmdStr, 8, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::AllowResourceLevel(int teamID, const string& type, float level) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 5, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined lua_pushnumber(L, teamID); lua_pushsstring(L, type); lua_pushnumber(L, level); // call the function if (!RunCallIn(L, cmdStr, 3, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::AllowDirectUnitControl(int playerID, const CUnit* unit) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 6, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined lua_pushnumber(L, unit->id); lua_pushnumber(L, unit->unitDef->id); lua_pushnumber(L, unit->team); lua_pushnumber(L, playerID); // call the function if (!RunCallIn(L, cmdStr, 4, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::AllowUnitTransfer(const CUnit* unit, int newTeam, bool capture) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 7, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined lua_pushnumber(L, unit->id); lua_pushnumber(L, unit->unitDef->id); lua_pushnumber(L, unit->team); lua_pushnumber(L, newTeam); lua_pushboolean(L, capture); // call the function if (!RunCallIn(L, cmdStr, 5, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::AllowResourceTransfer(int oldTeam, int newTeam, const string& type, float amount) { LUA_CALL_IN_CHECK(L, true); luaL_checkstack(L, 6, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return true; // the call is not defined lua_pushnumber(L, oldTeam); lua_pushnumber(L, newTeam); lua_pushsstring(L, type); lua_pushnumber(L, amount); // call the function if (!RunCallIn(L, cmdStr, 4, 1)) return true; // get the results const bool retval = luaL_optboolean(L, -1, true); lua_pop(L, 1); return retval; }
bool CSyncedLuaHandle::MoveCtrlNotify(const CUnit* unit, int data) { LUA_CALL_IN_CHECK(L, false); luaL_checkstack(L, 6, __FUNCTION__); static const LuaHashString cmdStr(__FUNCTION__); if (!cmdStr.GetGlobalFunc(L)) return false; // the call is not defined // push the unit info lua_pushnumber(L, unit->id); lua_pushnumber(L, unit->unitDef->id); lua_pushnumber(L, unit->team); lua_pushnumber(L, data); // call the function if (!RunCallIn(L, cmdStr, 4, 1)) return false; // get the results const bool retval = luaL_optboolean(L, -1, false); lua_pop(L, 1); return retval; }
static int luasrc_ConVar (lua_State *L) { ConVar *pConVar = new ConVar(luaL_checkstring(L, 1), luaL_checkstring(L, 2), luaL_optint(L, 3, 0), luaL_optstring(L, 4, 0), luaL_optboolean(L, 5, 0), luaL_optnumber(L, 6, 0.0), luaL_optboolean(L, 7, 0), luaL_optnumber(L, 8, 0)); cvar->RegisterConCommand(pConVar); lua_pushconvar(L, pConVar); return 1; }
static int CBaseEntity_BodyTarget (lua_State *L) { lua_pushvector(L, luaL_checkentity(L, 1)->BodyTarget(luaL_checkvector(L, 2), luaL_optboolean(L, 3, true))); return 1; }
static int CBaseEntity_SUB_StartFadeOut (lua_State *L) { luaL_checkentity(L, 1)->SUB_StartFadeOut(luaL_optnumber(L, 2, 10.0f), luaL_optboolean(L, 3, true)); return 0; }
static int IMaterial_NeedsPowerOfTwoFrameBufferTexture (lua_State *L) { lua_pushboolean(L, luaL_checkmaterial(L, 1)->NeedsPowerOfTwoFrameBufferTexture(luaL_optboolean(L, 1, 1))); return 1; }
static int luasrc_UTIL_Tracer (lua_State *L) { UTIL_Tracer(luaL_checkvector(L, 1), luaL_checkvector(L, 2), luaL_optint(L, 3, 0), luaL_optint(L, 4, -1), luaL_optnumber(L, 5, 0), luaL_optboolean(L, 6, 0), luaL_optstring(L, 7, 0), luaL_optint(L, 8, 0)); return 0; }
static int luasrc_UTIL_ParticleTracer (lua_State *L) { UTIL_ParticleTracer(luaL_checkstring(L, 1), luaL_checkvector(L, 2), luaL_checkvector(L, 3), luaL_optint(L, 4, 0), luaL_optint(L, 5, 0), luaL_optboolean(L, 6, 0)); return 0; }