private void Select(GameObject _selectedPawn) { m_Cursor.transform.position = GetCursorPosition(_selectedPawn); GameMaster.GetInstance().TurnHistory_RemoveHighlightedEnemies(); GameMaster.GetInstance().TurnHistory_HighlightEnemy(_selectedPawn); ActionRunner runner = GameMaster.GetInstance().GetSelectedAction(); if (runner != null && runner.ActionDescription != null) { ISpecificActionDescription desc = runner.ActionDescription; if (desc.m_ShowHistoryPreview) { //preview the damages PawnStatistics targetStats = new PawnStatistics(_selectedPawn.GetComponent <PawnStatistics>()); PawnStatistics sourceStats = new PawnStatistics(GameTurnManager.GetInstance().GetCurrentPawnStatistics()); ResolveResult result = new ResolveResult(); desc.m_Power.Resolve(sourceStats, targetStats, result); //preview turn history List <GameObject> preview = GameTurnManager.GetInstance().Preview(_selectedPawn, targetStats, 10); GameMaster.GetInstance().m_UITurnHistory.ShowPreview(preview.ToArray()); } } }
private void UpdateUIState() { GameTurnManager turnMng = GameTurnManager.GetInstance(); int playerPawnCount = turnMng.m_PlayerPawns.Count; for (int i = 0; i < playerPawnCount; ++i) { GameObject pawn = turnMng.m_PlayerPawns[i]; PawnUI pawnUIComponent = pawn.GetComponent <PawnUI>(); if (pawnUIComponent == null) { Debug.LogError("The pawn " + pawn.name + " has no PawnUI component."); return; } PawnStatistics stat = pawn.GetComponent <PawnStatistics>(); if (stat == null) { Debug.LogError("The pawn " + pawn.name + " has no PawnStatistics component."); return; } m_Behavior.m_UIPawnState[i].SetHP(stat.m_HP, stat.m_MaxHP); m_Behavior.m_UIPawnState[i].SetMP(stat.m_MP, stat.m_MaxMP); } }
public void InitializeMagicList(MagicId[] _availableMagic) { m_ListContainer.SetActive(true); m_SelectedMagic.gameObject.SetActive(false); m_SelectedMagic.onCancel.RemoveAllListeners(); m_SelectedMagic.onCancel.AddListener(() => { ShowMagicList(); }); int btnId = 0; foreach (MagicId id in _availableMagic) { if (btnId == m_BtnMagic.Length) { break; } MagicDescription desc = MagicManager.GetInstance().GetDescription(id); if (desc == null) { Debug.LogError(string.Format("Can't find magic description with id {0}", id)); continue; } CustomButton btn = m_BtnMagic[btnId]; btn.GetComponentInChildren <Text>().text = desc.m_DisplayName; btn.onCancel.RemoveAllListeners(); btn.onCancel.AddListener(() => { Close(); }); MagicId capturedId = id; //necessary for the lambda to work btn.onClick.RemoveAllListeners(); btn.onClick.AddListener(() => { Clicked(capturedId); }); btn.gameObject.SetActive(true); PawnStatistics stats = GameTurnManager.GetInstance().GetCurrentPawnStatistics(); if (desc.m_Power.CanBeUsed(stats)) { btn.IsUnselectable = false; } else { btn.IsUnselectable = true; } btn.Send(WidgetEvent.Unselect); ++btnId; } for (int i = btnId; i < m_BtnMagic.Length; ++i) { m_BtnMagic[i].gameObject.SetActive(false); } m_BtnMagic[0].Send(WidgetEvent.Select); }
private void OnAttackEnemySelected(GameObject _enemy) { ActionRunner attackAction = GameTurnManager.GetInstance().GetCurrentPawn().GetComponent <PawnActions>().m_DefaultAttack; attackAction.m_Target = _enemy; attackAction.ActionDescription = GameTurnManager.GetInstance().GetCurrentPawn().GetComponent <PawnBehavior>().m_AttackDescription; GameMaster.GetInstance().SetSelectedAction(attackAction); GameMaster.GetInstance().ActionReady(); }
public void OnMagicClicked() { WidgetManager.GetInstance().Show(m_CanvasMagicList.gameObject, false, false); int characterId = GameTurnManager.GetInstance().GetCurrentPawn().GetComponent <PawnBehavior>().m_CharacterId; MagicId[] availableMagic = GameStateManager.GetInstance().GetCharacter(characterId).m_AvailableMagic; m_CanvasMagicList.InitializeMagicList(availableMagic); m_CanvasMagicList.OnClicked = OnMagicMagicSelected; }
public override void OnEnter() { //compute turns history GameTurnManager turnMng = GameTurnManager.GetInstance(); turnMng.Init(m_Behavior.m_Pawns); m_Behavior.m_UITurnHistory.UpdateTurnHistory(turnMng); //init ui state int playerPawnCount = turnMng.m_PlayerPawns.Count; for (int i = 0; i < playerPawnCount; ++i) { GameObject pawn = turnMng.m_PlayerPawns[i]; PawnUI pawnUIComponent = pawn.GetComponent <PawnUI>(); if (pawnUIComponent == null) { Debug.LogError("The pawn " + pawn.name + " has no PawnUI component."); return; } PawnStatistics stat = pawn.GetComponent <PawnStatistics>(); if (stat == null) { Debug.LogError("The pawn " + pawn.name + " has no PawnStatistics component."); return; } InitializePawnStatistics(pawn); m_Behavior.m_UIPawnState[i].gameObject.SetActive(true); m_Behavior.m_UIPawnState[i].SetAvatar(pawnUIComponent.m_TurnSprite); m_Behavior.m_UIPawnState[i].SetHP(stat.m_HP, stat.m_MaxHP); m_Behavior.m_UIPawnState[i].SetMP(stat.m_MP, stat.m_MaxMP); m_Behavior.m_UIPawnState[i].SetName(stat.m_PawnName); } //hide unused state ui. int UIStateCount = m_Behavior.m_UIPawnState.Length; for (int i = playerPawnCount; i < UIStateCount; ++i) { m_Behavior.m_UIPawnState[i].gameObject.SetActive(false); } m_Behavior.m_ActionsMenu.Hide(); m_FadeWidget.gameObject.SetActive(true); m_FadeWidget.color = m_InitColor; m_Runner.SetCurrentState((int)GameMasterState.PlayIntro, "Init state over"); AnimationEventLibrary.InitEventLibrary(); }
private void Awake() { if (instance != null && instance != this) { Destroy(this.gameObject); } else { instance = this; } }
private void InitializePawnStatistics(GameObject _pawn) { GameTurnManager turnMng = GameTurnManager.GetInstance(); PawnBehavior bhv = _pawn.GetComponent <PawnBehavior>(); Character savedCharacter = GameStateManager.GetInstance().GetCharacter(bhv.m_CharacterId); PawnStatistics stats = _pawn.GetComponent <PawnStatistics>(); savedCharacter.LoadTo(stats); }
public override void OnEnter() { foreach (GameObject obj in GameTurnManager.GetInstance().m_PlayerPawns) { PawnBehavior bhv = obj.GetComponent <PawnBehavior>(); PawnStatistics stats = obj.GetComponent <PawnStatistics>(); GameStateManager.GetInstance().GetCharacter(bhv.m_CharacterId).SaveFrom(stats); } GameSceneManager.GetInstance().Pop(true); LevelMaster.GetInstance().ComeBackFromBattle(); }
public void HighlightEnemy(GameObject _pawnToHighlight) { GameIteration currentTurn = GameTurnManager.GetInstance().m_CurrentIteration; HighlightEnemyFromGameTurn(_pawnToHighlight, currentTurn, 0); int offset = currentTurn.GetCount();// -GameTurnManager.GetInstance().m_CurrentTurnIdInCurrentIteration; foreach (GameIteration turn in GameTurnManager.GetInstance().m_NextIterations) { HighlightEnemyFromGameTurn(_pawnToHighlight, turn, offset); offset += turn.GetCount(); } }
void OnEnable() { GameTurnManager turnMng = GameTurnManager.GetInstance(); int enemyCount = turnMng.m_EnemiesPawns.Count; int buttonUsed = 0; for (int i = 0; i < enemyCount; ++i) { GameObject objPawn = turnMng.m_EnemiesPawns[i]; PawnBehavior bhv = objPawn.GetComponent <PawnBehavior>(); if (bhv.m_State == PawnState.Dead) { continue; } CustomButton btn = m_BtnEnemies[buttonUsed]; btn.gameObject.SetActive(true); Text txt = btn.transform.GetComponentInChildren <Text>(); txt.text = objPawn.GetComponent <PawnStatistics>().m_PawnName; btn.onClick.RemoveAllListeners(); btn.onClick.AddListener(() => { Click(objPawn); }); btn.onCancel.RemoveAllListeners(); btn.onCancel.AddListener(() => { Cancel(); }); btn.onSelect.RemoveAllListeners(); btn.onSelect.AddListener(() => { Select(objPawn); }); btn.onDeselect.RemoveAllListeners(); btn.onDeselect.AddListener(() => { Deselect(); }); btn.Send(WidgetEvent.Unselect); ++buttonUsed; } for (int i = buttonUsed; i < m_BtnEnemies.Length; ++i) { CustomButton btn = m_BtnEnemies[i]; btn.gameObject.SetActive(false); } m_BtnEnemies[0].Send(WidgetEvent.Select); m_Cursor.SetActive(true); }
public override void OnExecute() { GameTurnManager turnMng = GameTurnManager.GetInstance(); PawnActions actions = turnMng.GetCurrentPawn().GetComponent <PawnActions>(); ActionRunner selectedAction = actions.m_DefaultAttack; //Set target int id = Random.Range(0, turnMng.m_PlayerPawns.Count); GameObject obj = turnMng.m_PlayerPawns[id]; selectedAction.m_Target = obj; selectedAction.ActionDescription = turnMng.GetCurrentPawn().GetComponent <PawnBehavior>().m_AttackDescription; //Set the action to run and go to next state m_Behavior.SetSelectedAction(selectedAction); m_Behavior.ActionReady(); m_Runner.SetCurrentState((int)RunSingleTurnState.RunAction, "AI has selected action"); }
public override void OnEnter() { GameTurnManager turnMng = GameTurnManager.GetInstance(); m_Behavior.m_UITurnHistory.UpdateTurnHistory(turnMng); GameObject obj = turnMng.GetCurrentPawn(); PawnStatistics stat = obj.GetComponent <PawnStatistics>(); if (stat.m_IsControlledByPlayer) { m_Runner.SetCurrentState((int)RunSingleTurnState.PlayerTurn, "Player turn"); } else { m_Runner.SetCurrentState((int)RunSingleTurnState.AITurn, "Enemy turn"); } }
void Awake() { if (m_instance == null) { //If I am the first instance, make me the Singleton m_instance = this; DontDestroyOnLoad(this.gameObject); } else { //If a Singleton already exists and you find //another reference in scene, destroy it! if (this != m_instance) { Destroy(this.gameObject); } } }
private void OnMagicMagicSelected(MagicId _id) { //get the action MagicDescription desc = MagicManager.GetInstance().GetDescription(_id); ActionRunner magicAction = GameTurnManager.GetInstance().GetCurrentPawn().GetComponent <PawnActions>().GetAction(_id); magicAction.ActionDescription = desc; //set the action in the game master GameMaster.GetInstance().SetSelectedAction(magicAction); //show enemy selection WidgetManager.GetInstance().Show(m_CanvasEnemyList.gameObject, false, false); m_CanvasEnemyList.OnEnemySelected = OnMagicEnemySelected; m_CanvasEnemyList.OnCanvasClosed = OnMagicEnemyClosed; m_CanvasEnemyList.Show(); m_CanvasEnemyList.SetColumn(1); }
public void UpdateTurnHistory(GameTurnManager _manager) { int historyCount = m_HistoryTurnImages.Length; //Set the current turn GameIteration currentTurn = _manager.m_CurrentIteration; int currentTurnId = 0; for (int i = 0; i < currentTurn.GetCount(); ++i) { GameObject pawnGameObject = currentTurn.GetPawn(i); if (currentTurnId >= historyCount) { return; } SetHistorySprite(currentTurnId, pawnGameObject); ++currentTurnId; } //Set the prediction turn foreach (GameIteration turnPrediction in _manager.m_NextIterations) { for (int i = 0; i < turnPrediction.GetCount(); ++i) { GameObject pawnGameObject = turnPrediction.GetPawn(i); if (currentTurnId >= historyCount) { return; } SetHistorySprite(currentTurnId, pawnGameObject); ++currentTurnId; } } //Leave blank space at the end. while (currentTurnId < historyCount) { SetHistorySpriteToNull(currentTurnId); ++currentTurnId; } }
public override void Initialize() { m_TurnManager = GameTurnManager.GetInstance(); }