private GameMenu.Item MenuBuildFortress() { GameMenu.Item item = new GameMenu.Item("Build fortress", "f"); if (!Game.CurrentPlayer.HasAdvance <Construction>()) { item.Enabled = false; } else { item.Selected += (s, a) => GameTask.Enqueue(Orders.BuildFortress(this)); } return(item); }
private bool KeyDownActiveUnit(KeyboardEventArgs args) { if (Game.ActiveUnit == null || Game.ActiveUnit.Moving) { return(false); } if (args.Key == Key.Space) { Game.ActiveUnit.SkipTurn(); return(true); } else if (Settings.ArrowHelper) { switch (args.Key) { case Key.NumPad1: case Key.End: return(MoveTo(-1, 1)); case Key.NumPad2: return(MoveTo(0, 1)); case Key.NumPad3: case Key.PageDown: return(MoveTo(1, 1)); case Key.NumPad4: return(MoveTo(-1, 0)); case Key.NumPad5: GameTask.Enqueue(Show.Empty); return(true); case Key.NumPad6: return(MoveTo(1, 0)); case Key.NumPad7: case Key.Home: return(MoveTo(-1, -1)); case Key.NumPad8: return(MoveTo(0, -1)); case Key.NumPad9: case Key.PageUp: return(MoveTo(1, -1)); case Key.Escape: _helperDirection = new Point(0, 0); return(true); case Key.Down: _helperDirection.Y++; break; case Key.Up: _helperDirection.Y--; break; case Key.Left: _helperDirection.X--; break; case Key.Right: _helperDirection.X++; break; default: _helperDirection = new Point(0, 0); break; } if (Math.Abs(_helperDirection.X) + Math.Abs(_helperDirection.Y) >= 2) { int x = 0, y = 0; if (_helperDirection.X < 0) { x = -1; } else if (_helperDirection.X > 0) { x = 1; } if (_helperDirection.Y < 0) { y = -1; } else if (_helperDirection.Y > 0) { y = 1; } _helperDirection = new Point(0, 0); return(MoveTo(x, y)); } } else { switch (args.Key) { case Key.NumPad1: case Key.End: return(MoveTo(-1, 1)); case Key.NumPad2: case Key.Down: return(MoveTo(0, 1)); case Key.NumPad3: case Key.PageDown: return(MoveTo(1, 1)); case Key.NumPad4: case Key.Left: return(MoveTo(-1, 0)); case Key.NumPad5: GameTask.Enqueue(Show.Empty); return(true); case Key.NumPad6: case Key.Right: return(MoveTo(1, 0)); case Key.NumPad7: case Key.Home: return(MoveTo(-1, -1)); case Key.NumPad8: case Key.Up: return(MoveTo(0, -1)); case Key.NumPad9: case Key.PageUp: return(MoveTo(1, -1)); } } switch (args.KeyChar) { case 'B': GameTask.Enqueue(Orders.FoundCity(Game.ActiveUnit)); return(true); case 'C': if (Game.ActiveUnit == null) { break; } CenterOnUnit(); return(true); case 'D': if (!args.Shift) { break; } Game.DisbandUnit(Game.ActiveUnit); return(true); case 'H': Game.ActiveUnit.SetHome(); return(true); case 'I': GameTask.Enqueue(Orders.BuildIrrigation(Game.ActiveUnit)); return(true); case 'M': GameTask.Enqueue(Orders.BuildMines(Game.ActiveUnit)); break; case 'R': GameTask.Enqueue(Orders.BuildRoad(Game.ActiveUnit)); break; case 'S': Game.ActiveUnit.Sentry = true; break; case 'F': if (Game.ActiveUnit is Settlers) { GameTask.Enqueue(Orders.BuildFortress(Game.ActiveUnit)); break; } Game.ActiveUnit.Fortify = true; break; case 'U': if (Game.ActiveUnit is IBoardable) { return((Game.ActiveUnit as BaseUnitSea).Unload());; } break; case 'W': GameTask.Enqueue(Orders.Wait(Game.ActiveUnit)); break; } return(false); }
private MenuItem <int> MenuBuildFortress() => MenuItem <int> .Create("Build fortress") .SetShortcut("f") .SetEnabled(Game.CurrentPlayer.HasAdvance <Construction>()) .OnSelect((s, a) => GameTask.Enqueue(Orders.BuildFortress(this)));
private bool KeyDownActiveUnit(KeyboardEventArgs args) { if (Game.ActiveUnit == null || Game.ActiveUnit.Moving) { return(false); } switch (args.Key) { case Key.Space: Game.ActiveUnit.SkipTurn(); return(true); case Key.NumPad1: return(MoveTo(-1, 1)); case Key.NumPad2: case Key.Down: return(MoveTo(0, 1)); case Key.NumPad3: return(MoveTo(1, 1)); case Key.NumPad4: case Key.Left: return(MoveTo(-1, 0)); case Key.NumPad5: GameTask.Enqueue(Show.Empty); return(true); case Key.NumPad6: case Key.Right: return(MoveTo(1, 0)); case Key.NumPad7: return(MoveTo(-1, -1)); case Key.NumPad8: case Key.Up: return(MoveTo(0, -1)); case Key.NumPad9: return(MoveTo(1, -1)); } switch (args.KeyChar) { case 'B': GameTask.Enqueue(Orders.FoundCity(Game.ActiveUnit)); return(true); case 'C': if (Game.ActiveUnit == null) { break; } CenterOnUnit(); return(true); case 'D': if (!args.Shift) { break; } Game.DisbandUnit(Game.ActiveUnit); return(true); case 'H': Game.ActiveUnit.SetHome(); return(true); case 'I': GameTask.Enqueue(Orders.BuildIrrigation(Game.ActiveUnit)); return(true); case 'M': GameTask.Enqueue(Orders.BuildMines(Game.ActiveUnit)); break; case 'R': GameTask.Enqueue(Orders.BuildRoad(Game.ActiveUnit)); break; case 'S': Game.ActiveUnit.Sentry = true; break; case 'F': if (Game.ActiveUnit is Settlers) { GameTask.Enqueue(Orders.BuildFortress(Game.ActiveUnit)); break; } Game.ActiveUnit.Fortify = true; break; case 'U': if (Game.ActiveUnit is IBoardable) { return((Game.ActiveUnit as BaseUnitSea).Unload());; } break; case 'W': GameTask.Enqueue(Orders.Wait(Game.ActiveUnit)); break; } return(false); }