// Start is called before the first frame update void Start() { CurrentLevelIndex = 0; Debug.Log("level : " + CurrentLevelIndex); GameFSM.GetState(GameStateLevel).OnStateInEvent.AddListener(() => { LevelFsm = new FSMLite(); LevelFsm.RegisterState(new FSMLite.State() { Name = LevelStateOpen }); LevelFsm.RegisterState(new FSMLite.State() { Name = LevelStateClose }); LevelFsm.GetState(LevelStateOpen).OnStateInEvent.AddListener(() => { DistortionMask.SetActive(false); }); LevelFsm.GetState(LevelStateClose).OnStateInEvent.AddListener(() => { DistortionMask.SetActive(true); }); UI.SetLevelFSM(LevelFsm); LevelFsm.Start(LevelStateOpen); if (LevelPrefabList.Count > CurrentLevelIndex) { var levelPrefab = LevelPrefabList[CurrentLevelIndex]; var levelGo = Instantiate(levelPrefab, transform); if (!(levelGo is null)) { Level = levelGo.GetComponent <Level.Level>(); } switchCameraLimit(); } }); GameFSM.GetState(GameStateLevel).OnStateOutEvent.AddListener(() => { UI.UnSetLevelFSM(LevelFsm); LevelFsm.Clear(); LevelFsm = null; Destroy(Level.gameObject); }); UI.SetGameFSM(GameFSM); GameFSM.Start(GameStateMenu); }
public void SetGameFSM(FSMLite gameFSM) { gameFSM.GetState(Game.GameStateMenu).OnStateInEvent.AddListener(() => { _menuPanel.gameObject.SetActive(true); }); gameFSM.GetState(Game.GameStateMenu).OnStateOutEvent.AddListener(() => { _menuPanel.gameObject.SetActive(false); }); gameFSM.GetState(Game.GameStateLevel).OnStateInEvent.AddListener(() => { _levelPanel.gameObject.SetActive(true); }); gameFSM.GetState(Game.GameStateLevel).OnStateOutEvent.AddListener(() => { _levelPanel.gameObject.SetActive(false); }); gameFSM.GetState(Game.GameStateScore).OnStateInEvent.AddListener(() => { _scorePanel.gameObject.SetActive(true); }); gameFSM.GetState(Game.GameStateScore).OnStateOutEvent.AddListener(() => { _scorePanel.gameObject.SetActive(false); }); gameFSM.GetState(Game.GameStateFinish).OnStateInEvent.AddListener(() => { _finishPanel.gameObject.SetActive(true); }); gameFSM.GetState(Game.GameStateFinish).OnStateOutEvent.AddListener(() => { _finishPanel.gameObject.SetActive(false); }); _startGameButton.onClick.AddListener(() => { Game.Get().GameFSM.SetState(Game.GameStateLevel); Sounds.Get().PlayStartButtonSound(); }); _restartGameButton.onClick.AddListener(() => { Game.Get().GameFSM.SetState(Game.GameStateLevel); }); }
public void UnSetLevelFSM(FSMLite levelFSM) { levelFSM.GetState(Game.LevelStateClose).OnStateInEvent.RemoveListener(OnLevelStateCloseIn); levelFSM.GetState(Game.LevelStateOpen).OnStateInEvent.RemoveListener(OnLevelStateOpenIn); }