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); } }
/// <summary> /// 由CTurnBaseComponent调用 /// </summary> /// <param name="target"></param> public void OnEntityTurnComplete(CControllerComponent controller) { if (this.curController == controller) { this.curController = null; NextEntityTurn(); } }
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(); }
void OnTurnComplete(CControllerComponent t) { UpdateEndTurnButtonState(); if (m_PropertyComponent != null) { m_PropertyComponent.onMovePointChanged.RemoveListener(OnMovePointChanged); m_PropertyComponent.onHpChanged.RemoveListener(UpdateHp); m_PropertyComponent = null; } }
bool RemoveFromAliveController(CControllerComponent controller) { if (controller != null && m_AliveControllerList.Remove(controller)) { controller.onTurnBaseValueChanged.RemoveListener(OnEntityTurnBaseValueChanged); return(true); } else { return(false); } }
bool RemoveFromReadyController(CControllerComponent t) { if (t != null && m_ReadyControllerList.Remove(t)) { UpdateReadControllerSort(); return(true); } else { return(false); } }
bool AddToAliveController(CControllerComponent controller) { if (controller != null && !m_AliveControllerList.Contains(controller)) { m_AliveControllerList.Add(controller); controller.onTurnBaseValueChanged.AddListener(OnEntityTurnBaseValueChanged); return(true); } else { return(false); } }
bool AddToReadyController(CControllerComponent controller) { if (controller != null && !m_ReadyControllerList.Contains(controller)) { m_ReadyControllerList.Add(controller); UpdateReadControllerSort(); return(true); } else { return(false); } }
void OnEntityBorn(Entity entity) { CControllerComponent t = entity.GetCComponent <CControllerComponent>(); if (t != null) { //当前回合出生的Entity要到下一回合才可以行动 AddToAliveController(t); if (state == State.Ready) { AddToReadyController(t); } } }
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); }
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); }
/// <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后 } }
public static void FireOnEntityTurnStart(CControllerComponent controller) { Debug.LogError(controller.entity.keyName + " 开始行动"); onEntityTurnStart.Invoke(controller); }
void OnEntityTurnBaseValueChanged(CControllerComponent t) { UpdateReadControllerSort(); }
void OnTurnStart(CControllerComponent t, TurnBase turnBase) { m_CurTurn.gameObject.SetActive(true); }
void OnTurnComplete(CControllerComponent t, TurnBase turnBase) { m_CurTurn.gameObject.SetActive(false); }
void OnEntityTurnStart(CControllerComponent controller) { m_RTSCamera.JumpTo(controller.entity.transform); m_RTSCamera.Follow(controller.entity.transform); }
public static void FireOnEntityTurnComplete(CControllerComponent controller) { Debug.LogError(controller.entity.keyName + " 结束行动"); onEntityTurnComplete.Invoke(controller); }