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());
                }
            }
        }
Beispiel #2
0
            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);
                }
            }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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;
        }
Beispiel #6
0
        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();
        }
Beispiel #7
0
 private void Awake()
 {
     if (instance != null && instance != this)
     {
         Destroy(this.gameObject);
     }
     else
     {
         instance = this;
     }
 }
Beispiel #8
0
        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();
        }
Beispiel #10
0
    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");
                }
            }
Beispiel #14
0
 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);
         }
     }
 }
Beispiel #15
0
        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);
        }
Beispiel #16
0
    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;
        }
    }
Beispiel #17
0
 public override void Initialize()
 {
     m_TurnManager = GameTurnManager.GetInstance();
 }