Exemplo n.º 1
0
        public override bool Do(Brain brain)
        {
            BattleFieldEvent battleAction = actionCreator.TryCreateAction(brain);

            if (battleAction != null)
            {
                brain.pendingBattleActions.Enqueue(battleAction);
                return(true);
            }
            return(false);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        // 【大脑的输入】
        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);
                }
            }
        }
Exemplo n.º 4
0
 public void UpdateValues(BattleFieldEvent battleAction)
 {
 }