コード例 #1
0
 private void Awake()
 {
     if (jsonSaveLoad == null)
     {
         jsonSaveLoad = FindObjectOfType <JsonSaveLoad>();
     }
 }
コード例 #2
0
ファイル: LevelEditor.cs プロジェクト: sbd39/Portfolio
 /// <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;
     }
 }
コード例 #3
0
ファイル: LevelEditor.cs プロジェクト: sbd39/Portfolio
    /// <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;
    }
コード例 #4
0
    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);
        }
    }
コード例 #5
0
 private void Awake()
 {
     //FindCircuits();
     loadableCircuits = JsonSaveLoad.FindAllFiles(FolderPath.Circuits);
 }
コード例 #6
0
ファイル: LevelEditor.cs プロジェクト: sbd39/Portfolio
    /// <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!");
        }
    }