public override bool Do(Brain brain) { BattleFieldEvent battleAction = actionCreator.TryCreateAction(brain); if (battleAction != null) { brain.pendingBattleActions.Enqueue(battleAction); return(true); } return(false); }
void OnBattleActionDidHappen(BattleFieldEvent battleAction) { // 1. 更新 battleFieldData dataPackBattleField.UpdateValues(battleAction); // 2. 更新 战队的信息 foreach (var d in dataPackBattleTeam) { d.Value.UpdateValues(battleAction); } // 3. 分发事件给大脑 if (null != onBattleAction) { onBattleAction.Invoke(battleAction); } }
// 【大脑的输入】 void HandleBattleAction(BattleFieldEvent battleAction) { // 1. 刷新数据 self // 可能会产生transition dataPackSelf.UpdateValues(battleAction); // 2. 刷新数据 relation // 可能会产生transition foreach (var d in dataPackRelation) { d.Value.UpdateValues(battleAction); } // 3. 判断 是否转变state while (pendingTransitions.Count > 0) { Transition transition = pendingTransitions.Dequeue(); if (Transition.IsValid(transition)) { pendingTransitions.Clear(); // 直接丢弃后边的transition? transition.DoTransition(this); } } }
public void UpdateValues(BattleFieldEvent battleAction) { }