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); }
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); }
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); }
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); }