private void SendMapData(MapData map) { var packet = new MapDataPacket(map.width, map.height, map.tiles); for (var i = 0; i < players.Count; i++) { players[i].client.Send(packet); } }
private void Client_Received(Client client, IPacket packet) { switch (packet.Type) { case PacketType.Unknown: break; case PacketType.Ping: var pong = (PingPacket)packet; pong.contents = "PONG"; client.Send(pong); infoLog.AddEntry(EntryType.Message, string.Format("responding to ping at {0}", DateTime.Now.ToLongTimeString())); break; case PacketType.PlayerData: if (players.Count == 2) { players.Clear(); } var playerData = (PlayerDataPacket)packet; players.Add(playerData); break; case PacketType.MapData: map = (MapDataPacket)packet; infoLog.AddEntry(EntryType.Message, "got map data from server..."); break; case PacketType.ProjectilePacket: var projectilePacket = (ProjectilePacket)packet; if (projectilePacket.destroyed) { projectiles.Remove(projectiles.First(p => p.id == projectilePacket.pid)); } else { var projectile = new Projectile(); projectile.x = projectilePacket.x; projectile.y = projectilePacket.y; projectile.velx = projectilePacket.velx; projectile.vely = projectilePacket.vely; projectile.id = projectilePacket.pid; var guid = Guid.Parse(projectilePacket.ownerGuid); if (guid == client.Guid) { projectile.color = Color.Green; } else { projectile.color = Color.Red; } projectiles.Add(projectile); } break; case PacketType.RoundStatus: break; case PacketType.GameStatus: break; case PacketType.Authentication: var authentication = (AuthenticationPacket)packet; client.Guid = Guid.Parse(authentication.guid); authentication.response = string.Format("NAME:{0}", Configuration.Name); infoLog.AddEntry(EntryType.Message, "responding to authentication request..."); client.Send(authentication); break; case PacketType.ServerStatus: serverState = (ServerStatusPacket)packet; break; case PacketType.Message: var message = (MessagePacket)packet; if (message.contents.StartsWith("found an opponent")) { gameState = GameState.WaitingForGameplay; waitDisplayStrings = message.contents.Split('\n'); waitElapsed = 3000; } infoLog.AddEntry(EntryType.Message, "joined match!"); break; case PacketType.GameEnd: var gameEnd = (GameEndPacket)packet; gameState = GameState.GameEnd; returnToLobbyTime = 7500; gameEndDisplayStr = gameEnd.contents; break; default: break; } }
public void OnGenerateMapExecute() { if (seed <= 0) { var seedGeneration = new Random(); Seed = seedGeneration.Next().ToString(); } Random r = new Random(seed); var townOptions = new FractalOptions(townSmallScale, townLargeScale); int n = blocks; var popMap = WrappingFractal.fractal(128, n, n, townOptions, FractalWrapMode.NoWrap, (uint)r.Next()); var forestOptions = new FractalOptions(forestSmallScale, forestLargeScale); var forestMap = WrappingFractal.fractal(128, n, n, forestOptions, FractalWrapMode.NoWrap, (uint)r.Next());; var forestLevels = FractalUtility.getCutOffLevels(forestMap, new float[] { 100 - forestProportion, forestProportion }); var bitmap = new Bitmap(128 * n, 128 * n); var terrainMap = new int[128 * n, 128 * n]; for (int i = 0; i < bitmap.Width; i++) { for (int j = 0; j < bitmap.Height; j++) { popMap[i, j] = popMap[i, j] - forestMap[i, j]; } } var popLevels = FractalUtility.getCutOffLevels(popMap, new float[] { (100 - (forestProportion + townProportion)), townProportion }); for (int i = 0; i < bitmap.Width; i++) { for (int j = 0; j < bitmap.Height; j++) { popMap[i, j] = popMap[i, j] - popLevels[0]; if (popMap[i, j] < 0) { popMap[i, j] = 0; } var pop = (popMap[i, j] / (popLevels[1] - popLevels[0])); if (forestMap[i, j] > forestLevels[0]) { terrainMap[i, j] = 2; /*forestMap[i, j] -= forestLevels[0]; * pop -= 1f; * var g = (int)(255 * forestMap[i, j] / (forestLevels[1] - forestLevels[0])); * bitmap.SetPixel(i, j, Color.FromArgb(0, 255, 0));*/ } else if (pop > 0) { terrainMap[i, j] = 3; /*var b = (int)(255 * pop); * bitmap.SetPixel(i, j, Color.FromArgb(255, 0, 0)); */ } else { terrainMap[i, j] = 1; //bitmap.SetPixel(i, j, Color.FromArgb(255, 255, 255)); } //popMap[i, j] = pop; } } var popCentres = Sanitize(ref terrainMap); MapData = new MapDataPacket(terrainMap, popCentres); TownData = null; }