diff --git a/client/barrier_manager.cpp b/client/barrier_manager.cpp index b0d4303..f9a985d 100644 --- a/client/barrier_manager.cpp +++ b/client/barrier_manager.cpp @@ -21,7 +21,6 @@ */ #include "barrier_manager.hpp" -#include void BarrierManager::DrawTo(SDL_Renderer* const dest, Sint16 x, Sint16 y, double scaleX, double scaleY) { for (auto& it : barrierMap) { it.second.DrawTo(dest, x, y); @@ -38,7 +37,6 @@ void BarrierManager::UnloadBaseImage() { void BarrierManager::LoadTemplateImages(SDL_Renderer* renderer, std::list names) { for (auto& it : names) { - //TODO: check the state of the local flag templateImages.emplace(it, Image(renderer, it)); } } @@ -49,8 +47,6 @@ void BarrierManager::UnloadTemplateImages() { BaseBarrier* BarrierManager::Create(int index) { barrierMap.emplace( index, BaseBarrier(baseImage, templateImages) ); - - //DEBUG: debugging return &barrierMap[index]; } diff --git a/server/rooms/room_data.cpp b/server/rooms/room_data.cpp index 029db73..4165554 100644 --- a/server/rooms/room_data.cpp +++ b/server/rooms/room_data.cpp @@ -130,6 +130,10 @@ int RoomData::GetRoomIndex() { return roomIndex; } +BarrierManager* RoomData::GetBarrierMgr() { + return &barrierMgr; +} + std::list* RoomData::GetCharacterList() { return &characterList; } diff --git a/server/rooms/room_data.hpp b/server/rooms/room_data.hpp index eb8e1bc..cd7cb23 100644 --- a/server/rooms/room_data.hpp +++ b/server/rooms/room_data.hpp @@ -53,6 +53,7 @@ public: int SetRoomIndex(int i); int GetRoomIndex(); + BarrierManager* GetBarrierMgr(); std::list* GetCharacterList(); CreatureManager* GetCreatureMgr(); RegionPagerLua* GetPager(); diff --git a/server/server_application.cpp b/server/server_application.cpp index a6c61c2..46be538 100644 --- a/server/server_application.cpp +++ b/server/server_application.cpp @@ -302,11 +302,17 @@ void ServerApplication::HandlePacket(SerialPacket* const argPacket) { hCharacterMovement(static_cast(argPacket)); break; + //TODO: (1) merge character, creature & barrier queries & updates together? //creature management case SerialPacketType::QUERY_CREATURE_EXISTS: hQueryCreatureExists(static_cast(argPacket)); break; + //barrier management + case SerialPacketType::QUERY_BARRIER_EXISTS: + hQueryBarrierExists(static_cast(argPacket)); + break; + //chat case SerialPacketType::TEXT_BROADCAST: hTextBroadcast(static_cast(argPacket)); @@ -820,6 +826,27 @@ void ServerApplication::hQueryCreatureExists(CreaturePacket* const argPacket) { } } +//------------------------- +//barrier management +//------------------------- + +//TODO: On barrier create, etc. + +void ServerApplication::hQueryBarrierExists(BarrierPacket* const argPacket) { + //respond with all barrier data + BarrierPacket newPacket; + + BarrierManager* barrierMgr = roomMgr.Find(argPacket->roomIndex)->GetBarrierMgr(); + + //TODO: (0) move this into the room class + for (auto& it : *(barrierMgr->GetContainer()) ) { + copyBarrierToPacket(&newPacket, &(it.second), it.first); + newPacket.type = SerialPacketType::QUERY_BARRIER_EXISTS; + newPacket.roomIndex = argPacket->roomIndex; + network.SendTo(argPacket->srcAddress, static_cast(&newPacket)); + } +} + //------------------------- //chat //------------------------- diff --git a/server/server_application.hpp b/server/server_application.hpp index 5dd4368..dd2a55e 100644 --- a/server/server_application.hpp +++ b/server/server_application.hpp @@ -100,6 +100,9 @@ private: //creature management void hQueryCreatureExists(CreaturePacket* const); + //barrier management + void hQueryBarrierExists(BarrierPacket* const); + //chat void hTextBroadcast(TextPacket* const); void hTextSpeech(TextPacket* const);