Пример #1
0
        private void UpdateStopped(GameTime gameTime)
        {
            // figure out if there is an object ready
            if(_activeBattleObject == null && _activeBattleObjectsToProcess.Count > 0) {
                _activeBattleObject = _activeBattleObjectsToProcess.Dequeue();

                if(_activeBattleObject.Enemy) {
                    Attack(_activeBattleObject, _playerParty[0], _activeBattleObject.AttackList[0]);
                } else {
                    _battleMenuView = new BattleObjectMenuView(_game, _activeBattleObject, this);
                }
            }
        }
Пример #2
0
        private void Attack(BattleObject from, BattleObject to, string actionText)
        {
            // find the action from the list loaded in
            var actions = _game.Content.Load<Actions>(@"BattleXML/Actions");
            if(actions.ActionList.Any(x => x.Name == actionText)) {
                var action = actions.ActionList.First(x => x.Name == actionText);

                // determine the damage
                var damage = action.Damage * from.Str;
                to.HP -= damage;

                // start damage display (text of numbers popping up)
                InteractableBattleObjectView toBattleView = null;
                if(to.Enemy) {
                    toBattleView = _battleView.EnemyPartyView.First(x => x.Name == to.Name);
                } else {
                    toBattleView = _battleView.PlayerPartyView.First(x => x.Name == to.Name);
                }
                toBattleView.StartDamageText(damage);

                // start damage animation

                if(_activeBattleObjectsToProcess.Count == 0) {
                    _battleState = BattleState.ActiveTime;
                }
                _activeBattleObject = null;
                _battleMenuView = null;
            }
        }