private void ViewPieces_Click(object sender, EventArgs e) { ViewPieceMode = true; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.SwitchViewMovePiece)); _movePieceItem.Enabled = true; _viewPieceItem.Enabled = false; }
private void MediumZoomOut_Click(object sender, EventArgs e) { if (Game.Zoom != -4) { Game.Zoom = -4; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ZoomChanged)); } }
private void StandardZoom_Click(object sender, EventArgs e) { if (Game.Zoom != 0) { Game.Zoom = 0; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ZoomChanged)); } }
private void MaxZoomIn_Click(object sender, EventArgs e) { if (Game.Zoom != 8) { Game.Zoom = 8; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ZoomChanged)); } }
private void Panel_Click(object sender, MouseEventArgs e) { if (WaitingAtEndOfTurn) { //Game.NewPlayerTurn(); } else { Map.ViewPieceMode = !Map.ViewPieceMode; unitPanel.Invalidate(); OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.SwitchViewMovePiece)); } }
private void Panel_Click(object sender, MouseEventArgs e) { if (WaitingAtEndOfTurn) { WaitingAtEndOfTurn = false; Game.NewPlayerTurn(); } else { _main.ViewPieceMode = !_main.ViewPieceMode; UnitPanel.Refresh(); OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.SwitchViewMovePiece)); } }
// TODO: Make sure minimap rectangle is correct immediately after game loading private void DrawPanel_MouseClick(object sender, MouseEventArgs e) { if (e.Buttons == MouseButtons.Primary) { int clickedX = (int)e.Location.X; int clickedY = (int)e.Location.Y; // Determine if you clicked within the drawn minimap if (clickedX >= Offset[0] && clickedX < Offset[0] + 2 * Map.Xdim && clickedY >= Offset[1] && clickedY < Offset[1] + Map.Ydim) { OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.MapViewChanged, new int[] { clickedX - Offset[0], clickedY - Offset[1] })); } } else { // TODO: right click logic on minimap panel } }
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.NumPad1: { if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.MoveSW); } else if (ViewPieceMode) { Game.ActiveXY[0]--; Game.ActiveXY[1]++; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ViewPieceMoved)); } break; } case Keys.Down: case Keys.NumPad2: { if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.MoveS); } else if (ViewPieceMode) { Game.ActiveXY[1] += 2; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ViewPieceMoved)); } break; } case Keys.NumPad3: { if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.MoveSE); } else if (ViewPieceMode) { Game.ActiveXY[0]++; Game.ActiveXY[1]++; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ViewPieceMoved)); } break; } case Keys.Left: case Keys.NumPad4: { if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.MoveW); } else if (ViewPieceMode) { Game.ActiveXY[0] -= 2; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ViewPieceMoved)); } break; } case Keys.Right: case Keys.NumPad6: { if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.MoveE); } else if (ViewPieceMode) { Game.ActiveXY[0] += 2; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ViewPieceMoved)); } break; } case Keys.NumPad7: { if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.MoveNW); } else if (ViewPieceMode) { Game.ActiveXY[0]--; Game.ActiveXY[1]--; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ViewPieceMoved)); } break; } case Keys.Up: case Keys.NumPad8: { if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.MoveN); } else if (ViewPieceMode) { Game.ActiveXY[1] -= 2; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ViewPieceMoved)); } break; } case Keys.NumPad9: { if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.MoveNE); } else if (ViewPieceMode) { Game.ActiveXY[0]++; Game.ActiveXY[1]--; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ViewPieceMoved)); } break; } case Keys.B: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.BuildCity); } break; case Keys.F: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.Fortify); } break; case Keys.G: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.GoTo); } break; case Keys.H: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.GoHome); } break; case Keys.I: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.BuildIrrigation); } break; case Keys.K: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.Automate); } break; case Keys.M: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.BuildMine); } break; case Keys.O: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.Transform); } break; case Keys.P: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.CleanPollution); } break; case Keys.R: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.BuildRoad); } break; case Keys.S: if (!ViewPieceMode && Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.Sleep); } break; case Keys.Enter: if (Game.Options.AlwaysWaitAtEndOfTurn && !Game.PlayerCiv.AnyUnitsAwaitingOrders) { Game.NewPlayerTurn(); } else { OnCheckIfCityCanBeViewed?.Invoke(null, new CheckIfCityCanBeViewedEventArgs()); //if enter pressed when view piece above city --> enter city view } break; case Keys.Space: if (Game.ActiveUnit?.MovementCounter == 0) { Game.IssueUnitOrder(OrderType.SkipTurn); } break; case Keys.W: if (Game.ActiveUnit != null) { Game.ChooseNextUnit(); } break; case Keys.Y: { if (Game.WhichCivsMapShown == Game.ActiveCiv.Id) { Game.WhichCivsMapShown = 8; //show entire map } else if (Game.WhichCivsMapShown == 8) { Game.WhichCivsMapShown = Game.ActiveCiv.Id; //show current civ's map view } OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ToggleBetweenCurrentEntireMapView)); break; } //TODO: case Keys.U: unload //TODO: case Keys.A: activate unit //TODO: case Keys.X: zoom out //TODO: case Keys.Z: zoom in //TODO: case (Keys.Control | Keys.N): EndPlayerTurn_Click(null, null); break; //TODO: case (Keys.Shift | Keys.C): FindCity_Click(null, null); break; //TODO: case (Keys.Shift | Keys.D): Disband_Click(null, null); break; //TODO: case (Keys.Shift | Keys.H): ViewThroneRoom_Click(null, null); break; //TODO: case (Keys.Shift | Keys.P): Pillage_Click(null, null); break; //TODO: case (Keys.Shift | Keys.R): Revolution_Click(null, null); break; //TODO: case (Keys.Shift | Keys.T): TaxRate_Click(null, null); break; } return(base.ProcessCmdKey(ref msg, keyData)); }
private void DrawPanel_MouseClick(object sender, MouseEventArgs e) { // If clicked location is beyond map limits --> exit method if (e.Location.X < mapDest.X || e.Location.X > mapDest.X + mapSrc1.Width || e.Location.Y < mapDest.Y || e.Location.Y > mapDest.Y + mapSrc1.Height) { return; } // Else you clicked within the map int clickedX = (int)e.Location.X - mapDest.X; int clickedY = (int)e.Location.Y - mapDest.Y; clickedXY = PxToCoords(clickedX, clickedY, Map.Zoom); clickedXY[0] += mapStartXY[0]; clickedXY[1] += mapStartXY[1]; Debug.WriteLine($"clickedXY={clickedXY[0]},{clickedXY[1]}"); // TODO: Make sure that edge black tiles are also ignored! //clickedXY = new int[] { (MapPanel_offset[0] + coords[0]) % (2 * Map.Xdim), MapPanel_offset[1] + coords[1] }; // Coordinates of clicked square if (e.Buttons == MouseButtons.Primary) // Left button { // City clicked if (Game.GetCities.Any(city => city.X == clickedXY[0] && city.Y == clickedXY[1])) { if (Map.ViewPieceMode) { Map.ActiveXY = clickedXY; } var cityPanel = new CityPanel(main, Game.GetCities.Find(city => city.X == clickedXY[0] && city.Y == clickedXY[1]), 658, 459); // For normal zoom MainPanelLayout.Add(cityPanel, (drawPanel.Width / 2) - (cityPanel.Width / 2), (drawPanel.Height / 2) - (cityPanel.Height / 2)); MainPanel.Content = MainPanelLayout; } // Unit clicked else if (Game.GetUnits.Any(unit => unit.X == clickedXY[0] && unit.Y == clickedXY[1])) { int clickedUnitIndex = Game.GetUnits.FindIndex(a => a.X == clickedXY[0] && a.Y == clickedXY[1]); if (!Game.GetUnits[clickedUnitIndex].TurnEnded) { Game.SetActiveUnit(Game.GetUnits[clickedUnitIndex]); Map.ViewPieceMode = false; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.SwitchViewMovePiece)); StartAnimation(AnimationType.Waiting); } else { //TODO: determine what happens if unit has ended turn... } MapViewChange(clickedXY); } // Something else clicked else { if (Map.ViewPieceMode) { Map.ActiveXY = clickedXY; } MapViewChange(clickedXY); OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.MapViewChanged)); } } else // Right click { Map.ViewPieceMode = true; Map.ActiveXY = clickedXY; if (!Map.ViewPieceMode) { OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.SwitchViewMovePiece)); } else { OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.MapViewChanged)); } MapViewChange(clickedXY); StartAnimation(AnimationType.Waiting); } }
private void CenterView_Click(object sender, EventArgs e) { OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.CenterView)); }
private void ShowMapGrid_Click(object sender, EventArgs e) { Game.Options.Grid = !Game.Options.Grid; _showMapGridItem.Checked = Game.Options.Grid; OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ToggleGrid)); }