예제 #1
0
    // ************************************************************************************
    // LEVEL LOADING
    // ************************************************************************************

    public bool GetNextLevel()
    {
        int levelToCheck = 0;

        try
        {
            levelToCheck = int.Parse(currentLevel);
        }
        catch
        {
            Debug.LogWarning("Error in getting the next level! Could not parse currentLevel to int!");
        }

        levelToCheck++;
        while (levelToCheck < 100)
        {
            if (levelReader.CheckIfFileExists(levelToCheck.ToString()))
            {                 // If file exists
                ClearLevel(); // Clear the kevek
                levelReader.LoadLevel(levelToCheck.ToString());
                break;        // We get out of this loop
            }

            levelToCheck++;
        }

        return(true);
    }
예제 #2
0
    // ************************************************************************************
    // GUI
    // ************************************************************************************
    void OnGUI()
    {
        if (!enabledOnStartup || Registry.replayViewer.enabled)
        {
            return;
        }

        // Play and Stop Buttons
        string btnText = "";

        if (isSimulating)
        {
            btnText = "Stop";
        }
        else
        {
            btnText = "Play";
        }
        if (GUI.Button(new Rect(10, 10, 100, 30), btnText))
        {
            if (isSimulating)
            {
                StopSimulation();
            }
            else
            {
                StartSimulation();
            }
        }

        // Displays the current level
        // GUI.Label(new Rect(Screen.width - 80, 10, 70, 20), "Level: " + map.currentLevel);

        GUI.enabled = true;

        MapEditMode = GUI.Toggle(new Rect(10, 50, 100, 20), MapEditMode, "Map Edit Mode");

        if (MapEditMode)
        {
            HandleEditingModeGUI();

            // Disable the GUI if the game is simulating
            if (isSimulating || currentMode != LevelEditorMode.PlacementMode)
            {
                GUI.enabled = false;
            }
            else
            {
                GUI.enabled = true;
            }

            // Make a background box for the spawning buttons
            GUI.Box(new Rect(0, Screen.height - 100, 620, 100), "Level Objects");

            if (GUI.Button(new Rect(10, Screen.height - 140, 100, 30), "Edit Object"))
            {
                Debug.Log("Edit tile clicked");
                SetCurrentMode(LevelEditorMode.PickToEditMode);
            }

            // Spawning buttons
            if (GUI.Button(new Rect(10, Screen.height - 70, 100, 30), "Tile"))
            {
                Debug.Log("Spawn tile clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.Tile;
            }
            if (GUI.Button(new Rect(110, Screen.height - 70, 100, 30), "Hazard"))
            {
                Debug.Log("Spawn hazard clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.Hazard;
            }
            if (GUI.Button(new Rect(210, Screen.height - 70, 100, 30), "Minibot"))
            {
                Debug.Log("Spawn minibot clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.Minibot;
            }
            if (GUI.Button(new Rect(310, Screen.height - 70, 100, 30), "Box"))
            {
                Debug.Log("Spawn box clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.Box;
            }
            if (GUI.Button(new Rect(410, Screen.height - 70, 100, 30), "Door"))
            {
                Debug.Log("Spawn door clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.Door;
            }

            // 2nd row
            if (GUI.Button(new Rect(10, Screen.height - 40, 100, 30), "Switch"))
            {
                Debug.Log("Spawn switch clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.Switch;
            }
            if (GUI.Button(new Rect(110, Screen.height - 40, 100, 30), "StepSwitch"))
            {
                Debug.Log("Spawn stepSwitch clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.StepSwitch;
            }
            if (GUI.Button(new Rect(210, Screen.height - 40, 100, 30), "GravInv"))
            {
                Debug.Log("Spawn gravity inverter clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.GravityInverter;
            }
            if (GUI.Button(new Rect(310, Screen.height - 40, 100, 30), "HorInv"))
            {
                Debug.Log("Spawn horizontal inverter clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.HorizontalInverter;
            }
            if (GUI.Button(new Rect(410, Screen.height - 40, 100, 30), "TrigBlocks"))
            {
                Debug.Log("Spawn triggerableBlocks clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.TriggerableBlock;
            }
            if (GUI.Button(new Rect(510, Screen.height - 40, 100, 30), "TrigHazard"))
            {
                Debug.Log("Spawn triggerableHazard clicked");
                SetCurrentMode(LevelEditorMode.PlacementMode);
                objectToSpawn = ObjectType.TriggerableHazard;
            }
            //if (GUI.Button(new Rect(510, Screen.height - 40, 100, 30), "MovPlatform"))
            //{
            //    Debug.Log("Spawn moving platform clicked");
            //    objectToSpawn = ObjectType.MovingPlatform;
            //}

            // We then enable the GUI of the rest
            GUI.enabled = true;

            // Clears the whole map
            if (GUI.Button(new Rect(Screen.width - 110, 40, 100, 30), "New Map"))
            {
                Debug.Log("New map clicked");
                map.ClearLevel();
                if (levelReader.CheckIfFileExists("template"))
                {
                    levelReader.LoadLevel("template");
                }
            }
            if (GUI.Button(new Rect(Screen.width - 110, 70, 100, 30), "Clear Map"))
            {
                Debug.Log("Clear map clilcked");
                map.ClearLevel();
            }

            // Save map mode
            levelFileName = GUI.TextField(new Rect(Screen.width - 110, 120, 100, 30), levelFileName);
            if (GUI.Button(new Rect(Screen.width - 110, 150, 100, 30), "Save Map"))
            {
                Debug.Log("Save map clicked");
                levelWriter.SaveLevel(levelFileName);
                map.currentLevel = levelFileName;
            }

            // Load map mode
            levelFileName = GUI.TextField(new Rect(Screen.width - 110, 200, 100, 30), levelFileName);
            if (GUI.Button(new Rect(Screen.width - 110, 230, 100, 30), "Load Map"))
            {
                Debug.Log("Load map clicked");
                map.ClearLevel();
                if (levelReader.CheckIfFileExists(levelFileName))
                {
                    levelReader.LoadLevel(levelFileName);
                }
            }

            if (GUI.Button(new Rect(Screen.width - 50, 270, 40, 30), ">>"))
            {
                if (map.GetNextLevel())
                {
                    Debug.Log("Next map clicked");
                }
            }

            if (GUI.Button(new Rect(Screen.width - 110, 270, 40, 30), "<<"))
            {
                if (map.GetPreviousLevel())
                {
                    Debug.Log("Previous map clicked");
                }
            }
        }
    }