Esempio n. 1
0
        /// <summary>
        /// Inicializa as configurações e retorna a string serializada das configurações.
        /// </summary>
        /// <returns></returns>
        public string GenerateConfig()
        {
            // Gera um caminho base para o %APPDATA% apontando para a pasta de configurações do jogo
            var basePath = Path.GetFullPath(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + Config.CONFIG_FOLDER_NAME);

            // Verifica se o diretório base existe
            if (!Directory.Exists(basePath))
            {
                // Se não, cria o diretório base
                Directory.CreateDirectory(basePath);
            }

            // Caminho do diretório onde será salvo questões relativas as Layers
            var layerPath = Path.GetFullPath(basePath + Config.LAYERS_FOLDER_NAME);

            // Verifica se o diretório das layers existe
            if (!Directory.Exists(layerPath))
            {
                // Se não, cria o diretório das layers
                Directory.CreateDirectory(layerPath);
            }

            // Caminho para o arquivo json onde conterá as informações das layers
            var layersFilePath = Path.GetFullPath(layerPath + Config.LAYER_FILE_NAME);

            // Verifica se o arquivo das layers existe
            if (!File.Exists(layersFilePath))
            {
                // Se não, cria um arquivo json e escreve as layers padrões obtidas do GameResources
                File.WriteAllText(layersFilePath, ResourceLoader.LoadJson("Config/Layers"));
            }

            // Caminho do diretório onde será salvo as informações dos tiles de cada layer
            var layerTilesPath = Path.GetFullPath(layerPath + Config.LAYERS_TILES_FOLDER_NAME);

            // Verifica se o diretório existe
            if (!Directory.Exists(layerTilesPath))
            {
                // Se não, cria o diretório do layerTiles
                Directory.CreateDirectory(layerTilesPath);
            }

            // Caminho para o arquivo json que conterá as informações sobre os minérios
            var itemsFilePath = Path.GetFullPath(basePath + Config.ITEMS_FILE_NAME);

            // Verifica se o arquivo existe
            if (!File.Exists(itemsFilePath))
            {
                // Se não, cria um arquivo json e escreve os ores padrões obtidos do GameResources
                File.WriteAllText(itemsFilePath, ResourceLoader.LoadJson("Config/Items"));
            }

            // Serializa uma nova instância dasconfigurações
            var configs = JsonConvert.SerializeObject(new Config()
            {
                BasePath             = basePath,
                LayersFilePath       = layersFilePath,
                LayerTilesFolderPath = layerTilesPath,
                ItemsFilePath        = itemsFilePath,
                MaxSpawnWorldHeight  = 60,
                MaxSpawnWorldX       = 64,
                MinSpawnWorldX       = -32
            }, Formatting.None);

            // Salva as configurações serializadas no PlayerPrefs
            PlayerPrefs.SetString(Config.PREFS_KEY, configs);

            return(configs);
        }