From 2303d3354fc9ce8e4fe2159573cf10ce57505aef Mon Sep 17 00:00:00 2001 From: codereader Date: Sat, 22 May 2021 17:54:43 +0200 Subject: [PATCH] #5622: Add empty MergeMap command registration, no algorithm yet. --- install/menu.xml | 7 ++++--- radiantcore/map/Map.cpp | 24 ++++++++++++++++++++++++ radiantcore/map/Map.h | 2 ++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/install/menu.xml b/install/menu.xml index 9b9f7c4b09..5f5582b74b 100644 --- a/install/menu.xml +++ b/install/menu.xml @@ -6,16 +6,17 @@ + - - + + - + diff --git a/radiantcore/map/Map.cpp b/radiantcore/map/Map.cpp index ad74d0b8e1..9ecac315c7 100644 --- a/radiantcore/map/Map.cpp +++ b/radiantcore/map/Map.cpp @@ -711,6 +711,7 @@ void Map::registerCommands() GlobalCommandSystem().addCommand("OpenMap", Map::openMap, { cmd::ARGTYPE_STRING | cmd::ARGTYPE_OPTIONAL }); GlobalCommandSystem().addCommand("OpenMapFromArchive", Map::openMapFromArchive, { cmd::ARGTYPE_STRING, cmd::ARGTYPE_STRING }); GlobalCommandSystem().addCommand("ImportMap", Map::importMap); + GlobalCommandSystem().addCommand("MergeMap", std::bind(&Map::mergeMap, this, std::placeholders::_1), { cmd::ARGTYPE_STRING | cmd::ARGTYPE_OPTIONAL }); GlobalCommandSystem().addCommand(LOAD_PREFAB_AT_CMD, std::bind(&Map::loadPrefabAt, this, std::placeholders::_1), { cmd::ARGTYPE_STRING, cmd::ARGTYPE_VECTOR3, cmd::ARGTYPE_INT|cmd::ARGTYPE_OPTIONAL, cmd::ARGTYPE_INT | cmd::ARGTYPE_OPTIONAL }); GlobalCommandSystem().addCommand("SaveSelectedAsPrefab", Map::saveSelectedAsPrefab); @@ -923,6 +924,29 @@ void Map::exportSelected(std::ostream& out, const MapFormatPtr& format) exporter.exportMap(GlobalSceneGraph().root(), scene::traverseSelected); } +void Map::mergeMap(const cmd::ArgumentList& args) +{ + std::string candidate; + + if (!args.empty()) + { + candidate = args[0].getString(); + } + else + { + // No arguments passed, get the map file name to load + auto fileInfo = MapFileManager::getMapFileSelection(true, _("Select Map File to merge"), filetype::TYPE_MAP); + candidate = fileInfo.fullPath; + } + + if (!os::fileOrDirExists(candidate)) + { + throw cmd::ExecutionFailure(fmt::format(_("File doesn't exist: {0}"), candidate)); + } + + +} + void Map::emitMapEvent(MapEvent ev) { try diff --git a/radiantcore/map/Map.h b/radiantcore/map/Map.h index db50ef15c7..82b570c3dc 100644 --- a/radiantcore/map/Map.h +++ b/radiantcore/map/Map.h @@ -246,6 +246,8 @@ class Map : void loadMapResourceFromPath(const std::string& path); void loadMapResourceFromArchive(const std::string& archive, const std::string& archiveRelativePath); + void mergeMap(const cmd::ArgumentList& args); + void emitMapEvent(MapEvent ev); void clearMapResource();