Пример #1
0
    void NextEntityTurn()
    {
        TurnBaseRuningState completeResult = GetTurnCompleteResult();

        if (completeResult == TurnBaseRuningState.NextEntityTurn)
        {
            if (curController != null)
            {
                Debug.LogError("当前有正在行动的Entity");
            }
            else if (m_ReadyControllerList.Count > 0)
            {
                CControllerComponent target = m_ReadyControllerList[0];
                m_ReadyControllerList.RemoveAt(0);
                curController = target;
                curController.TurnStart(this);
            }
            else
            {
                Complete(TurnBaseRuningState.NextTurn);
            }
        }
        else
        {
            Complete(completeResult);
        }
    }
Пример #2
0
 /// <summary>
 /// 由CTurnBaseComponent调用
 /// </summary>
 /// <param name="target"></param>
 public void OnEntityTurnComplete(CControllerComponent controller)
 {
     if (this.curController == controller)
     {
         this.curController = null;
         NextEntityTurn();
     }
 }
Пример #3
0
 void OnTurnStart(CControllerComponent t)
 {
     m_PropertyComponent = t.entity.GetCComponent <CPropertyComponent>();
     m_PropertyComponent.onMovePointChanged.AddListener(OnMovePointChanged);
     m_PropertyComponent.onHpChanged.AddListener(UpdateHp);
     UpdateHp(m_PropertyComponent);
     UpdateMovePoint(m_PropertyComponent);
     UpdateEndTurnButtonState();
 }
Пример #4
0
 void OnTurnComplete(CControllerComponent t)
 {
     UpdateEndTurnButtonState();
     if (m_PropertyComponent != null)
     {
         m_PropertyComponent.onMovePointChanged.RemoveListener(OnMovePointChanged);
         m_PropertyComponent.onHpChanged.RemoveListener(UpdateHp);
         m_PropertyComponent = null;
     }
 }
Пример #5
0
 bool RemoveFromAliveController(CControllerComponent controller)
 {
     if (controller != null && m_AliveControllerList.Remove(controller))
     {
         controller.onTurnBaseValueChanged.RemoveListener(OnEntityTurnBaseValueChanged);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #6
0
 bool RemoveFromReadyController(CControllerComponent t)
 {
     if (t != null && m_ReadyControllerList.Remove(t))
     {
         UpdateReadControllerSort();
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #7
0
 bool AddToAliveController(CControllerComponent controller)
 {
     if (controller != null && !m_AliveControllerList.Contains(controller))
     {
         m_AliveControllerList.Add(controller);
         controller.onTurnBaseValueChanged.AddListener(OnEntityTurnBaseValueChanged);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #8
0
 bool AddToReadyController(CControllerComponent controller)
 {
     if (controller != null && !m_ReadyControllerList.Contains(controller))
     {
         m_ReadyControllerList.Add(controller);
         UpdateReadControllerSort();
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #9
0
    void OnEntityBorn(Entity entity)
    {
        CControllerComponent t = entity.GetCComponent <CControllerComponent>();

        if (t != null)
        {
            //当前回合出生的Entity要到下一回合才可以行动
            AddToAliveController(t);
            if (state == State.Ready)
            {
                AddToReadyController(t);
            }
        }
    }
Пример #10
0
 public TurnBase(int turnCounter)
 {
     this.turnCounter = turnCounter;
     state            = State.Ready;
     //添加现有的Entity
     foreach (Entity entity in LevelManager.room.entities)
     {
         CControllerComponent controller = entity.GetCComponent <CControllerComponent>();
         if (controller != null)
         {
             AddToAliveController(controller);
             AddToReadyController(controller);
         }
     }
     GameEvent.EntityEvent.onEntityBorn.AddListener(OnEntityBorn);
     GameEvent.EntityEvent.onEntityDead.AddListener(OnEntityDead);
 }
Пример #11
0
    public void SetController(CControllerComponent t)
    {
        m_Text.text = t.entity.keyName;
        Relation relation = CTeamComponent.GetRelation(TeamId.Team_0, t.teamId);

        switch (relation)
        {
        case Relation.Enemy:
            m_Image.color = Color.red;
            break;

        case Relation.Teammate:
            m_Image.color = Color.green;
            break;
        }
        gameObject.SetActive(true);
    }
Пример #12
0
 /// <summary>
 /// 结束回合
 /// </summary>
 void Complete(TurnBaseRuningState result)
 {
     if (state == State.Playing)
     {
         state = State.Complete;
         if (m_AliveControllerList.Count > 0)
         {
             List <CControllerComponent> tempList = new List <CControllerComponent>(m_AliveControllerList);
             foreach (CControllerComponent t in tempList)
             {
                 RemoveFromAliveController(t);
             }
             tempList.Clear();
         }
         m_ReadyControllerList.Clear();
         curController = null;
         GameEvent.EntityEvent.onEntityBorn.RemoveListener(OnEntityBorn);
         GameEvent.EntityEvent.onEntityDead.RemoveListener(OnEntityDead);
         GameEvent.TurnBaseEvent.FireOnTurnComplete(this, result);
         TurnBaseManager.instance.OnTurnComplete(this, result);  //单独回调,保证CombatComplete消息在TurnComplete后
     }
 }
Пример #13
0
 public static void FireOnEntityTurnStart(CControllerComponent controller)
 {
     Debug.LogError(controller.entity.keyName + " 开始行动");
     onEntityTurnStart.Invoke(controller);
 }
Пример #14
0
 void OnEntityTurnBaseValueChanged(CControllerComponent t)
 {
     UpdateReadControllerSort();
 }
Пример #15
0
 void OnTurnStart(CControllerComponent t, TurnBase turnBase)
 {
     m_CurTurn.gameObject.SetActive(true);
 }
Пример #16
0
 void OnTurnComplete(CControllerComponent t, TurnBase turnBase)
 {
     m_CurTurn.gameObject.SetActive(false);
 }
Пример #17
0
 void OnEntityTurnStart(CControllerComponent controller)
 {
     m_RTSCamera.JumpTo(controller.entity.transform);
     m_RTSCamera.Follow(controller.entity.transform);
 }
Пример #18
0
 public static void FireOnEntityTurnComplete(CControllerComponent controller)
 {
     Debug.LogError(controller.entity.keyName + " 结束行动");
     onEntityTurnComplete.Invoke(controller);
 }