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(); }
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; } }
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(); }
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; } }