Пример #1
0
 private void btnSurrender_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("Are you sure you want to raise the white flag?", "Confirm Resignation", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
     {
         StartForm.Send(new Packet(PacketId.ResignRequest, new JObject()));
     }
 }
Пример #2
0
        void demandProcesses(ChessPlayer player)
        {
            setItems(false);
            var jobj = new JObject();

            jobj["id"] = player.Id;
            StartForm.Send(new Packet(PacketId.RequestProcesses, jobj));
            resetTimer.Start();
        }
Пример #3
0
        void demandScreen(ChessPlayer player)
        {
            if (player == null)
            {
                return;
            }
            var jobj = new JObject();

            jobj["id"] = player.Id;
            StartForm.Send(new Packet(PacketId.RequestScreen, jobj));
        }
Пример #4
0
        void makeWin(ChessPlayer winner)
        {
            if (MessageBox.Show($"Are you sure you want to make {(winner?.Name ?? "a draw")} win?", "Winner", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
                != DialogResult.Yes)
            {
                return;
            }
            setItems(false);
            int id   = winner?.Id ?? -1;
            var jobj = new JObject();

            jobj["id"] = id;
            StartForm.Send(new Packet(PacketId.RequestGameEnd, jobj));
            resetTimer.Start();
        }
Пример #5
0
 private void btnUndoMove_Click(object sender, EventArgs e)
 {
     setItems(false);
     StartForm.Send(new Packet(PacketId.RequestRevertMove, new JObject()));
     resetTimer.Start();
 }
Пример #6
0
        public void Btn_Click(object sender, EventArgs e)
        {
            if (sender is ChessButton btn)
            {
                if (Control.ModifierKeys.HasFlag(Keys.Shift))
                {
                    string move = "Can Move:";
                    foreach (var piece in btn.CanMoveHere)
                    {
                        move += $"\n{piece.Owner} - {piece.Type} @ {piece.Location.Name}";
                    }
                    MessageBox.Show(move);
                    return;
                }
                if (Main.Game.Waiting != Main.Self.Side)
                {
                    return;
                }
                if (handlingMove)
                {
                    return;
                }
                if (firstClick == null)
                {
                    if (btn.PieceHere == null)
                    {
                        return;
                    }
                    if (btn.PieceHere?.Owner != Main.Self.Side)
                    {
                        return; // cant move opponent's pieces
                    }
                    firstClick = btn;
                    firstClick.Evaluate(true);
                }
                else
                {
                    if (firstClick == btn)
                    {
                        firstClick.Evaluate(false);
                    }
                    else if (btn.BackColor == Color.FromKnownColor(KnownColor.Control) || btn.BackColor == Color.Gray || btn.BackColor == Color.Purple)
                    {
                        firstClick.Evaluate(false);
                    }
                    else
                    {
                        if (willKingStillCheck(firstClick, btn))
                        {
                            MessageBox.Show("Your King is in Check!\nYou must defend your king.");
                            return;
                        }

                        var jobj = new JObject();
                        if (firstClick.PieceHere.Type == PieceType.Pawn)
                        {
                            if ((Main.Self.Side == PlayerSide.Black && btn.Name.EndsWith("1")) ||
                                (Main.Self.Side == PlayerSide.White && btn.Name.EndsWith("8")))
                            {
                                var promote = new PromoteForm(this);
                                promote.ShowDialog();
                                if (promote.Selected == PieceType.Pawn)
                                {
                                    MessageBox.Show("You must promote your pawn!");
                                    return;
                                }
                                jobj["promote"] = (int)promote.Selected;
                            }
                        }
                        handlingMove = true;
                        jobj["from"] = firstClick.Name;
                        jobj["to"]   = btn.Name;
                        timerUnlockButtons.Start();
                        StartForm.Send(new Packet(PacketId.MoveRequest, jobj));
                    }
                    firstClick = null;
                }
            }
        }