From 8579d7e0d68260beb7b03b32fa9fccfe20d9c91a Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sun, 30 Nov 2014 23:29:46 +1100 Subject: [PATCH] Implemented client-side HandleRegionContent() --- client/scenes/in_world.cpp | 20 ++++++++++++++++++++ client/scenes/in_world.hpp | 3 +++ 2 files changed, 23 insertions(+) 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;