private void Awake() { if (jsonSaveLoad == null) { jsonSaveLoad = FindObjectOfType <JsonSaveLoad>(); } }
/// <summary>Updates the list of loadable files.</summary> private void UpdateLoadableFiles() { loadableFiles = JsonSaveLoad.FindAllFiles(FolderPath.Grids); if (loadableFiles != null && loadableFiles.Count > 0) { if (loadFileName == null || !loadableFiles.Contains(loadFileName)) { loadFileName = loadableFiles[0]; } } else { loadFileName = null; } }
/// <summary>Loads the chosen grid.</summary> public void LoadGrid() { if (loadFileName == null) { Debug.LogWarning("WARNING: Load file has not been set!"); return; } GridInfo info = JsonSaveLoad.LoadFile <GridInfo>(FolderPath.Grids, loadFileName); RemoveGrid(); gridParams.type = info.type; switch (info.type) { case GridType.Radial: { if (info.parameters != null && info.parameters.Length == 1 && info.parameters[0] > 0) { gridParams.radius = info.parameters[0]; CreateRadialGrid(info.GetTiles(), info.GetSpawns(), info.GetLevelObjects()); } break; } case GridType.Square: { if (info.parameters != null && info.parameters.Length == 2 && info.parameters[0] > 0 && info.parameters[1] > 0) { gridParams.height = info.parameters[0]; gridParams.width = info.parameters[1]; CreateSquareGrid(info.GetTiles(), info.GetSpawns(), info.GetLevelObjects()); } break; } } onLevelLoad.Invoke(); CameraManager.Instance.UpdateBounds(gridParams.type, info.parameters); currentGridFile = loadFileName; savefileName = loadFileName; }
public override void OnInspectorGUI() { base.OnInspectorGUI(); LevelEditor manager = (LevelEditor)target; GridType[] types = new GridType[] { GridType.Radial, GridType.Square }; if (Application.isPlaying) { if (CanSave(manager)) { gridSaving = EditorGUILayout.BeginFoldoutHeaderGroup(gridSaving, "Grid Saving"); if (gridSaving) { manager.savefileName = EditorGUILayout.TextField("Save File Name", manager.savefileName); if (GUILayout.Button("Save")) { manager.SaveGrid(); } } EditorGUILayout.EndFoldoutHeaderGroup(); } else if (manager.LoadableFiles != null && manager.LoadableFiles.Count > 0) { gridLoading = EditorGUILayout.BeginFoldoutHeaderGroup(gridLoading, "Grid Loading"); if (gridLoading) { int index = manager.LoadableFiles.IndexOf(manager.loadFileName); manager.SetLoadFile(EditorGUILayout.Popup(index, manager.LoadableFiles.ToArray())); if (GUILayout.Button("Load")) { manager.LoadGrid(); } } EditorGUILayout.EndFoldoutHeaderGroup(); } circuitCreator = EditorGUILayout.BeginFoldoutHeaderGroup(circuitCreator, "Circuit Creator"); if (circuitCreator) { circuitName = EditorGUILayout.TextField("Circuit Name", circuitName); circuitDifficulty = (Difficulty)EditorGUILayout.EnumPopup("Difficulty", circuitDifficulty); circuitTier = (CircuitTier)EditorGUILayout.EnumPopup("Circuit Teir", circuitTier); finalCircuit = EditorGUILayout.Toggle("Final Circuit", finalCircuit); for (int i = circuitLevels.Count - 1; i > -1; i--) { if (GUILayout.Button("Remove " + circuitLevels[i])) { circuitLevels.RemoveAt(i); } } GUILayout.Space(20); if (manager.currentGridFile != null && circuitLevels.Count < 7 && !circuitLevels.Contains(manager.currentGridFile)) { if (GUILayout.Button("Add Current Grid")) { circuitLevels.Add(manager.currentGridFile); } } } EditorGUILayout.EndFoldoutHeaderGroup(); newspaperInfo = EditorGUILayout.BeginFoldoutHeaderGroup(newspaperInfo, "NewspaperInfo"); if (newspaperInfo) { date = EditorGUILayout.TextField("Date", date); headline = EditorGUILayout.TextField("Headline", headline); articleTitle = EditorGUILayout.TextField("Article Title", articleTitle); EditorGUILayout.LabelField("Article Description"); articleDescription = EditorGUILayout.TextArea(articleDescription, GUILayout.Height(60)); } EditorGUILayout.EndFoldoutHeaderGroup(); postCircuitStory = EditorGUILayout.BeginFoldoutHeaderGroup(postCircuitStory, "Post Circuit Story"); if (postCircuitStory) { hasStoryScene = GUILayout.Toggle(hasStoryScene, "Has Story"); storyHeader = EditorGUILayout.TextField("Story Header", storyHeader); GUILayout.Label("Story Scene Description"); storyDescription = EditorGUILayout.TextArea(storyDescription, GUILayout.Height(60)); } EditorGUILayout.EndFoldoutHeaderGroup(); if (loadableCircuits.Count > 0) { circuitLoading = EditorGUILayout.BeginFoldoutHeaderGroup(circuitLoading, "Circuit Loading"); if (circuitLoading) { circuitIndex = EditorGUILayout.Popup(circuitIndex, loadableCircuits.ToArray()); if (GUILayout.Button("Load")) { Circuit circuit = JsonSaveLoad.LoadFile <Circuit>(FolderPath.Circuits, loadableCircuits[circuitIndex]); InfoList <NewspaperInfo> newsList = JsonSaveLoad.LoadResource <InfoList <NewspaperInfo> >("Newspaper"); circuitFileName = loadableCircuits[circuitIndex]; circuitName = circuit.name; circuitDifficulty = circuit.difficulty; circuitTier = circuit.circuitTier; finalCircuit = circuit.IsFinalCircuit(); circuitLevels.Clear(); circuitLevels.AddRange(circuit.grids); bool missingNewspaper = true; if (newsList != default(InfoList <NewspaperInfo>)) { NewspaperInfo newsInfo = NewspaperInfo.BinarySearch(newsList.info, circuitName); if (newsInfo != null) { missingNewspaper = false; date = newsInfo.date; headline = newsInfo.headline; articleTitle = newsInfo.title; articleDescription = newsInfo.description; } } if (missingNewspaper) { date = "August 8th, 2008"; headline = "Fresh Meat Enters the Circuit Breaker Sport!"; articleTitle = "An Actual Challenge"; if (circuit.description != null) { articleDescription = circuit.description; } else { articleDescription = "The new challenger will actually have to try in order to overcome this challenge." + " I hope they survive... or at least show us a spectacular death!"; } } if (circuit.postStoryScene != null && circuit.postStoryScene.Length >= 2) { hasStoryScene = true; storyHeader = circuit.postStoryScene[0]; storyDescription = circuit.postStoryScene[1]; } else { hasStoryScene = false; storyHeader = ""; storyDescription = ""; } } } EditorGUILayout.EndFoldoutHeaderGroup(); } if (circuitLevels.Count > 0) { circuitSaving = EditorGUILayout.BeginFoldoutHeaderGroup(circuitSaving, "Circuit Saving"); if (circuitSaving) { circuitFileName = EditorGUILayout.TextField("Circuit File Name", circuitFileName); if (GUILayout.Button("Save Circuit")) { string[] story = null; if (hasStoryScene) { story = new string[2]; story[0] = storyHeader; story[1] = storyDescription; } Circuit circuit = new Circuit(circuitName, articleDescription, circuitDifficulty, circuitTier, finalCircuit, circuitLevels.ToArray(), story); string savedName = JsonSaveLoad.SaveFile(FolderPath.Circuits, circuit, circuitFileName, false, true); //Get Newspaper Info and convert it into a list NewspaperInfo info = new NewspaperInfo(circuitName, date, headline, articleTitle, articleDescription); InfoList <NewspaperInfo> newsInfo = JsonSaveLoad.LoadResource <InfoList <NewspaperInfo> >("Newspaper"); //Add new newspaper info into the list newsInfo.info = NewspaperInfo.BinaryInsert(newsInfo.info, info); //Overwrite previous newspaper list with new data JsonSaveLoad.SaveResource <InfoList <NewspaperInfo> >(newsInfo, "Newspaper"); Debug.Log("Saved Circuit as [" + savedName + "]"); loadableCircuits = JsonSaveLoad.FindAllFiles(FolderPath.Circuits); } } EditorGUILayout.EndFoldoutHeaderGroup(); } } if (GUI.changed) { EditorUtility.SetDirty(manager); } }
private void Awake() { //FindCircuits(); loadableCircuits = JsonSaveLoad.FindAllFiles(FolderPath.Circuits); }
/// <summary>Saves the current grid as a json file.</summary> public void SaveGrid() { if (grid != null) { int[] parameters = gridParams.GetParamaters(); List <TileInfo> tiles = new List <TileInfo>(); foreach (EditorList row in grid) { foreach (EditorTile tile in row.list) { if (tile.Type != TileType.Standard || tile.GetVariant() != 0) { tiles.Add(tile.GetInfo()); } } } List <UnitInfo> spawns = new List <UnitInfo>(); spawns.Add(player.GetInfo()); foreach (EditorUnit decoy in decoyBotSpawns) { spawns.Add(decoy.GetInfo()); } //Create Turn Order dictionary Dictionary <UnitType, List <UnitInfo> > turnOrder = new Dictionary <UnitType, List <UnitInfo> >(); for (int i = 2; i < 10; i++) { UnitType type = (UnitType)i; List <UnitInfo> list = new List <UnitInfo>(); turnOrder.Add(type, list); } //Add enemies to their specific list in the turn order foreach (EditorUnit character in enemySpawns) { turnOrder[character.Type].Add(character.GetInfo()); } //Add enemy lists into spawns based on their turn order int[] types = { 4, 2, 9, 3, 5, 6, 8, 7 }; foreach (int index in types) { UnitType type = (UnitType)index; spawns.AddRange(turnOrder[type]); } List <LevelObjectInfo> objects = new List <LevelObjectInfo>(); foreach (EditorLevelObject levelObject in levelObjects) { objects.Add(levelObject.GetInfo()); } GridInfo info = new GridInfo(savefileName, gridParams.type, parameters, tiles, spawns, objects); string finalFileName = JsonSaveLoad.SaveFile <GridInfo>(FolderPath.Grids, info, savefileName, false, true); Debug.Log("Saved new Grid, [" + finalFileName + "]"); UpdateLoadableFiles(); currentGridFile = savefileName; } else { Debug.LogWarning("WARNING: Trying to save empty grid!"); } }