From 737165a1520636bc4658a9d976ff24857d25bbc6 Mon Sep 17 00:00:00 2001 From: tovjemam Date: Sat, 21 Mar 2026 17:22:57 +0100 Subject: [PATCH] Make WorldView actually use mapname received from server instead of ignoring it --- src/gameview/worldview.cpp | 18 ++++++++++-------- src/gameview/worldview.hpp | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/gameview/worldview.cpp b/src/gameview/worldview.cpp index d22de02..cbafdca 100644 --- a/src/gameview/worldview.cpp +++ b/src/gameview/worldview.cpp @@ -9,12 +9,14 @@ #include "draw_args.hpp" game::view::WorldView::WorldView(ClientSession& session, net::InMessage& msg) : - session_(session), audiomaster_(session_.GetAudioMaster()), map_("openworld") + session_(session), audiomaster_(session_.GetAudioMaster()) { net::MapName mapname; if (!msg.Read(mapname)) throw EntityInitError(); + map_ = std::make_unique(std::string(mapname)); + // init destroyed objs net::ObjCount objcount; if (!msg.Read(objcount)) @@ -26,7 +28,7 @@ game::view::WorldView::WorldView(ClientSession& session, net::InMessage& msg) : if (!msg.Read(objnum)) throw EntityInitError(); - map_.EnableObj(objnum, false); + map_->EnableObj(objnum, false); } // cache common snds and stuff @@ -69,8 +71,8 @@ void game::view::WorldView::Update(const UpdateInfo& info) { time_ = info.time; - if (!map_.IsLoaded()) - map_.LoadNext(); + if (!map_->IsLoaded()) + map_->LoadNext(); for (const auto& [entnum, ent] : ents_) { @@ -80,7 +82,7 @@ void game::view::WorldView::Update(const UpdateInfo& info) void game::view::WorldView::Draw(const DrawArgs& args) const { - if (!map_.IsLoaded()) + if (!map_->IsLoaded()) { DrawLoadingScreen(args); return; @@ -88,7 +90,7 @@ void game::view::WorldView::Draw(const DrawArgs& args) const args.env.clear_color = glm::vec3(0.5f, 0.7f, 1.0f); - map_.Draw(args); + map_->Draw(args); for (const auto& [entnum, ent] : ents_) { @@ -137,7 +139,7 @@ void game::view::WorldView::DrawLoadingScreen(const DrawArgs& args) const glm::vec2 size(400.0f, 15.0f); glm::vec2 pos(margin, args.screen_size.y - margin - size.y); - int loaded_percent = map_.GetLoadingPercent(); + int loaded_percent = map_->GetLoadingPercent(); float loaded = static_cast(loaded_percent) * 0.01f; args.gui.DrawRect(pos, pos + size, 0x77FFFFFF); @@ -267,7 +269,7 @@ bool game::view::WorldView::ProcessObjDestroyOrRespawnMsg(net::InMessage& msg, b if (!msg.Read(objnum)) return false; - map_.EnableObj(objnum, enable); + map_->EnableObj(objnum, enable); return true; } diff --git a/src/gameview/worldview.hpp b/src/gameview/worldview.hpp index 52382e4..e1f0a7b 100644 --- a/src/gameview/worldview.hpp +++ b/src/gameview/worldview.hpp @@ -48,7 +48,7 @@ private: private: ClientSession& session_; - MapInstanceView map_; + std::unique_ptr map_; std::map> ents_; float time_ = 0.0f;