Example #1
0
 private void ViewPieces_Click(object sender, EventArgs e)
 {
     ViewPieceMode = true;
     OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.SwitchViewMovePiece));
     _movePieceItem.Enabled = true;
     _viewPieceItem.Enabled = false;
 }
Example #2
0
 private void MediumZoomOut_Click(object sender, EventArgs e)
 {
     if (Game.Zoom != -4)
     {
         Game.Zoom = -4;
         OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ZoomChanged));
     }
 }
Example #3
0
 private void StandardZoom_Click(object sender, EventArgs e)
 {
     if (Game.Zoom != 0)
     {
         Game.Zoom = 0;
         OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.ZoomChanged));
     }
 }
Example #4
0
 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));
     }
 }
Example #6
0
 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
            }
        }
Example #8
0
        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));
        }
Example #9
0
        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);
            }
        }
Example #10
0
 private void CenterView_Click(object sender, EventArgs e)
 {
     OnMapEvent?.Invoke(null, new MapEventArgs(MapEventType.CenterView));
 }
Example #11
0
 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));
 }