public static Shema GetDefault() { var shema = new Shema(); var layer = new ShemaLayer { Shade = ShadeType.OnlyLand, Level = 0 }; layer.Add(0, new UColor(0xFF000000)); layer.Add(0x80 * 5, new UColor(0xFF483D8B)); layer.Add(0x87 * 5, new UColor(0xFF8470FF)); layer.Add(0x9A * 5, new UColor(0xFFEEDD82)); layer.Add(0xBD * 5, new UColor(0xFF6B8E23)); layer.Add(0xFF * 5, new UColor(0xFF000000)); shema.Layers.Add(layer); layer = new ShemaLayer { Shade = ShadeType.None, Level = 1 }; layer.Add(0, new UColor(0)); layer.Add(0x60 * 5, new UColor(0)); layer.Add(0x61 * 5, new UColor(0x20FFFFFF)); layer.Add(0x88 * 5, new UColor(0xB0FFFFFF)); layer.Add(0x98 * 5, new UColor(0xB0FFFFFF)); layer.Add(0xD0 * 5, new UColor(0x20FFFFFF)); layer.Add(0xD1 * 5, new UColor(0)); layer.Add(0xFF * 5, new UColor(0)); shema.Layers.Add(layer); return shema; }
public static Shema GenerateRandom() { var container = new Shema(); int layersCount = RandomHelper.Next(2); for (int i = 0; i <= layersCount; i++) { var layer = new ShemaLayer { Shade = i == 0 ? RandomShadeType() : ShadeType.None, Level = i }; int levels = 2 + RandomHelper.Next((i == 0 ? 5 : 3)); int prevH = 0; if (i % 2 == 0) { for (int l = 0; l < levels; l++) { int curH = l == 0 ? 0 : RandomHelper.Next(200) + 1; layer.Add(curH + prevH, new UColor(0xFF, (byte)RandomHelper.Next(256), (byte)RandomHelper.Next(256), (byte)RandomHelper.Next(256))); prevH += curH; } } else { for (int l = 0; l < levels; l++) { int curH = l == 0 ? 0 : RandomHelper.Next(200) + 1; layer.Add(curH + prevH, new UColor((byte)(RandomHelper.Next(200) + 5), (byte)RandomHelper.Next(256), (byte)RandomHelper.Next(256), (byte)RandomHelper.Next(256))); prevH += curH; } } container.Layers.Add(layer); } return container; }
private void GetRandom(object sender, RoutedEventArgs e) { Shema = Shema.GenerateRandom(); }
public void Main_SettingsChanged() { Shema = __Main.Shema; Update(); }
private UBitmap Generate( Shema shema, AlgorithmType algorithmType, CancellationToken token, int x, int y, int w, int h, int width, int height, List<double> seeds, ProjectionType projection, double seaLevel = 0, double lng = 0, double lat = 0 ) { __AlgorithmType = algorithmType; UColor[,] resultBitmap = null; shema.SortByLevel(); __LayersCount = shema.Layers.Count(l => l.IsEnable); __CurrentLayerIndex = 0; if (token.IsCancellationRequested) return null; for (int index = 0; index < shema.Layers.Count; index++) { if (token.IsCancellationRequested) return null; var layer = shema.Layers[index]; if (!layer.IsEnable) continue; double seed = 0; if (__CurrentLayerIndex < seeds.Count) seed = seeds[__CurrentLayerIndex]; else { seed = seeds[seeds.Count - 1]; for (int i = seeds.Count; i <= __CurrentLayerIndex; i++) seed = rand2(seed, seed); } __ShadeType = layer.Shade; __PlanetAlgorithm = GetAlgorithm(__AlgorithmType, seed, __ShadeType); var range = __PlanetAlgorithm.GetAltRange(); __ColorContainer = new ColorContainer(layer, range); var layerBmp = MainGen(token, x, y, w, h, width, height, seed, projection, seaLevel, lng, lat); if (token.IsCancellationRequested) return null; if (resultBitmap == null) resultBitmap = layerBmp; else { for (int _x = 0; _x < w; _x++) { for (int _y = 0; _y < h; _y++) { var nc = layerBmp[_x, _y]; resultBitmap[_x, _y] = UColor.Merge(resultBitmap[_x, _y], nc, 255 - nc.A, nc.A, UColorFlags.R | UColorFlags.G | UColorFlags.B); } } } __CurrentLayerIndex++; } return new UBitmap(resultBitmap); }
public static PlanetContainer GetDesert() { var result = new PlanetContainer { Name = "Desert" }; var shema = new Shema(); var layer = new ShemaLayer { Shade = ShadeType.OnlyLand, Level = 0 }; layer.Add(0, new UColor(0xFFCD853F)); layer.Add(250, new UColor(0xFFCD853F)); layer.Add(500, new UColor(0xFFF4A460)); layer.Add(627, new UColor(0xFF8B4513)); layer.Add(1000, new UColor(0xFFDEB887)); shema.Layers.Add(layer); layer = new ShemaLayer { Shade = ShadeType.None, Level = 1 }; layer.Add(0, new UColor(0)); layer.Add(400, new UColor(0x00FFFFFF)); layer.Add(500, new UColor(0xD0FFDEAD)); layer.Add(600, new UColor(0x00FFFFFF)); layer.Add(700, new UColor(0xD0FFDEAD)); layer.Add(800, new UColor(0x00FFFFFF)); layer.Add(1000, new UColor(0)); shema.Layers.Add(layer); result.Shema = shema; return result; }
public static PlanetContainer GetSun() { var result = new PlanetContainer { Name = "Sun" }; var shema = new Shema(); var layer = new ShemaLayer { Shade = ShadeType.None, Level = 0 }; layer.Add(0, new UColor(0xFFFF0000)); layer.Add(1000, new UColor(0xFFFFFF00)); shema.Layers.Add(layer); result.Shema = shema; return result; }
public static PlanetContainer GetPandorica() { var result = new PlanetContainer { Name = "Pandorica" }; var shema = new Shema(); var layer = new ShemaLayer { Shade = ShadeType.OnlyLand, Level = 0 }; layer.Add(0, new UColor(0xFF000000)); layer.Add(0x80 * 5, new UColor(0xFF483D8B)); layer.Add(0x87 * 5, new UColor(0xFF8470FF)); layer.Add(0x9A * 5, new UColor(0xFFEEDD82)); layer.Add(0xBD * 5, new UColor(0xFF6B8E23)); layer.Add(0xFF * 5, new UColor(0xFF000000)); shema.Layers.Add(layer); layer = new ShemaLayer { Shade = ShadeType.None, Level = 1 }; layer.Add(0, new UColor(0)); layer.Add(0x60 * 5, new UColor(0)); layer.Add(0x61 * 5, new UColor(0x20FFFFFF)); layer.Add(0x88 * 5, new UColor(0xB0FFFFFF)); layer.Add(0x98 * 5, new UColor(0xB0FFFFFF)); layer.Add(0xD0 * 5, new UColor(0x20FFFFFF)); layer.Add(0xD1 * 5, new UColor(0)); layer.Add(0xFF * 5, new UColor(0)); shema.Layers.Add(layer); result.Shema = shema; return result; }
public static PlanetContainer GetIce() { var result = new PlanetContainer { Name = "Ice" }; var shema = new Shema(); var layer = new ShemaLayer { Shade = ShadeType.OnlyLand, Level = 0 }; layer.Add(0, new UColor(0xFF000000)); layer.Add(0x30, new UColor(0xFF1A1BAF)); layer.Add(0x60 * 5, new UColor(0xFF00BBFF)); layer.Add(0x80 * 5, new UColor(0xFF0000FF)); layer.Add(0x91 * 5, new UColor(0xFF000000)); layer.Add(0xC0 * 5, new UColor(0xFF5C5C9C)); layer.Add(0xFF * 5, new UColor(0xFF8FAFFF)); shema.Layers.Add(layer); result.Shema = shema; return result; }