private static void F() { //important shit Random rand = new Random(); var local = new LocalLevels(); GameManager gameManager = new GameManager(); //random shit var gameModes = new List <GameMode> { GameMode.Cube, GameMode.Ship, GameMode.Ball, GameMode.Dird, GameMode.Robot, GameMode.Spider }; var speedTypes = new List <SpeedType> { SpeedType.Yellow, SpeedType.Default, SpeedType.Green, SpeedType.Purple, SpeedType.Red }; Level level = new Level(local.GetLevel(levelName)); byte BGColorR = (byte)rand.Next(255); Console.WriteLine("R: " + BGColorR); byte BGColorB = (byte)rand.Next(255); Console.WriteLine("B: " + BGColorB); byte BGColorG = (byte)rand.Next(255); Console.WriteLine("G: " + BGColorG); level.AddColor(new Color(ColorType.Background, BGColorR, BGColorB, BGColorG)); //Code doesnt work for rn, doesnt match bg color level.AddColor(new Color(ColorType.Ground, (byte)(BGColorR - (byte)rand.Next(40)), (byte)(BGColorB - (byte)rand.Next(40)), (byte)(BGColorG - (byte)rand.Next(40)))); level.AddColor(new Color(ColorType.Ground2, (byte)(BGColorR - (byte)rand.Next(70)), (byte)(BGColorB - (byte)rand.Next(70)), (byte)(BGColorG - (byte)rand.Next(70)))); byte[] randomInts = { (byte)rand.Next(20), (byte)rand.Next(17), (byte)rand.Next(speedTypes.Count), (byte)rand.Next(gameModes.Count), (byte)rand.Next(12) }; bool[] randomBools = { rand.Next(2) == 1, rand.Next(2) == 1, rand.Next(2) == 1 }; level.Background = randomInts[0]; Console.WriteLine("Background ID: " + randomInts[0]); level.Ground = randomInts[1]; Console.WriteLine("Ground ID: " + randomInts[1]); level.PlayerSpeed = (SpeedType)randomInts[2]; Console.WriteLine("Player Speed: " + (SpeedType)randomInts[2]); level.GameMode = (GameMode)randomInts[3]; Console.WriteLine("GameMode: " + (GameMode)randomInts[3]); level.Fonts = randomInts[4]; Console.WriteLine("Font ID: " + (randomInts[4])); level.kA17 = 0; level.TwoPlayerMode = (bool)randomBools[0]; Console.WriteLine("Two Player Mode: " + (randomBools[0])); level.Mini = (bool)randomBools[1]; Console.WriteLine("Mini Player: " + (randomBools[1])); level.Dual = (bool)randomBools[2]; Console.WriteLine("Dual Mode: " + (randomBools[2])); //Save the level. local.GetLevel(levelName).LevelString = level.ToString(); local.GetLevel(levelName).Description = "Random Description"; local.GetLevel(levelName).TotalJumps = rand.Next(99999); local.GetLevel(levelName).TotalAttempts = rand.Next(99999); local.Save(); }
static void Main(string[] args) { Console.Title = "Art To Geometry Dash"; Welcome(); Console.Write("Image path.\nExample: C:\\images\\my.png\n> "); fileArt = Console.ReadLine().Replace("\"", ""); Console.Clear(); Console.Write("Width and height pixel (pixels). \n> "); pixelSize = int.Parse(Console.ReadLine()); Console.Clear(); Console.Write("Alpha color.\nExample 1: 255 255 255 (Cut close to white color)\nExample 2: A 245 (Cuts all pixels with little aplha.)\n> "); string[] al = Console.ReadLine().Split(' '); if (al[0] == "A" || al[0] == "А") { useAplhaChannel = true; alphaChannel = byte.Parse(al[1]); } else { alpha = new byte[3]; alpha[0] = byte.Parse(al[0]); alpha[1] = byte.Parse(al[1]); alpha[2] = byte.Parse(al[2]); } Console.Clear(); Console.Write("Color similarity ratio.\n0 - Exact color match\nThe higher the value, the less color will be used in the level.\nRecommended value: 10\n> "); userDistance = double.Parse(Console.ReadLine()); Console.Clear(); Console.Write("What ID to start creating the palette\n> "); colorStart = int.Parse(Console.ReadLine()); Console.Clear(); Console.Write("The size of the art in the level.\n1: 1 pixel = 1/4 block\nExample: 0,8\n> "); scale = float.Parse(Console.ReadLine()); Console.Clear(); Console.Write("Image coordinates in level.\n1 block = 30, 2 block = 60\nTemplate: X Y\nExample: 2000 0\nUsing coordinates far from 0 when adding a large image, otherwise the level may not open.\n> "); string[] coords = Console.ReadLine().Split(' '); coordX = float.Parse(coords[0]); coordY = float.Parse(coords[1]); Console.Clear(); Console.Write("Layer for art.\n> "); EditorLayer = int.Parse(Console.ReadLine()); Console.Clear(); Console.Write("Add a color changing trigger?\n1 - Yes\n0 - No\n> "); string addtrgstr = Console.ReadLine(); addTrigger = addtrgstr.ToLower() == "yes" || addtrgstr == "1" ? true : false; Console.Clear(); Console.Write("The name of the level in which the art will be placed.\nRecomended use empty level.\nPossible level damage!\n> "); levelName = Console.ReadLine(); Console.Clear(); Stopwatch sw = new Stopwatch(); sw.Restart(); Console.WriteLine("Loading level ..."); localLevels = new LocalLevels(); level = new Level(localLevels.GetLevelByName(levelName), null, new List <int>()); Console.WriteLine("Loading image ..."); art = new Bitmap(fileArt); blockStart = level.CountBlock; Console.WriteLine("Creating art..."); int currentColorID = colorStart; int startFor = 0; if (pixelSize >= 2) { startFor = 1; } else if (pixelSize >= 4) { startFor = 2; } else if (pixelSize >= 8) { startFor = 4; } for (int x = startFor; x < art.Width; x += pixelSize) { for (int y = startFor; y < art.Height; y += pixelSize) { System.Drawing.Color color = art.GetPixel(x, y); int colorInt = BytesToInt(color.R, color.G, color.B); if (useAplhaChannel) { if (color.A < alphaChannel) { continue; } } else { if (FindSimilar(color.R, color.G, color.B, alpha[0], alpha[1], alpha[2])) { continue; } } if (!palette.ContainsKey(colorInt)) { int?sim = FindSimilar(color.R, color.G, color.B); if (sim == null) { level.AddColor(new GeometryDashAPI.Levels.Color((short)currentColorID, color.R, color.G, color.B)); palette.Add(colorInt, currentColorID); if (addTrigger) { level.AddBlock(new PulseTrigger() { TargetID = currentColorID, Red = color.R, Green = color.G, Blue = color.B, Hold = 10f, PositionX = -15 + coordX, PositionY = 0 + coordY, EditorL = (short)EditorLayer }); } currentColorID++; } else { colorInt = (int)sim; } } DetailBlock block = new DetailBlock(917); block.ColorDetail = (short)palette[colorInt]; block.Scale = scale; block.EditorL = (short)EditorLayer; block.PositionX = (x / pixelSize * 7.5f * scale) + coordX; block.PositionY = ((art.Height - y) / pixelSize * 7.5f * scale) + coordY; level.AddBlock(block); } } Console.WriteLine("Save..."); localLevels.GetLevelByName(levelName).LevelString = level.ToString(); localLevels.Save(); sw.Stop(); Console.Clear(); Console.WriteLine($"Completed!\nUsed colors: {palette.Count}\nUsed blocks: {level.CountBlock - blockStart}\nElapsed time: {sw.ElapsedTicks} ticks ({sw.ElapsedMilliseconds} milliseconds)"); Console.WriteLine("Press any button to continue."); Console.ReadKey(); }