mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
Optimize table usage in methods
This commit is contained in:
@@ -779,26 +779,21 @@ namespace LuaCreature
|
|||||||
*/
|
*/
|
||||||
int GetAITargets(lua_State* L, Creature* creature)
|
int GetAITargets(lua_State* L, Creature* creature)
|
||||||
{
|
{
|
||||||
lua_newtable(L);
|
|
||||||
int tbl = lua_gettop(L);
|
|
||||||
uint32 i = 0;
|
|
||||||
|
|
||||||
#ifdef MANGOS
|
#ifdef MANGOS
|
||||||
ThreatList const& threatlist = creature->GetThreatManager().getThreatList();
|
ThreatList const& threatlist = creature->GetThreatManager().getThreatList();
|
||||||
#else
|
#else
|
||||||
ThreatList const& threatlist = creature->getThreatManager().getThreatList();
|
ThreatList const& threatlist = creature->getThreatManager().getThreatList();
|
||||||
#endif
|
#endif
|
||||||
if (threatlist.empty())
|
lua_createtable(L, threatlist.size(), 0);
|
||||||
return 1;
|
int tbl = lua_gettop(L);
|
||||||
|
uint32 i = 0;
|
||||||
for (ThreatList::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
|
for (ThreatList::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
|
||||||
{
|
{
|
||||||
Unit* target = (*itr)->getTarget();
|
Unit* target = (*itr)->getTarget();
|
||||||
if (!target)
|
if (!target)
|
||||||
continue;
|
continue;
|
||||||
++i;
|
|
||||||
Eluna::Push(L, i);
|
|
||||||
Eluna::Push(L, target);
|
Eluna::Push(L, target);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
lua_settop(L, tbl);
|
||||||
|
|||||||
@@ -329,7 +329,7 @@ namespace LuaQuery
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settable(L, tbl);
|
lua_rawset(L, tbl);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
lua_settop(L, tbl);
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public:
|
|||||||
lua_pushstring(E->L, methodTable->name);
|
lua_pushstring(E->L, methodTable->name);
|
||||||
lua_pushlightuserdata(E->L, (void*)methodTable);
|
lua_pushlightuserdata(E->L, (void*)methodTable);
|
||||||
lua_pushcclosure(E->L, thunk, 1);
|
lua_pushcclosure(E->L, thunk, 1);
|
||||||
lua_settable(E->L, -3);
|
lua_rawset(E->L, -3);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_remove(E->L, -1);
|
lua_remove(E->L, -1);
|
||||||
@@ -239,7 +239,7 @@ public:
|
|||||||
lua_pushstring(E->L, methodTable->name);
|
lua_pushstring(E->L, methodTable->name);
|
||||||
lua_pushlightuserdata(E->L, (void*)methodTable);
|
lua_pushlightuserdata(E->L, (void*)methodTable);
|
||||||
lua_pushcclosure(E->L, CallMethod, 1);
|
lua_pushcclosure(E->L, CallMethod, 1);
|
||||||
lua_settable(E->L, -3);
|
lua_rawset(E->L, -3);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_pop(E->L, 1);
|
lua_pop(E->L, 1);
|
||||||
|
|||||||
@@ -179,10 +179,8 @@ namespace LuaGlobalFunctions
|
|||||||
if ((team == TEAM_NEUTRAL || player->GetTeamId() == team) && (!onlyGM || player->IsGameMaster()))
|
if ((team == TEAM_NEUTRAL || player->GetTeamId() == team) && (!onlyGM || player->IsGameMaster()))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
++i;
|
|
||||||
Eluna::Push(L, i);
|
|
||||||
Eluna::Push(L, player);
|
Eluna::Push(L, player);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -214,13 +212,13 @@ namespace LuaGlobalFunctions
|
|||||||
uint32 team = Eluna::CHECKVAL<uint32>(L, 3, TEAM_NEUTRAL);
|
uint32 team = Eluna::CHECKVAL<uint32>(L, 3, TEAM_NEUTRAL);
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
|
int tbl = lua_gettop(L);
|
||||||
|
uint32 i = 0;
|
||||||
|
|
||||||
Map* map = eMapMgr->FindMap(mapID, instanceID);
|
Map* map = eMapMgr->FindMap(mapID, instanceID);
|
||||||
if (!map)
|
if (!map)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
int tbl = lua_gettop(L);
|
|
||||||
uint32 i = 0;
|
|
||||||
|
|
||||||
Map::PlayerList const& players = map->GetPlayers();
|
Map::PlayerList const& players = map->GetPlayers();
|
||||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||||
{
|
{
|
||||||
@@ -233,10 +231,8 @@ namespace LuaGlobalFunctions
|
|||||||
continue;
|
continue;
|
||||||
if (player->GetSession() && (team >= TEAM_NEUTRAL || player->GetTeamId() == team))
|
if (player->GetSession() && (team >= TEAM_NEUTRAL || player->GetTeamId() == team))
|
||||||
{
|
{
|
||||||
++i;
|
|
||||||
Eluna::Push(L, i);
|
|
||||||
Eluna::Push(L, player);
|
Eluna::Push(L, player);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -184,10 +184,8 @@ namespace LuaGroup
|
|||||||
if (!member || !member->GetSession())
|
if (!member || !member->GetSession())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
++i;
|
|
||||||
Eluna::Push(L, i);
|
|
||||||
Eluna::Push(L, member);
|
Eluna::Push(L, member);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl); // push table to top of stack
|
lua_settop(L, tbl); // push table to top of stack
|
||||||
|
|||||||
@@ -42,10 +42,8 @@ namespace LuaGuild
|
|||||||
{
|
{
|
||||||
if (player->IsInWorld() && player->GetGuildId() == guild->GetId())
|
if (player->IsInWorld() && player->GetGuildId() == guild->GetId())
|
||||||
{
|
{
|
||||||
++i;
|
|
||||||
Eluna::Push(L, i);
|
|
||||||
Eluna::Push(L, player);
|
Eluna::Push(L, player);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1201,15 +1201,14 @@ namespace LuaUnit
|
|||||||
ElunaUtil::ObjectGUIDCheck guidCheck(unit->GET_GUID());
|
ElunaUtil::ObjectGUIDCheck guidCheck(unit->GET_GUID());
|
||||||
list.remove_if(guidCheck);
|
list.remove_if(guidCheck);
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_createtable(L, list.size(), 0);
|
||||||
int tbl = lua_gettop(L);
|
int tbl = lua_gettop(L);
|
||||||
uint32 i = 0;
|
uint32 i = 0;
|
||||||
|
|
||||||
for (std::list<Unit*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
for (std::list<Unit*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||||
{
|
{
|
||||||
Eluna::Push(L, ++i);
|
|
||||||
Eluna::Push(L, *it);
|
Eluna::Push(L, *it);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
lua_settop(L, tbl);
|
||||||
@@ -1239,15 +1238,14 @@ namespace LuaUnit
|
|||||||
ElunaUtil::ObjectGUIDCheck guidCheck(unit->GET_GUID());
|
ElunaUtil::ObjectGUIDCheck guidCheck(unit->GET_GUID());
|
||||||
list.remove_if(guidCheck);
|
list.remove_if(guidCheck);
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_createtable(L, list.size(), 0);
|
||||||
int tbl = lua_gettop(L);
|
int tbl = lua_gettop(L);
|
||||||
uint32 i = 0;
|
uint32 i = 0;
|
||||||
|
|
||||||
for (std::list<Unit*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
for (std::list<Unit*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||||
{
|
{
|
||||||
Eluna::Push(L, ++i);
|
|
||||||
Eluna::Push(L, *it);
|
Eluna::Push(L, *it);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
lua_settop(L, tbl);
|
||||||
|
|||||||
@@ -280,15 +280,14 @@ namespace LuaWorldObject
|
|||||||
obj->VisitNearbyObject(range, searcher);
|
obj->VisitNearbyObject(range, searcher);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_createtable(L, list.size(), 0);
|
||||||
int tbl = lua_gettop(L);
|
int tbl = lua_gettop(L);
|
||||||
uint32 i = 0;
|
uint32 i = 0;
|
||||||
|
|
||||||
for (std::list<Player*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
for (std::list<Player*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||||
{
|
{
|
||||||
Eluna::Push(L, ++i);
|
|
||||||
Eluna::Push(L, *it);
|
Eluna::Push(L, *it);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
lua_settop(L, tbl);
|
||||||
@@ -322,15 +321,14 @@ namespace LuaWorldObject
|
|||||||
obj->VisitNearbyObject(range, searcher);
|
obj->VisitNearbyObject(range, searcher);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_createtable(L, list.size(), 0);
|
||||||
int tbl = lua_gettop(L);
|
int tbl = lua_gettop(L);
|
||||||
uint32 i = 0;
|
uint32 i = 0;
|
||||||
|
|
||||||
for (std::list<Creature*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
for (std::list<Creature*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||||
{
|
{
|
||||||
Eluna::Push(L, ++i);
|
|
||||||
Eluna::Push(L, *it);
|
Eluna::Push(L, *it);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
lua_settop(L, tbl);
|
||||||
@@ -362,15 +360,14 @@ namespace LuaWorldObject
|
|||||||
obj->VisitNearbyObject(range, searcher);
|
obj->VisitNearbyObject(range, searcher);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_createtable(L, list.size(), 0);
|
||||||
int tbl = lua_gettop(L);
|
int tbl = lua_gettop(L);
|
||||||
uint32 i = 0;
|
uint32 i = 0;
|
||||||
|
|
||||||
for (std::list<GameObject*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
for (std::list<GameObject*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||||
{
|
{
|
||||||
Eluna::Push(L, ++i);
|
|
||||||
Eluna::Push(L, *it);
|
Eluna::Push(L, *it);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
lua_settop(L, tbl);
|
||||||
@@ -447,15 +444,14 @@ namespace LuaWorldObject
|
|||||||
obj->VisitNearbyObject(range, searcher);
|
obj->VisitNearbyObject(range, searcher);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_createtable(L, list.size(), 0);
|
||||||
int tbl = lua_gettop(L);
|
int tbl = lua_gettop(L);
|
||||||
uint32 i = 0;
|
uint32 i = 0;
|
||||||
|
|
||||||
for (std::list<WorldObject*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
for (std::list<WorldObject*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||||
{
|
{
|
||||||
Eluna::Push(L, ++i);
|
|
||||||
Eluna::Push(L, *it);
|
Eluna::Push(L, *it);
|
||||||
lua_settable(L, tbl);
|
lua_rawseti(L, tbl, ++i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
lua_settop(L, tbl);
|
||||||
|
|||||||
Reference in New Issue
Block a user