public void OnGameEvent(GameFlowEvent flowEvent) { switch (flowEvent.GetAction()) { case EGameFlowAction.StartDialogue: ChangeNextTransition(HSMTransition.EType.Child, typeof(GameFlowDialogueState)); break; case EGameFlowAction.EndDialogue: new GameFlowEvent(EGameFlowAction.EndLevelPanel).Push(); break; case EGameFlowAction.LevelSelection: ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowLevelSelectionState)); break; case EGameFlowAction.Menu: ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowMenuState)); break; case EGameFlowAction.Retry: ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowLevelState)); break; case EGameFlowAction.NextLevel: if (!LevelManagerProxy.Get().IsLastLevel()) { LevelManagerProxy.Get().NextLevel(); ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowLevelState)); } break; } }
private void Start() { int best = LevelManagerProxy.Get().GetCurrentLevelScore(); m_BestNumber.text = best > 0 ? best.ToString() : ""; m_LevelName.text = LevelManagerProxy.Get().GetCurrentLevelName(); }
public void OnGameEvent(GameFlowEvent flowEvent) { switch (flowEvent.GetAction()) { case EGameFlowAction.EndDialogue: if (m_HasEnded) { if (!LevelManagerProxy.Get().IsLastLevel()) { LevelManagerProxy.Get().NextLevel(); ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowLevelState)); } else { ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowEndGameState)); } } break; case EGameFlowAction.GameOver: ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowGameOverState)); break; case EGameFlowAction.LevelWon: m_HasEnded = true; break; case EGameFlowAction.Menu: ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowMenuState)); break; } }
public void OnGameEvent(GameFlowEvent flowEvent) { switch (flowEvent.GetAction()) { case EGameFlowAction.Menu: ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowMenuState)); break; case EGameFlowAction.LevelSelection: ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowLevelSelectionState)); break; case EGameFlowAction.NextLevel: if (!LevelManagerProxy.Get().IsLastLevel()) { LevelManagerProxy.Get().NextLevel(); ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowLevelState)); } break; case EGameFlowAction.Retry: ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowLevelState)); break; case EGameFlowAction.Resume: ChangeNextTransition(HSMTransition.EType.Exit); break; } }
public override void OnEnter() { LevelManagerProxy.Get().LoadScene("Scenes/MainMenu"); LevelManagerProxy.Get().SetLevelIndex(0); TeamManagerProxy.Get().SayGoodbye(); TeamManagerProxy.Get().AddCharacter(new CharacterModel("Prince", ECharacterClass.Prince)); this.RegisterAsListener("Game", typeof(GameFlowEvent)); }
public override void OnEnter() { m_HasEnded = false; LevelManagerProxy.Get().LoadLevel(); this.RegisterAsListener("Game", typeof(GameFlowEvent)); ChangeNextTransition(HSMTransition.EType.Child, typeof(GameFlowNormalState)); }
void OpenProxies() { LoggerProxy.Open(m_Logger); UpdaterProxy.Open(m_Updater); GameEventManagerProxy.Open(m_GameEventManager); InputManagerProxy.Open(m_InputManager); LevelManagerProxy.Open(m_LevelManager); SoundManagerProxy.Open(m_SoundManager); }
void CloseProxies() { SoundManagerProxy.Close(m_SoundManager); LevelManagerProxy.Close(m_LevelManager); InputManagerProxy.Close(m_InputManager); GameEventManagerProxy.Close(m_GameEventManager); UpdaterProxy.Close(m_Updater); LoggerProxy.Close(m_Logger); }
private void AddBinSpawnCommand() { if (LevelManagerProxy.Get().GetMode() == ELevelMode.MaxBin) { BinSpawnCommand command = new BinSpawnCommand(gameObject); command.Execute(); CommandStackProxy.Get().PushCommand(command); } }
void Start() { m_LevelPositions = GameObject.Find("LevelPositions").GetComponentsInChildren <Transform> ().SubArray(1); m_CurrentLevel = LevelManagerProxy.Get().GetCurrentLevelID(); m_TargetPos = m_LevelPositions[m_CurrentLevel].position; transform.position = m_TargetPos; m_Animator = GetComponent <Animator> (); this.RegisterAsListener("Player", typeof(PlayerInputGameEvent)); }
public override void Undo() { PlayerController controller = m_Actor.GetComponent <PlayerController> (); if (controller.IsHolding()) { LevelManagerProxy.Get().DecreaseNumberOfMove(); } controller.TurnInstant(m_OldFacingDirection); }
public override void Execute() { PlayerController controller = m_Actor.GetComponent <PlayerController> (); if (controller.IsHolding()) { LevelManagerProxy.Get().IncreaseNumberOfMove(); } controller.Move(m_XDir, m_YDir); }
public override void Undo() { PlayerController controller = m_Actor.GetComponent <PlayerController> (); if (controller.IsHolding()) { LevelManagerProxy.Get().DecreaseNumberOfMove(); } controller.MoveInstant(-m_XDir, -m_YDir); }
public override void Execute() { PlayerController controller = m_Actor.GetComponent <PlayerController> (); if (controller.IsHolding()) { LevelManagerProxy.Get().IncreaseNumberOfMove(); } controller.Turn(m_NewFacingDirection); }
private void Start() { m_LevelPositions = GameObject.Find("LevelPositions").GetComponentsInChildren <Transform> ().SubArray(1); Dictionary <int, string> levelIdToNames = LevelManagerProxy.Get().GetLevelNames(); foreach (int id in levelIdToNames.Keys) { GameObject level = GameObject.Instantiate(m_LevelPrefab); level.transform.position = m_LevelPositions[id].position + m_Offset; } }
public void Move(bool isGoingRight) { int nextLevel = m_CurrentLevel + (isGoingRight ? 1 : -1); if (!m_IsMoving && nextLevel >= 0 && nextLevel < m_LevelPositions.Length) { m_CurrentLevel = nextLevel; LevelManagerProxy.Get().SetLevelIndex(m_CurrentLevel); m_TargetPos = m_LevelPositions[m_CurrentLevel].position; StartCoroutine(MoveRoutine(isGoingRight)); } }
private void Awake() { Vector3 levelpos = Vector3.zero; for (int i = 0; i < LevelManagerProxy.Get().GetLevelNames().Count; i++) { GameObject level = GameObject.Instantiate(m_LevelPositonPrefab); level.transform.SetParent(transform, false); level.transform.position = levelpos; levelpos += m_Spacing; } }
public void RegisterBinGoal(BinGoal binGoal) { if (LevelManagerProxy.Get().GetMode() == ELevelMode.MaxBin) { binGoal.gameObject.SetActive(false); } else { m_BinGoals.Add(binGoal.GetCoordinates(), binGoal); m_BinGoalFlags.Add(binGoal.GetCoordinates(), false); } }
private void Update() { int best = LevelManagerProxy.Get().GetCurrentLevelScore(); m_BestNumber.text = best > 0 ? best.ToString() : ""; m_CurrenLevelName.text = LevelManagerProxy.Get().GetCurrentLevelName(); if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.Space)) { new GameFlowEvent(EGameFlowAction.Start).Push(); } if (Input.GetKeyDown(KeyCode.Escape)) { new GameFlowEvent(EGameFlowAction.Menu).Push(); } }
public void OnGameEvent(GameFlowEvent flowEvent) { switch (flowEvent.GetAction()) { case EGameFlowAction.LeaveNode: ChangeNextTransition(HSMTransition.EType.Siblings, typeof(GameFlowNormalState)); break; case EGameFlowAction.LevelWon: if (!LevelManagerProxy.Get().IsLastLevel()) { LevelManagerProxy.Get().NextLevel(); ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowLevelState)); } else { ChangeNextTransition(HSMTransition.EType.Clear, typeof(GameFlowEndGameState)); } break; } }
// This should be called before any other gameobject awakes private void Awake () { // Singleton pattern : this is the only case where it should be used if(ms_Instance == null) { ms_Instance = this; DontDestroyOnLoad (gameObject); // Keep the Updater first, as the other members might want to register to it m_Logger = new UnityLogger (); LoggerProxy.Open (m_Logger); m_Updater = new Updater (); UpdaterProxy.Open (m_Updater); m_GameEventManager = new GameEventManager (); GameEventManagerProxy.Open (m_GameEventManager); m_InputManager = new InputManager (); InputManagerProxy.Open (m_InputManager); m_LevelManager = new LevelManager (); LevelManagerProxy.Open (m_LevelManager); m_TileManager = new TileManager (); TileManagerProxy.Open (m_TileManager); m_CommandStack = new CommandStack (); CommandStackProxy.Open (m_CommandStack); m_GoalManager = new GoalManager (); GoalManagerProxy.Open (m_GoalManager); m_SoundManager = new SoundManager (); SoundManagerProxy.Open (m_SoundManager); m_SoundManager.SetMusicSource (m_MusicSource); m_SoundManager.SetFXSource (m_EfxSource); m_GameFlowHSM = new GameFlowHSM (); m_GameFlowHSM.Start (typeof (GameFlowMenuState)); } else if (ms_Instance != this) { Destroy (gameObject); return; } }
public override void OnEnter() { LevelManagerProxy.Get().LoadScene("Scenes/MainMenu"); this.RegisterAsListener("Game", typeof(GameFlowEvent)); }
public override void Execute() { PlayerManagerProxy.Get().ResetStat(); LevelManagerProxy.Get().Reset(); new GameFlowEvent(EGameFlowAction.Quit).Push(); }
public override void Execute() { LevelManagerProxy.Get().NextLevel(); }
public void TriggerDialogue(string tag) { new GameFlowEvent(EGameFlowAction.StartDialogue).Push(); Dialogue dialogue = new Dialogue(tag); char[] separators = { ':' }; string filename = "/Dialogues_level" + LevelManagerProxy.Get().GetCurrentLevelID() + ".txt"; filename = Application.streamingAssetsPath + filename; string[] lines = File.ReadAllLines(filename); int countBrackets = 0; int dialogueBeginning = 0; int dialogueEnd = 0; for (int i = 0; i < lines.Length; i++) { string[] datas = lines[i].Split(separators, System.StringSplitOptions.RemoveEmptyEntries); if (datas.Length == 0) { continue; } if (datas[0] == "[") { countBrackets++; } if (datas[0] == "]") { if (countBrackets <= 0) { this.DebugLog("Parsing error, ']' unexpected at line " + i); new GameFlowEvent(EGameFlowAction.EndDialogue).Push(); } countBrackets--; } // If there is a single word it is a dialog tag if (datas.Length == 1 && datas[0] == tag && countBrackets == 0) { dialogueBeginning = i + 2; } // We then seek for the a ] that signals the end of the dialogue if (dialogueBeginning > 0 && datas.Length == 1 && datas[0] == "]" && countBrackets == 0) { dialogueEnd = i; break; } } if (dialogueBeginning == 0) { this.DebugLog("Could not find dialogue with tag " + tag); new GameFlowEvent(EGameFlowAction.EndDialogue).Push(); return; } // Check if dialogue is composed of subdialogs or not by checking if there's a subdialog name string[] temp = lines[dialogueBeginning].Split(separators, System.StringSplitOptions.RemoveEmptyEntries); if (temp.Length == 1) { dialogue.m_IsSubDialogues = true; } if (!dialogue.m_IsSubDialogues) { // If not composed of subdialogs, parse only sentences for (int i = dialogueBeginning; i < dialogueEnd; i++) { string[] datas = lines[i].Split(separators); if (datas.Length != 2) { this.DebugLog("Invalid number of data line " + i + " expecting 2, got " + datas.Length); return; } dialogue.m_Texts.Add(new Dialogue.Sentence(datas[0].Trim(), datas[1])); } } else { // If composed of subdialogs, parse subdialogs char[] newSeparators = { ':', '[', ']' }; char[] trimChar = { ' ', '\t' }; bool subDialogueStart = false; string subDialogueName = null; Dialogue currSubDialogue = null; for (int i = dialogueBeginning; i < dialogueEnd; i++) { string line = lines[i].Trim(trimChar); string[] datas = line.Split(newSeparators, System.StringSplitOptions.RemoveEmptyEntries); // Find beginning of subdialog if (!subDialogueStart && datas.Length == 1) { subDialogueStart = true; subDialogueName = datas[0].Trim(); currSubDialogue = new Dialogue(subDialogueName); i++; continue; } // Find ending of subdialog and add it to dialog if (subDialogueStart && line == "]") { subDialogueStart = false; dialogue.m_SubDialogues.Add(currSubDialogue); currSubDialogue = null; continue; } // Find Sentence and Choice of subdialog and add it to subdialog if (subDialogueStart && datas.Length > 0) { if (string.Equals(datas[0], "Sentence")) { //Assert.IsTrue (datas.Length == 3); if (datas.Length != 3) { Debug.Log(filename + " line: " + i); } currSubDialogue.m_Texts.Add(new Dialogue.Sentence(datas[1].Trim(), datas[2])); } else if (string.Equals(datas[0], "Choice")) { Assert.IsTrue(datas.Length == 2); currSubDialogue.m_Texts.Add(new Dialogue.Choice("Choice", ParseChoice(datas[1], i))); } else { string[] action = line.Split(new char[] { ' ' }, System.StringSplitOptions.RemoveEmptyEntries); switch (action[0]) { case "AddToTeam": { currSubDialogue.m_Action = new AddToTeamAction(action[1], (ECharacterClass)System.Enum.Parse(typeof(ECharacterClass), action[2])); break; } case "RemoveFromTeam": { currSubDialogue.m_Action = new RemoveFromTeamAction(action[1]); break; } case "Capacity": { currSubDialogue.m_Action = new UseCapacityAction(action[1], (ECharacterCapacity)System.Enum.Parse(typeof(ECharacterCapacity), action[2])); break; } case "SayGoodbye": { currSubDialogue.m_Action = new SayGoodbyeAction(); break; } } } } } } StartDialogue(dialogue); }
public override void OnEnter() { UpdaterProxy.Get().SetPause(true); LevelManagerProxy.Get().OnLevelEnd(); this.RegisterAsListener("Game", typeof(GameFlowEvent)); }
private void Update() { m_MoveNumber.text = LevelManagerProxy.Get().GetNumberOfMove().ToString(); }
void Start() { TileCoordinates levelDimension = LevelManagerProxy.Get().GetLevelDimension(); transform.position = new Vector3(levelDimension.x.ToWorldUnit() / 2, levelDimension.y.ToWorldUnit() / 2, transform.position.z); }
public override void OnEnter() { LevelManagerProxy.Get().LoadScene(1); this.RegisterAsListener("Game", typeof(GameFlowEvent)); this.RegisterAsListener("Player", typeof(GameOverGameEvent), typeof(PlayerInputGameEvent)); }