コード例 #1
0
        private void ToggleSubbar()
        {
            var packet = new ScoreboardPacket {
                Commands = new[] { new EmptyPacketCommand {
                                       Command = CommandType.ToggleSubbar
                                   } }
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #2
0
        private void ToggleScoreboardVisible()
        {
            var packet = new ScoreboardPacket {
                Commands = new[] { new EmptyPacketCommand {
                                       Command = CommandType.ShowScoreboard
                                   } }
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #3
0
        private void SwapPlayers()
        {
            var packet = new ScoreboardPacket {
                Commands = new[] { new EmptyPacketCommand {
                                       Command = CommandType.SwapPlayer
                                   } }
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #4
0
        private void Player2NameChanged(Player obj)
        {
            var commands = new List <IScoreboardPacketCommand>();

            commands.Add(new StringPacketCommand {
                Command = CommandType.UpdatePlayerName, Player = 2, Data = Player2.Name
            });

            var packet = new ScoreboardPacket {
                Commands = commands.ToArray()
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #5
0
        private void Player2ColorChanged(Player obj)
        {
            var commands = new List <IScoreboardPacketCommand>();

            commands.Add(new BytePacketCommand {
                Command = CommandType.UpdatePlayerColor, Player = 2, Data = (byte)Player2.Color
            });

            var packet = new ScoreboardPacket {
                Commands = commands.ToArray()
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #6
0
        private void Player1ScoreChanged(Player obj)
        {
            var commands = new List <IScoreboardPacketCommand>();

            commands.Add(new Int32PacketCommand {
                Command = CommandType.UpdatePlayerScore, Player = 1, Data = Player1.Score
            });

            var packet = new ScoreboardPacket {
                Commands = commands.ToArray()
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #7
0
        private void Player2ScoreChanged(Player obj)
        {
            var commands = new List <IScoreboardPacketCommand>
            {
                new Int32PacketCommand
                {
                    Command = CommandType.UpdatePlayerScore, Player = 2, Data = this.Player2.Score
                }
            };

            var packet = new ScoreboardPacket {
                Commands = commands.ToArray()
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #8
0
        private void Player1NameChanged(Player obj)
        {
            var commands = new List <IScoreboardPacketCommand>
            {
                new StringPacketCommand
                {
                    Command = CommandType.UpdatePlayerName, Player = 1, Data = this.Player1.Name
                }
            };

            var packet = new ScoreboardPacket {
                Commands = commands.ToArray()
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #9
0
        private void Player1ColorChanged(Player obj)
        {
            var commands = new List <IScoreboardPacketCommand>
            {
                new BytePacketCommand
                {
                    Command = CommandType.UpdatePlayerColor, Player = 1, Data = (byte)this.Player1.Color
                }
            };

            var packet = new ScoreboardPacket {
                Commands = commands.ToArray()
            };

            this.scoreboardUpdater.SendPacket(packet);
        }
コード例 #10
0
        /// <summary> Handles all incoming network packets. </summary>
        /// <param name="packet"> The packet. </param>
        /// <param name="socket"> The active socket. </param>
        /// <param name="senderRemote"> The sender where the packet originated. </param>
        /// <exception cref="System.Net.Sockets.SocketException"> Thrown if a response failed to send. </exception>
        public void HandleRemoteCommands(ScoreboardPacket packet, Socket socket, EndPoint senderRemote)
        {
            foreach (var command in packet.Commands)
            {
                switch (command.Command)
                {
                case CommandType.UpdatePlayerName:
                {
                    var cmd = command as StringPacketCommand;

                    if (cmd != null)
                    {
                        if (cmd.Player == 1)
                        {
                            this.controlViewModel.Scoreboard.Player1.Name = cmd.Data;
                        }
                        else if (cmd.Player == 2)
                        {
                            this.controlViewModel.Scoreboard.Player2.Name = cmd.Data;
                        }
                    }

                    break;
                }

                case CommandType.UpdatePlayerScore:
                {
                    var cmd = command as Int32PacketCommand;

                    if (cmd != null)
                    {
                        if (cmd.Player == 1)
                        {
                            this.controlViewModel.Scoreboard.Player1.Score = cmd.Data;
                        }
                        else if (cmd.Player == 2)
                        {
                            this.controlViewModel.Scoreboard.Player2.Score = cmd.Data;
                        }
                    }

                    break;
                }

                case CommandType.UpdatePlayerColor:
                {
                    var cmd = command as BytePacketCommand;

                    if (cmd != null)
                    {
                        if (cmd.Player == 1)
                        {
                            this.controlViewModel.Scoreboard.Player1.Color = (PlayerColor)cmd.Data;
                        }
                        else if (cmd.Player == 2)
                        {
                            this.controlViewModel.Scoreboard.Player2.Color = (PlayerColor)cmd.Data;
                        }
                    }

                    break;
                }

                case CommandType.UpdatePlayerRace:
                {
                    var cmd = command as BytePacketCommand;

                    if (cmd != null)
                    {
                        if (cmd.Player == 1)
                        {
                            this.controlViewModel.Scoreboard.Player1.Race = (Race)cmd.Data;
                        }
                        else if (cmd.Player == 2)
                        {
                            this.controlViewModel.Scoreboard.Player2.Race = (Race)cmd.Data;
                        }
                    }

                    break;
                }

                case CommandType.ToggleAnnouncement:
                    this.controlViewModel.ToggleAnnouncement();
                    break;

                case CommandType.ToggleSubbar:
                    this.controlViewModel.ToggleSubbar();
                    break;

                case CommandType.SwapPlayer:
                    this.controlViewModel.SwapPlayers();
                    break;

                case CommandType.ShowScoreboard:
                    this.controlViewModel.ToggleScoreboardVisible();
                    break;

                case CommandType.HideScoreboard:
                    this.controlViewModel.ToggleScoreboardVisible();
                    break;

                case CommandType.ResetPlayer:
                {
                    var cmd = command as EmptyPacketCommand;

                    if (cmd != null)
                    {
                        if (cmd.Player == 1)
                        {
                            this.controlViewModel.Scoreboard.Player1.Reset();
                        }
                        else if (cmd.Player == 2)
                        {
                            this.controlViewModel.Scoreboard.Player2.Reset();
                        }
                    }

                    break;
                }

                case CommandType.IncrementPlayerScore:
                {
                    var cmd = command as EmptyPacketCommand;

                    if (cmd != null)
                    {
                        if (cmd.Player == 1)
                        {
                            this.controlViewModel.Scoreboard.Player1.Score++;
                        }
                        else if (cmd.Player == 2)
                        {
                            this.controlViewModel.Scoreboard.Player2.Score++;
                        }
                    }

                    break;
                }

                case CommandType.RetrievePlayerInformation:
                {
                    var cmd = command as EmptyPacketCommand;

                    if (cmd != null)
                    {
                        var commands = new List <IScoreboardPacketCommand>();
                        var player   = cmd.Player == 1
                                             ? this.controlViewModel.Scoreboard.Player1
                                             : this.controlViewModel.Scoreboard.Player2;

                        commands.Add(
                            new StringPacketCommand
                            {
                                Command = CommandType.UpdatePlayerName,
                                Player  = cmd.Player,
                                Data    = player.Name
                            });

                        commands.Add(
                            new BytePacketCommand
                            {
                                Command = CommandType.UpdatePlayerRace,
                                Data    = (byte)player.Race,
                                Player  = cmd.Player
                            });

                        commands.Add(
                            new BytePacketCommand
                            {
                                Command = CommandType.UpdatePlayerColor,
                                Data    = (byte)player.Color,
                                Player  = cmd.Player
                            });

                        commands.Add(
                            new Int32PacketCommand
                            {
                                Command = CommandType.UpdatePlayerScore,
                                Data    = player.Score,
                                Player  = cmd.Player
                            });

                        var p = new ScoreboardPacket {
                            Commands = commands.ToArray()
                        };

                        socket.SendTo(p.ToBytes(), senderRemote);
                    }

                    break;
                }
                }
            }
        }