void OnMasterPacket(object sender, PacketRecievedArgs e) { byte Type = e.Packet.ReadByte(); switch (Type) { case 0xFF: // break; case 0xFE: progressBar.Visible = true; MessageBox.Locked = true; MessageBox.Show(true); this.MessageBox.Text = "\n\n\n\n "+LocalizationData.GameFound; string Server = e.Packet.ReadString(); int Port = e.Packet.ReadInt(); StartNewGame(Server, Port); break; } }
protected void ClientOnPacket(object sender, PacketRecievedArgs e) { e.Drop = true; byte Type = e.Packet.ReadByte(); switch (Type) { case 0: int Owner = e.Packet.ReadInt(); int SimulationTick = e.Packet.ReadInt(); int Count = e.Packet.ReadInt(); for (int i = 0; i < Count; i++) { int OriginID = e.Packet.ReadInt(); int DestinationID = e.Packet.ReadInt(); SendRequest r = new SendRequest(); r.SimulationTick = SimulationTick; r.Owner = Owner == 1 ? VelesConflict.Gameplay.PlayerType.Player1 : VelesConflict.Gameplay.PlayerType.Player2; r.Origin = OriginID; r.Destination = DestinationID; Manager.QueueAction(r); } break; case 0xFB: GameState = MultiplayerGameState.Waiting; KillGame(true); break; case 0xFD: GameState = MultiplayerGameState.Downloading; Map = e.Packet.ReadInt(); if (!storage.DirectoryExists("MultiplayerMaps")) { storage.CreateDirectory("MultiplayerMaps"); } if (storage.FileExists(string.Format(@"MultiplayerMaps\map{0}", Map))) { List<Planet> planets = (LoadMap(string.Format(@"MultiplayerMaps\map{0}", Map))); foreach (Planet p in planets) Manager.AddPlanet(p); GameState = MultiplayerGameState.Ready; Thread.Sleep(1000); Packet ready = new Packet(); ready.Write((byte)0xFE); client.SendPacket(ready); } else { string MapAddress = string.Format(@"http://www.velesconflict.com/maps/map{0}.xml", Map); WebClient = new WebClient(); WebClient.OpenReadCompleted += new OpenReadCompletedEventHandler(WebClient_OpenReadCompleted); WebClient.OpenReadAsync(new Uri(MapAddress)); } break; case 0xFC: Player = (VelesConflict.Gameplay.PlayerType)e.Packet.ReadByte(); break; case 0xFF: GameCounter = 0; GameState = MultiplayerGameState.Game; Syncing = true; FramesToSpin = 120 - (client.Ping() / 2 + 17 / 2) / 17; break; } e.Packet.ResetPointer(); }