예제 #1
0
        /// <summary>
        /// Handles the typing in the control.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnKeyDown(KeyEventArgs e)
        {
            ClientApplication client = ClientApplication.Instance;
            GameRoot          root   = client.ServerInstance;

            if (e.KeyCode == Keys.Space)
            {
                if (root.ActiveCountry.NotifyEndOfTurn)
                {
                    root.ActivateNextCountry();
                }
                else
                {
                    root.ActivateNextUnit();
                }
                return;
            }

            Unit unit = root.ActiveUnit;

            if (unit == null)
            {
                return;
            }

            Point newCoordinates = Point.Empty;

            switch (e.KeyCode)
            {
            case Keys.NumPad3:
                newCoordinates = new Point(unit.Coordinates.X + 1, unit.Coordinates.Y + 1);
                break;

            case Keys.NumPad7:
                newCoordinates = new Point(unit.Coordinates.X - 1, unit.Coordinates.Y - 1);
                break;

            case Keys.NumPad1:
                newCoordinates = new Point(unit.Coordinates.X - 1, unit.Coordinates.Y + 1);
                break;

            case Keys.NumPad9:
                newCoordinates = new Point(unit.Coordinates.X + 1, unit.Coordinates.Y - 1);
                break;

            case Keys.NumPad4:
                newCoordinates = new Point(unit.Coordinates.X - 1, unit.Coordinates.Y);
                break;

            case Keys.NumPad6:
                newCoordinates = new Point(unit.Coordinates.X + 1, unit.Coordinates.Y);
                break;

            case Keys.NumPad2:
                newCoordinates = new Point(unit.Coordinates.X, unit.Coordinates.Y + 1);
                break;

            case Keys.NumPad8:
                newCoordinates = new Point(unit.Coordinates.X, unit.Coordinates.Y - 1);
                break;
            }

            if (newCoordinates == Point.Empty)
            {
                return;
            }
            unit.MoveTo(newCoordinates);
            Invalidate();
        }