Beispiel #1
0
        public void CreateNewLevel()
        {
            if (CurrentLevel != null)
            {
                CurrentLevel.Clean();
                CurrentLevel = null;
            }

            CurrentLevel = new Level();
        }
Beispiel #2
0
        public IEnumerator LoadLevel(string levelName, LevelData levelData)
        {
            if (CurrentLevel != null)
            {
                CurrentLevel.Clean();
                CurrentLevel = null;
            }

            CurrentLevel = new Level()
            {
                GoalDescription       = levelData.GoalDescription,
                Max4VBatteries        = levelData.Max4VBatteries,
                Max9VBatteries        = levelData.Max9VBatteries,
                MaxBulbs              = levelData.MaxBulbs,
                MaxBuzzers            = levelData.MaxBuzzers,
                MaxMotors             = levelData.MaxMotors,
                MaxSwitches           = levelData.MaxSwitches,
                MaxWire               = levelData.MaxWireAvailable,
                CanBridge             = levelData.CanBridge,
                CanSnap               = levelData.CanSnap,
                CanBranch             = levelData.CanBranch,
                SuccessByShortCircuit = levelData.SuccessByShortCircuit
            };

            var characterController = ApplicationController.Instance.CharacterController;

            characterController.ClearAllCharacters();

            var wireController = ApplicationController.Instance.WireController;

            wireController.ClearAllWirePieces();

            _grid = FindObjectOfType <BulbGrid>();
            _grid.LoadSaveData(levelData.Grid);

            yield return(null);

            characterController.LoadCharacters <BatteryCharacter, BatteryCharacterData>(levelData.Batteries);
            characterController.LoadCharacters <LightBulbCharacter, LightBulbCharacterData>(levelData.LightBulbs);
            characterController.LoadCharacters <ObstructionCharacter, ObstructionCharacterData>(levelData.Obstructions);
            characterController.LoadCharacters <MotorCharacter, MotorCharacterData>(levelData.Motors);
            characterController.LoadCharacters <BuzzerCharacter, BuzzerCharacterData>(levelData.Buzzers);
            characterController.LoadCharacters <SwitchCharacter, SwitchCharacterData>(levelData.Switches);

            characterController.UpdateAllCharacters();

            wireController.LoadSaveData(levelData.WirePieces);

            _grid.FillZoomGrid();

            if (GameState.CurrentState == GameStates.Game)
            {
                var instructionPopup = InstructionsPopup.Instance;
                instructionPopup.SetDescription(levelData.GoalDescription);
                instructionPopup.TogglePopup(true);
            }

            if (OnLevelLoaded != null)
            {
                OnLevelLoaded(levelName, levelData);
            }

            _grid.SetGridMode(BulbGrid.GridMode.DrawWire);

            Debug.LogFormat("{0} | Loaded level: {1}", this, levelName);
        }