From 61b2b0c920428a74002a29d0c1be67f5afec71f3 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Tue, 1 Nov 2016 18:06:51 +0100 Subject: [PATCH] Dependencies in basemaps --- deps/fmt | 2 +- deps/mongoose | 2 +- src/Components/Modules/Maps.cpp | 36 +++++++++++++++++++++++++++++++-- src/Components/Modules/Maps.hpp | 1 + 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/deps/fmt b/deps/fmt index 8c63ea43..8f455c10 160000 --- a/deps/fmt +++ b/deps/fmt @@ -1 +1 @@ -Subproject commit 8c63ea432c7985eb056f1457d7edc8574d4fa2f8 +Subproject commit 8f455c10b0f1aee898f71313b21c43b098dadb34 diff --git a/deps/mongoose b/deps/mongoose index b39e30fb..78454da3 160000 --- a/deps/mongoose +++ b/deps/mongoose @@ -1 +1 @@ -Subproject commit b39e30fb0cbed1b91a205903fc6f8956a9e58c32 +Subproject commit 78454da3b311892e7426794760525cbb2f729c0b diff --git a/src/Components/Modules/Maps.cpp b/src/Components/Modules/Maps.cpp index bf6b28cf..c8d806a2 100644 --- a/src/Components/Modules/Maps.cpp +++ b/src/Components/Modules/Maps.cpp @@ -31,6 +31,7 @@ namespace Components Utils::Memory::Allocator allocator; auto teams = Maps::GetTeamsForMap(Maps::CurrentMainZone); + auto dependencies = Maps::GetDependenciesForMap(Maps::CurrentMainZone); std::vector data; Utils::Merge(&data, zoneInfo, zoneCount); @@ -45,6 +46,17 @@ namespace Components team.name = allocator.DuplicateString(fmt::sprintf("iw4x_team_%s", teams.second.data())); data.push_back(team); + for (auto& depdendency : dependencies) + { + Game::XZoneInfo info; + + info.name = depdendency.data(); + info.allocFlags = zoneInfo->allocFlags; + info.freeFlags = zoneInfo->freeFlags; + + data.push_back(info); + } + for (unsigned int i = 0; i < Maps::CurrentDependencies.size(); ++i) { Game::XZoneInfo info; @@ -205,6 +217,26 @@ namespace Components return (Utils::String::StartsWith(entity, "dyn_") || Utils::String::StartsWith(entity, "node_") || Utils::String::StartsWith(entity, "actor_")); } + std::vector Maps::GetDependenciesForMap(std::string map) + { + for (int i = 0; i < *Game::arenaCount; ++i) + { + Game::newMapArena_t* arena = &ArenaLength::NewArenas[i]; + if (arena->mapName == map) + { + for (int j = 0; j < ARRAY_SIZE(arena->keys); ++j) + { + if (arena->keys[j] == "dependency"s) + { + return Utils::String::Explode(arena->values[j], ' '); + } + } + } + } + + return {}; + } + std::pair Maps::GetTeamsForMap(std::string map) { std::string team_axis = "opforce_composite"; @@ -525,8 +557,8 @@ namespace Components //Maps::AddDependency("oilrig", "mp_subbase"); //Maps::AddDependency("gulag", "mp_subbase"); //Maps::AddDependency("invasion", "mp_rust"); - Maps::AddDependency("co_hunted", "mp_storm"); - Maps::AddDependency("mp_shipment", "mp_shipment_long"); + //Maps::AddDependency("co_hunted", "mp_storm"); + //Maps::AddDependency("mp_shipment", "mp_shipment_long"); #if defined(DEBUG) && defined(ENABLE_DXSDK) Command::Add("dumpmap", [] (Command::Params) diff --git a/src/Components/Modules/Maps.hpp b/src/Components/Modules/Maps.hpp index fa52e1dd..637f1e42 100644 --- a/src/Components/Modules/Maps.hpp +++ b/src/Components/Modules/Maps.hpp @@ -14,6 +14,7 @@ namespace Components static void AddDependency(std::string expression, std::string zone); static std::pair GetTeamsForMap(std::string map); + static std::vector GetDependenciesForMap(std::string map); static std::string CurrentMainZone;