public void OnKeyboardDown(MagecrawlKey key, Map map, GameWindow window, IGameEngine engine) { switch (key) { case MagecrawlKey.Enter: { ICharacter possiblyTargettedMonster = engine.Map.Monsters.Where(x => x.Position == map.TargetPoint).FirstOrDefault(); // Rememeber last targetted monster so we can target them again by default next turn. if (m_targettingType == TargettingType.Monster && possiblyTargettedMonster != null) m_lastTargetted = possiblyTargettedMonster; if (m_action != null) { m_action(window, engine, map.TargetPoint); m_action = null; } Escape(map, window); break; } case MagecrawlKey.Escape: { Escape(map, window); break; } case MagecrawlKey.v: { Escape(map, window); break; } case MagecrawlKey.Left: HandleDirection(Direction.West, map, window, engine); break; case MagecrawlKey.Right: HandleDirection(Direction.East, map, window, engine); break; case MagecrawlKey.Down: HandleDirection(Direction.South, map, window, engine); break; case MagecrawlKey.Up: HandleDirection(Direction.North, map, window, engine); break; case MagecrawlKey.Insert: HandleDirection(Direction.Northwest, map, window, engine); break; case MagecrawlKey.Delete: HandleDirection(Direction.Southwest, map, window, engine); break; case MagecrawlKey.PageUp: HandleDirection(Direction.Northeast, map, window, engine); break; case MagecrawlKey.PageDown: HandleDirection(Direction.Southeast, map, window, engine); break; default: break; } }
public void Select() { OnTargetSelect?.Invoke(this); // select next target for shooting }
public TargettingModeKeyboardHandler(TargettingType targettingType, IGameEngine engine, Map map, OnTargetSelect selectionAction, List<EffectivePoint> targetablePoints) : this(targettingType, engine, map, targetablePoints) { m_action = selectionAction; }