diff --git a/client/scenes/in_world.cpp b/client/scenes/in_world.cpp index e1cce1c..1a32178 100644 --- a/client/scenes/in_world.cpp +++ b/client/scenes/in_world.cpp @@ -212,6 +212,12 @@ void InWorld::HandlePacket(SerialPacket* const argPacket) { HandleDisconnectForced(static_cast(argPacket)); break; + //map management + case SerialPacketType::REGION_CONTENT: + HandleRegionContent(static_cast(argPacket)); + break; + + //errors default: { std::ostringstream msg; msg << "Unknown SerialPacketType encountered in InWorld: " << static_cast(argPacket->type); @@ -287,3 +293,17 @@ void InWorld::HandleDisconnectForced(ClientPacket* const argPacket) { SetNextScene(SceneList::DISCONNECTEDSCREEN); ConfigUtility::GetSingleton()["client.disconnectMessage"] = "You have been forcibly disconnected by the server"; } + +//------------------------- +//map management +//------------------------- + +void InWorld::HandleRegionContent(RegionPacket* const argPacket) { + //replace existing regions + regionPager.UnloadRegion(argPacket->x, argPacket->y); + regionPager.PushRegion(argPacket->region); + + //clean up after the serial code + delete argPacket->region; + argPacket->region = nullptr; +} \ No newline at end of file diff --git a/client/scenes/in_world.hpp b/client/scenes/in_world.hpp index dfced78..539d2dc 100644 --- a/client/scenes/in_world.hpp +++ b/client/scenes/in_world.hpp @@ -86,6 +86,9 @@ protected: void HandleDisconnectResponse(ClientPacket* const); void HandleDisconnectForced(ClientPacket* const); + //map management + void HandleRegionContent(RegionPacket* const); + //indexes int& clientIndex; int& accountIndex;