コード例 #1
0
ファイル: Form2.cs プロジェクト: berkcambaz/RolePlayMP
 private void Countdown_timer_Tick(object sender, EventArgs e)
 {
     totalSeconds--;
     if (totalSeconds < 0)
     {
         if (!roundEndPacketSent)
         {
             if (Destination_listBox.SelectedItem == null)   // If user hasn't selected a destination to go
             {
                 Packet04RoundEnd roundEndPacket = new Packet04RoundEnd(Form1.GetPlayerMP().username, Destination_listBox.Items[0].ToString(), Inventory_listBox.SelectedIndex.ToString());
                 roundEndPacket.WriteData(Form1.GetGameClient());
             }
             else
             {
                 Packet04RoundEnd roundEndPacket = new Packet04RoundEnd(Form1.GetPlayerMP().username, Destination_listBox.SelectedItem.ToString(), Inventory_listBox.SelectedIndex.ToString());
                 roundEndPacket.WriteData(Form1.GetGameClient());
             }
             roundEndPacketSent = true;
             if (Form1.GetGameServer() != null)  // If owner of the form is host, make round start button visible
             {
                 Countdown_button.Visible = true;
                 Countdown_label.Visible  = false;
             }
         }
         Countdown_label.Text = "00 : 00";
         return;
     }
     CalculateTimer();
 }
コード例 #2
0
        public void ParsePacket(byte[] data)
        {
            String dataStr = System.Text.ASCIIEncoding.UTF8.GetString(data).Trim();

            Packet.PacketTypes type = Packet.FindPacket(dataStr.Substring(0, 2));
            switch (type)
            {
            case Packet.PacketTypes.INVALID:
                break;

            case Packet.PacketTypes.LOGIN:
                Packet00Login loginPacket = new Packet00Login(data);
                HandleLogin(loginPacket);
                break;

            case Packet.PacketTypes.DISCONNECT:
                Packet01Disconnect disconnectPacket = new Packet01Disconnect(data);
                HandleDisconnect(disconnectPacket);
                break;

            case Packet.PacketTypes.MESSAGE:
                Packet02Message messagePacket = new Packet02Message(data);
                HandleMessage(messagePacket);
                break;

            case Packet.PacketTypes.ROUND_START:
                HandleRoundStart();
                break;

            case Packet.PacketTypes.ROUND_END:
                Packet04RoundEnd roundEndPacket = new Packet04RoundEnd(data);
                HandleRoundEnd(roundEndPacket);
                break;
            }
        }
コード例 #3
0
        private void HandleRoundEnd(Packet04RoundEnd roundEndPacket)
        {
            Room.SetCurrentRoom(Room.GetRoomIndex(roundEndPacket.GetDestination()));
            Room.Effect(ref player);

            if (int.Parse(roundEndPacket.GetItemIndex()) != -1)
            {
                player.inventory.UseItem(ref player, int.Parse(roundEndPacket.GetItemIndex()));
            }

            gameForm.ReloadMap();
            gameForm.ReloadInventory();
        }
コード例 #4
0
ファイル: GameServer.cs プロジェクト: berkcambaz/RolePlayMP
        public void ParsePacket(byte[] data, String ipAddress)
        {
            String dataStr = System.Text.ASCIIEncoding.UTF8.GetString(data).Trim();

            Packet.PacketTypes type   = Packet.FindPacket(dataStr.Substring(0, 2));
            PlayerMP           player = null;

            switch (type)
            {
            case Packet.PacketTypes.INVALID:
                break;

            case Packet.PacketTypes.LOGIN:
                Packet00Login loginPacket = new Packet00Login(data);
                player = new PlayerMP(loginPacket.GetUsername(), ipAddress, int.Parse(loginPacket.GetPort()), 0);
                AddConnection(player, loginPacket);
                break;

            case Packet.PacketTypes.DISCONNECT:
                Packet01Disconnect disconnectPacket = new Packet01Disconnect(data);
                RemoveConnection(disconnectPacket);
                break;

            case Packet.PacketTypes.MESSAGE:
                Packet02Message messagePacket = new Packet02Message(data);
                player = GetPlayerMPNode(messagePacket.GetUsername());

                // Only send message to the players that are in the same room
                foreach (PlayerMP p in connectedPlayers)
                {
                    if (!p.username.Equals(player.username) && p.roomNumber.Equals(player.roomNumber))
                    {
                        SendData(data, p.ipAddress, p.port);
                    }
                }
                break;

            case Packet.PacketTypes.ROUND_START:
                SendDataToAllClientsNotServer(data);
                break;

            case Packet.PacketTypes.ROUND_END:
                Packet04RoundEnd roundEndPacket = new Packet04RoundEnd(data);
                player = GetPlayerMPNode(roundEndPacket.GetUsername());
                //player.roomNumber = Room.GetRoomIndex(roundEndPacket.GetDestination());
                //Room.Effect(ref player);
                SendData(data, player.ipAddress, player.port);
                break;
            }
        }