예제 #1
0
        private FightComponentResult ProcessHotBarUseInput(ConsoleKey key)
        {
            var result = new FightComponentResult();

            switch (key)
            {
            case KeyMapping.Cancel:
                _componentState = FightComponentState.Fight;
                break;

            case KeyMapping.PreviousItem:
                _player.HotBar.SelectedSlot.PrevItem();
                break;

            case KeyMapping.NextItem:
                _player.HotBar.SelectedSlot.NextItem();
                break;

            case KeyMapping.Confirm:
                _player.HotBar.SelectedSlot.PressCurrentItem();
                _player.HotBar.SelectedSlot = null;
                _componentState             = FightComponentState.Fight;
                break;
            }

            return(result);
        }
예제 #2
0
        public FightComponentResult Process(ConsoleKey key)
        {
            var result = new FightComponentResult();

            switch (_componentState)
            {
            case FightComponentState.Fight:
                result = ProcessFightInput(key);
                break;

            case FightComponentState.HotBarUse:
                result = ProcessHotBarUseInput(key);
                break;
            }

            return(result);
        }
예제 #3
0
        public FightComponentResult Process(ConsoleKey key)
        {
            var result = new FightComponentResult();

            Thread.Sleep(1000);
            var target = _npc.CurrentScene.Characters.First(c => c != _npc);

            var attackSkill = _npc.Skills.First(s => s.SkillType == SkillType.Melee);

            if (_npc.Stats.ActionPoints < attackSkill.ActionPoints)
            {
                result.TurnEnd = true;
                return(result);
            }

            var skillResult = _npc.ApplySkill(_npc.Skills.First(s => s.SkillType == SkillType.Melee), target);

            if (!skillResult.IsSuccess)
            {
                _gameLog.WriteLine(skillResult.Comment);
            }
            else
            {
                if (skillResult.Damage >= 0)
                {
                    _gameLog.WriteLine(
                        $"{_npc.Name} deals {skillResult.Damage} damage to {target.Name}."
                        );
                }
                else
                {
                    _gameLog.WriteLine(
                        $"{_npc.Name} heals {target.Name} for {-skillResult.Damage} health points."
                        );
                }
            }

            return(result);
        }
예제 #4
0
        public FightComponentResult ProcessFightInput(ConsoleKey key)
        {
            var result = new FightComponentResult();

            switch (key)
            {
            case KeyMapping.HotBar_1:
                if (_player.HotBar.Slot1.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot1;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_2:
                if (_player.HotBar.Slot2.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot2;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_3:
                if (_player.HotBar.Slot3.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot3;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_4:
                if (_player.HotBar.Slot4.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot4;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_5:
                if (_player.HotBar.Slot5.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot5;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_6:
                if (_player.HotBar.Slot6.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot6;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_7:
                if (_player.HotBar.Slot7.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot7;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_8:
                if (_player.HotBar.Slot8.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot8;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_9:
                if (_player.HotBar.Slot9.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot9;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.HotBar_10:
                if (_player.HotBar.Slot10.IsOccupied)
                {
                    _player.HotBar.SelectedSlot = _player.HotBar.Slot10;
                    _player.HotBar.SelectedSlot.UpdateCharacterSelectList(_player);

                    _componentState = FightComponentState.HotBarUse;
                }
                break;

            case KeyMapping.EndTurn:
                result.TurnEnd = true;
                break;
            }

            return(result);
        }