コード例 #1
0
        public virtual void SaveLevel(LevelEditorSaveData saveData, string path)
        {
            string saveFolder = Path.GetDirectoryName(path);

            if (!Directory.Exists(saveFolder))
            {
                Directory.CreateDirectory(saveFolder);
            }

            LevelSavingLoadingArgs args = new LevelSavingLoadingArgs(saveData, path);

            OnLevelSaving?.Invoke(this, args);
            if (args.Cancel)
            {
                LevelEditorLogger.Log("LevelEditorSaveManager saving was canceled.");
                return;
            }

            saveData.customData = args.GetAllCustomData();

            switch (levelFormat)
            {
            case FormatType.JSON:
                string json = LevelEditorSerializer.SerializeJson(saveData);
                File.WriteAllText(path, json);
                break;

            case FormatType.Binary:
                byte[] bytes = LevelEditorSerializer.SerializeBinary(saveData, compress);
                File.WriteAllBytes(path, bytes);
                break;
            }

            OnLevelSaved?.Invoke(this, new LevelEventArgs(saveData));
        }
コード例 #2
0
        public virtual LevelEditorSaveData LoadLevel(LevelEditorSaveData data)
        {
            LevelSavingLoadingArgs args = new LevelSavingLoadingArgs(data, loadLocation);

            loadLocation = null;
            OnLevelLoading?.Invoke(this, args);
            if (args.Cancel)
            {
                LevelEditorLogger.Log("LevelEditorSaveManager loading was canceled.");
                return(new LevelEditorSaveData(null));
            }

            realObjectManager.DeleteAllObjects();
            realObjectManager.CreateObjectsFromSaveData(data);

            OnLevelLoaded?.Invoke(this, new LevelEventArgs(data));

            return(data);
        }
コード例 #3
0
 private void OnLevelLoading(object sender, LevelSavingLoadingArgs e)
 {
     loadingLevel = true;
 }