getCreatures / getSpawns

This commit is contained in:
Ahmed Samy 2014-01-14 01:45:57 +02:00
parent cbfeef39bc
commit 93be0f975f
4 changed files with 22 additions and 1 deletions

View File

@ -144,6 +144,14 @@ void Spawn::removeCreature(const Position& pos)
} }
} }
std::vector<CreatureTypePtr> Spawn::getCreatures()
{
std::vector<CreatureTypePtr> creatures;
for (auto p : m_creatures)
creatures.push_back(p.second);
return creatures;
}
CreaturePtr CreatureType::cast() CreaturePtr CreatureType::cast()
{ {
CreaturePtr ret(new Creature); CreaturePtr ret(new Creature);
@ -399,5 +407,12 @@ SpawnPtr CreatureManager::addSpawn(const Position& centerPos, int radius)
return ret; return ret;
} }
/* vim: set ts=4 sw=4 et: */ std::vector<SpawnPtr> CreatureManager::getSpawns()
{
std::vector<SpawnPtr> spawns;
for (auto p : m_spawns)
spawns.push_back(p.second);
return spawns;
}
/* vim: set ts=4 sw=4 et: */

View File

@ -61,6 +61,7 @@ public:
void setCenterPos(const Position& pos) { m_attribs.set(SpawnAttrCenter, pos); } void setCenterPos(const Position& pos) { m_attribs.set(SpawnAttrCenter, pos); }
Position getCenterPos() { return m_attribs.get<Position>(SpawnAttrCenter); } Position getCenterPos() { return m_attribs.get<Position>(SpawnAttrCenter); }
std::vector<CreatureTypePtr> getCreatures();
void addCreature(const Position& placePos, const CreatureTypePtr& cType); void addCreature(const Position& placePos, const CreatureTypePtr& cType);
void removeCreature(const Position& pos); void removeCreature(const Position& pos);
void clear() { m_creatures.clear(); } void clear() { m_creatures.clear(); }
@ -120,6 +121,7 @@ public:
const CreatureTypePtr& getCreatureByName(std::string name); const CreatureTypePtr& getCreatureByName(std::string name);
const CreatureTypePtr& getCreatureByLook(int look); const CreatureTypePtr& getCreatureByLook(int look);
std::vector<SpawnPtr> getSpawns();
SpawnPtr getSpawn(const Position& centerPos); SpawnPtr getSpawn(const Position& centerPos);
SpawnPtr getSpawnForPlacePos(const Position& pos); SpawnPtr getSpawnForPlacePos(const Position& pos);
SpawnPtr addSpawn(const Position& centerPos, int radius); SpawnPtr addSpawn(const Position& centerPos, int radius);

View File

@ -82,6 +82,8 @@ typedef std::list<TownPtr> TownList;
typedef std::list<ItemPtr> ItemList; typedef std::list<ItemPtr> ItemList;
typedef std::vector<ItemPtr> ItemVector; typedef std::vector<ItemPtr> ItemVector;
typedef std::unordered_map<Position, TilePtr, PositionHasher> TileMap; typedef std::unordered_map<Position, TilePtr, PositionHasher> TileMap;
typedef std::unordered_map<Position, CreatureTypePtr, PositionHasher> CreatureMap;
typedef std::unordered_map<Position, SpawnPtr, PositionHasher> SpawnMap;
// net // net
class ProtocolLogin; class ProtocolLogin;

View File

@ -172,6 +172,7 @@ void Client::registerLuaFunctions()
g_lua.bindSingletonFunction("g_creatures", "isSpawnLoaded", &CreatureManager::isSpawnLoaded, &g_creatures); g_lua.bindSingletonFunction("g_creatures", "isSpawnLoaded", &CreatureManager::isSpawnLoaded, &g_creatures);
g_lua.bindSingletonFunction("g_creatures", "clear", &CreatureManager::clear, &g_creatures); g_lua.bindSingletonFunction("g_creatures", "clear", &CreatureManager::clear, &g_creatures);
g_lua.bindSingletonFunction("g_creatures", "clearSpawns", &CreatureManager::clearSpawns, &g_creatures); g_lua.bindSingletonFunction("g_creatures", "clearSpawns", &CreatureManager::clearSpawns, &g_creatures);
g_lua.bindSingletonFunction("g_creatures", "getSpawns", &CreatureManager::getSpawns, &g_creatures);
g_lua.registerSingletonClass("g_game"); g_lua.registerSingletonClass("g_game");
g_lua.bindSingletonFunction("g_game", "loginWorld", &Game::loginWorld, &g_game); g_lua.bindSingletonFunction("g_game", "loginWorld", &Game::loginWorld, &g_game);
@ -398,6 +399,7 @@ void Client::registerLuaFunctions()
g_lua.bindClassMemberFunction<Spawn>("getCenterPos", &Spawn::getCenterPos); g_lua.bindClassMemberFunction<Spawn>("getCenterPos", &Spawn::getCenterPos);
g_lua.bindClassMemberFunction<Spawn>("addCreature", &Spawn::addCreature); g_lua.bindClassMemberFunction<Spawn>("addCreature", &Spawn::addCreature);
g_lua.bindClassMemberFunction<Spawn>("removeCreature", &Spawn::removeCreature); g_lua.bindClassMemberFunction<Spawn>("removeCreature", &Spawn::removeCreature);
g_lua.bindClassMemberFunction<Spawn>("getCreatures", &Spawn::getCreatures);
g_lua.registerClass<Town>(); g_lua.registerClass<Town>();
g_lua.bindClassStaticFunction<Town>("create", []{ return TownPtr(new Town); }); g_lua.bindClassStaticFunction<Town>("create", []{ return TownPtr(new Town); });