public BoolWithMessage LoadOriginalMap()
        {
            try
            {
                DeleteMapFilesFromNYCFolder();

                string   fileNamePrefix = "NYC01_Persistent";
                string[] fileExtensions = { ".umap", ".uexp", "_BuiltData.uasset", "_BuiltData.uexp", "_BuiltData.ubulk" };

                // copy NYC01_Persistent backup files back to original game location
                foreach (string fileExt in fileExtensions)
                {
                    string fullPath   = $"{SessionPath.ToOriginalSessionMapFiles}\\{fileNamePrefix}{fileExt}";
                    string targetPath = $"{SessionPath.ToNYCFolder}\\{fileNamePrefix}{fileExt}";
                    File.Copy(fullPath, targetPath, true);
                }

                SetGameDefaultMapSetting("/Game/Tutorial/Intro/MAP_EntryPoint.MAP_EntryPoint");

                return(BoolWithMessage.True($"{DefaultSessionMap.MapName} Loaded!"));
            }
            catch (Exception e)
            {
                return(BoolWithMessage.False($"Failed to load Original Session Game Map : {e.Message}"));
            }
        }
        public BoolWithMessage LoadMap(MapListItem map)
        {
            if (SessionPath.IsSessionPathValid() == false)
            {
                return(BoolWithMessage.False("Cannot Load: 'Path to Session' is invalid."));
            }

            if (SessionPath.IsSessionRunning() == false || FirstLoadedMap == null)
            {
                FirstLoadedMap = map;
            }

            if (map == DefaultSessionMap)
            {
                return(LoadOriginalMap());
            }

            try
            {
                // delete session map file / custom maps from game
                DeleteMapFilesFromNYCFolder();

                CopyMapFilesToNYCFolder(map);

                // update the ini file with the new map path
                string selectedMapPath = "/Game/Art/Env/NYC/" + map.MapName;
                SetGameDefaultMapSetting(selectedMapPath);

                return(BoolWithMessage.True($"{map.MapName} Loaded!"));
            }
            catch (Exception e)
            {
                return(BoolWithMessage.False($"Failed to load {map.MapName}: {e.Message}"));
            }
        }
        public BoolWithMessage LoadOriginalMap()
        {
            try
            {
                DeleteMapFilesFromNYCFolder();

                SetGameDefaultMapSetting("/Game/Tutorial/Intro/MAP_EntryPoint");

                return(BoolWithMessage.True($"{DefaultSessionMap.MapName} Loaded!"));
            }
            catch (Exception e)
            {
                return(BoolWithMessage.False($"Failed to load Original Session Game Map : {e.Message}"));
            }
        }
        public BoolWithMessage LoadMap(MapListItem map)
        {
            if (SessionPath.IsSessionPathValid() == false)
            {
                return(BoolWithMessage.False("Cannot Load: 'Path to Session' is invalid."));
            }

            if (SessionPath.IsSessionRunning() == false || FirstLoadedMap == null)
            {
                FirstLoadedMap = map;
            }

            if (Directory.Exists(SessionPath.ToNYCFolder) == false)
            {
                Directory.CreateDirectory(SessionPath.ToNYCFolder);
            }

            if (map == DefaultSessionMap)
            {
                return(LoadOriginalMap());
            }

            try
            {
                // delete session map file / custom maps from game
                DeleteMapFilesFromNYCFolder();

                CopyMapFilesToNYCFolder(map);

                // update the ini file with the new map path
                // .. when the game is running the map file is renamed to NYC01_Persistent so it can load when you leave the apartment
                string selectedMapPath = "/Game/Art/Env/NYC/NYC01_Persistent";

                if (SessionPath.IsSessionRunning() == false)
                {
                    selectedMapPath = $"/Game/Art/Env/NYC/{map.MapName}";
                }

                SetGameDefaultMapSetting(selectedMapPath);


                return(BoolWithMessage.True($"{map.MapName} Loaded!"));
            }
            catch (Exception e)
            {
                return(BoolWithMessage.False($"Failed to load {map.MapName}: {e.Message}"));
            }
        }