Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Dodanie bibliotek
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- //Implementacja klasy "GameState", dziedziczenie po klasie "BaseState" oraz interfejsy.
- public class GameState : BaseState, IGameView, IMovement {
- //Zmienna odpowiadająca za odczyt urządzeń wejśćia(klawisze, myszka)
- private InputController.InputValues inputs;
- //Metoda służąca do inicjacji stanu gry - zawiera w sobie wszelkie informacje, by przekazać sygnał z informacją do odpowiednich kontrolerów.
- public override void InitState(GameController gameController)
- {
- //Odwołanie się do klasy bazowej "BaseState" i wykonanie wirtualnej metody, która najpierw wywołuje swoje oryginalne ciało, a potem jest nadpisywana
- //przez 'override'
- base.InitState(gameController);
- //Połączenie interfejsów z klasą
- #region LISTENERS
- this.gameController.UIController.GameView.listener = this;
- this.gameController.InputController.movementlistener = this;
- #endregion
- //Generowanie środowiska poprzez:
- //1. Pokazanie UI gry
- this.gameController.UIController.GameView.ShowView();
- //2. Pokazanie terenu(muzeum)
- this.gameController.SceneReferences.GameTerrain.SetActive(true);
- //3. Generowanie zagadek
- this.gameController.RiddleSpawner.GenerateRiddles();
- //4. Inicjację głównych kontrolerów:
- //a) obrotu i widzenia gracza
- this.gameController.MovementController.Init(gameController);
- //b) systemu podglądu zagadek
- this.gameController.ExamineSystem.Init(gameController);
- //c) poruszania się
- this.gameController.GroundController.Init(gameController);
- }
- //Update - metoda odświeżająca się co klatkę(im więcej klatek, tym częstsze odświeżanie)
- public override void UpdateState(GameController gameController)
- {
- //Odświażenie/odczytanie urządzeń wejścia
- gameController.InputController.InputUpdate();
- //Odświeżanie pozycji gracza - kierunek, kąt nachylenia głowy
- gameController.MovementController.MovementUpdate(inputs);
- }
- //Deinit - służy do wyłączenia trybu GameState i (w tym przypadku) przejśćie do menu gry.
- //Wywoływana jest po to, żeby wyczyścić to co zostało utworzone w trakcie gry, przywrócić podstawowy stan gry i wyłączyć zbędne elementy.
- public override void DeinitState(GameController gameController)
- {
- //Odwołanie się do klasy bazowej "BaseState" i wykonanie wirtualnej metody, która najpierw wywołuje swoje oryginalne ciało, a potem jest nadpisywana
- //przez 'override'.
- base.DeinitState(gameController);
- //Wypięcie interfejsów
- #region LISTENERS
- this.gameController.UIController.GameView.listener = this;
- this.gameController.InputController.movementlistener = this;
- #endregion
- //Schowanie menu gry
- this.gameController.UIController.GameView.HideView();
- //Schowanie terenu
- this.gameController.SceneReferences.MenuTerrain.SetActive(false);
- //Wyjście do trybu MenuState
- SetMenuState();
- }
- public void SetMenuState()
- {
- //W tym miejscu maszyna stanów jest przepinana z obecnego trybu "GameState" na tryb "MenuState". Gra jest już po "Deinicie" i jeżeli gracz kliknie nową grę,
- //to będzie mógł w nią zagraćbez żadnych śmieci/pozostałości po porzedniej rozgrywce.
- gameController.ChangeState(new MenuState());
- }
- //Implementacja interfejsów
- #region INTERFACES
- public void UpdateAxis(InputController.InputValues inputValues)
- {
- inputs = inputValues;
- }
- #endregion
- //Dodatkowo:
- /* region/endregion - są to wbudowane w język dodatki służące do porządkowania kodu w mniejsze "klasy" bądź wydzielenie fragmentów kodu.
- * Jest to przydatne by trzymać się wielu wzorców projektowych.
- *
- * GameController <- klasa, która jest "mózgiem" gry - przetrzymuje w sobie referencje do wszystkiego, co potrzebne by obsłużyć grę.
- * gameController <- obiekt klasy, który przesłany w metodzie jako parametr pozwala na odwołanie się do tego "mózgu"
- *
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement