Index: src/game/Map.cpp =================================================================== --- src/game/Map.cpp (revision 5483) +++ src/game/Map.cpp (working copy) @@ -625,6 +625,8 @@ player->AddToWorld(); + player->SendUpdateWorldState(state_field, state_value); + SendInitSelf(player); SendInitTransports(player); @@ -740,6 +742,14 @@ i_data->Update(t_diff); } +void Map::UpdateWorldState(uint32 field, uint32 value) +{ + state_field = field; + state_value = value; + for(PlayerList::const_iterator itr = i_Players.begin(); itr != i_Players.end(); ++itr) + (*itr)->SendUpdateWorldState(field, value); +} + void Map::Remove(Player *player, bool remove) { if (Instanceable()) @@ -1453,6 +1463,15 @@ transData.BuildPacket(&packet); player->GetSession()->SendPacket(&packet); } +inline void Map::setNGrid(NGridType *grid, uint32 x, uint32 y) +{ + if(x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS) + { + sLog.outError("map::setNGrid() Invalid grid coordinates found: %d, %d!",x,y); + assert(false); + } + i_grids[x][y] = grid; +} uint32 Map::GetPlayersCountExceptGMs() const { Index: src/game/Map.h =================================================================== --- src/game/Map.h (revision 5483) +++ src/game/Map.h (working copy) @@ -114,7 +114,7 @@ #define MAX_HEIGHT 100000.0f // can be use for find ground height at surface #define INVALID_HEIGHT -100000.0f // for check, must be equal to VMAP_INVALID_HEIGHT, real value for unknown height is VMAP_INVALID_HEIGHT_VALUE -class MANGOS_DLL_DECL Map : public GridRefManager, public MaNGOS::ObjectLevelLockable +class MANGOS_DLL_SPEC Map : public GridRefManager, public MaNGOS::ObjectLevelLockable { public: typedef std::list PlayerList; @@ -131,6 +131,10 @@ virtual void Update(const uint32&); + void UpdateWorldState(uint32 field, uint32 value); + + std::list GetPlayers() { return i_Players;}; + void MessageBroadcast(Player *, WorldPacket *, bool to_self, bool own_team_only = false); void MessageBroadcast(WorldObject *, WorldPacket *); @@ -266,15 +270,7 @@ bool isGridObjectDataLoaded(uint32 x, uint32 y) const { return getNGrid(x,y)->isGridObjectDataLoaded(); } void setGridObjectDataLoaded(bool pLoaded, uint32 x, uint32 y) { getNGrid(x,y)->setGridObjectDataLoaded(pLoaded); } - inline void setNGrid(NGridType* grid, uint32 x, uint32 y) - { - if(x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS) - { - sLog.outError("map::setNGrid() Invalid grid coordinates found: %d, %d!",x,y); - assert(false); - } - i_grids[x][y] = grid; - } + inline void setNGrid(NGridType* grid, uint32 x, uint32 y); protected: typedef MaNGOS::ObjectLevelLockable::Lock Guard; @@ -289,6 +285,9 @@ time_t i_gridExpiry; + uint32 state_field; + uint32 state_value; + MapEntry const* i_mapEntry; time_t i_resetTime; uint32 i_resetDelayTime;