public void LoadLevel(String path, Texture2D background, Song song) { this.song = song; this.background = background; scene = new Scene(); uint[,] pixels; Bitmap img = new Bitmap(path); pixels = new uint[img.Height, img.Width]; int width, height; for (int i = 0; i < img.Width; i++) { for (int j = 0; j < img.Height; j++) { Color pixel = img.GetPixel(i, j); pixels[j, i] = (uint)pixel.ToArgb(); } } for (int i = 0; i < img.Width; i++) { for (int j = 0; j < img.Height; j++) { uint color = pixels[j, i]; //uint a = color >> 24; //uint r = (color >> 16) & 0b11111111; //uint g = (color >> 😎 & 0b11111111; //uint b = color & 0b11111111; switch (color) { case 4294967295: //white 255 255 255 255 break; case uint n when(n.GREEN() == 20 && n.RED() == 40): Tile[] tiles = { new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[23, 11], true), new Tile(new Rectangle(i * 32 + 32, 32 * j, 32, 32), ContentManager.tilesTextures[24, 11], true), new Tile(new Rectangle(i * 32 + 64, 32 * j, 32, 32), ContentManager.tilesTextures[25, 11], true) }; Platform p = new Platform(new Rectangle(i * 32, 32 * j, 32 * 3, 32), tiles, n.BLUE() * 32); scene.mobs.Add(p); break; case uint n when(n.GREEN() == 75 && n.RED() == 75 && n.BLUE() < 30): //black 255 0 0 0 switch (n.BLUE()) { case 1: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[26, 9], true)); break; case 2: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[27, 9], true)); break; case 3: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[28, 9], true)); break; case 4: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[26, 10], true)); break; case 5: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[27, 10], true)); break; case 6: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[28, 10], true)); break; case 7: //default tile scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[59, 1], true)); break; case 8: DestroyableTile destroyablex = new DestroyableTile(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[61, 0]); scene.AddGameObject(destroyablex); break; case 9: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[41, 0], true)); break; case 10: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[62, 11], true)); break; case 11: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[20, 17], true)); break; case 12: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[21, 17], true)); break; case 13: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[22, 17], true)); break; case 14: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[20, 18], true)); break; case 15: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[21, 18], true)); break; case 16: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[22, 18], true)); break; case 17: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[26, 11], true)); break; case 18: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[27, 11], true)); break; case 19: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[28, 11], true)); break; case 20: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[26, 12], true)); break; case 21: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[27, 12], true)); break; case 22: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[28, 12], true)); break; case 23: //pyramid background 23-26 scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[28, 4], false)); break; case 24: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[29, 4], false)); break; case 25: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[28, 5], false)); break; case 26: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[29, 5], false)); break; //pyramid case 27: //black pyramid 27-28 scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[38, 3], false)); break; case 28: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[39, 3], false)); break; //black pyramid case 29: //sand tile scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[30, 4], true)); break; default: break; } break; case uint n when(n.GREEN() == 255 && n.BLUE() > 0 && n.BLUE() < 18): //bushes etc. switch (n.BLUE()) { case 1: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[18, 18], false)); break; case 2: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[19, 18], false)); break; case 3: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[18, 20], false)); break; case 4: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[19, 20], false)); break; case 5: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[18, 19], false)); break; case 6: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[19, 19], false)); break; case 7: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[20, 19], false)); break; case 8: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[22, 19], false)); break; case 9: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[42, 4], false)); break; case 10: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[43, 4], false)); break; case 11: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[42, 5], false)); break; case 12: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[43, 5], false)); break; case 13: //13-16 palm tree scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[24, 4], false)); break; case 14: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[25, 4], false)); break; case 15: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[26, 5], false)); break; case 16: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[27, 5], false)); break; case 17: //cactus scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[22, 4], false)); break; default: break; } break; case uint n when(n.GREEN() == 200 && n.RED() == 200 && n.BLUE() > 199 && n.BLUE() < 202): //black 255 0 0 0 switch (n.BLUE()) { case 200: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[41, 2], false)); break; case 201: scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), ContentManager.tilesTextures[41, 5], false)); break; default: break; } break; case 4278190080: //black 255 0 0 0 scene.tiles.Add(new Tile(new Rectangle(i * 32, 32 * j, 32, 32), Textures["floor"], true)); break; case 4278255360: //green 255 0 255 0 player = new Player(new Rectangle(i * 32, j * 32, 32, 32), Textures["FullAnims"]); renderer.SetMario(player); scene.player = player; scene.AddGameObject(player); collisionDetector.scene = scene; renderer.scene = scene; float xoffset = Camera.PLAYER_BOX_WIDTH + 25; float yoffset = Camera.PLAYER_BOX_HEIGHT + 16; boundaries.Add(new Rectangle(0 * 32 + xoffset, 0 * 32 + yoffset, pixels[0, 0].RED() * 32 - xoffset * 2, pixels[0, 1].RED() * 32 - yoffset * 2)); boundaries.Add(new Rectangle(((pixels[1, 0] & 0x00ff0000) >> 16) * 32 + xoffset, ((pixels[1, 1] & 0x00ff0000) >> 16) * 32 + yoffset, (pixels[2, 0].RED() - pixels[1, 0].RED()) * 32 - xoffset * 2, (((pixels[2, 1] & 0x00ff0000) >> 16) - ((pixels[1, 1] & 0x00ff0000) >> 16)) * 32 - yoffset * 2)); uint pipe1 = pixels[3, 0], pipe2 = pixels[3, 1]; Console.WriteLine(pipe1.RED() + " " + pipe1.GREEN() + " " + pipe1.BLUE()); if (pipe1.BLUE() != 0) { scene.Teleports_Info.Add((pipe1.RED(), pipe1.GREEN(), Tp_From_int(pipe1.BLUE()))); } if (pipe2.BLUE() != 0) { scene.Teleports_Info.Add((pipe2.RED(), pipe2.GREEN(), Tp_From_int(pipe2.BLUE()))); } break; case 4286578688: Turtle turtle = new Turtle(new Rectangle(i * 32, j * 32 - 32, 32, 64), null); scene.AddGameObject(turtle); break; case 4294901760: Walker walker = new Walker(new Rectangle(i * 32, j * 32, 32, 32), null); scene.AddGameObject(walker); break; case 4294967040: scene.AddGameObject(new Coin(new Rectangle(i * 32 + 8, j * 32 + 8, 24, 24), Textures["coin"])); break; case 4278222848: Shroom shroom = new Shroom(new Rectangle(i * 32, j * 32, 32, 32), Textures["mushroom"]); scene.AddGameObject(shroom); break; case 4294934528: Plant plant = new Plant(new Rectangle(i * 32 + 16, j * 32 + 32, 32, 64), Textures["plant"]); scene.AddGameObject(plant); break; case 0xff008080: SpawningMob spawningShroom = new SpawningMob(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[67, 2], WhatIsSpawned.shroom); scene.AddGameObject(spawningShroom); break; case 0xff00807f: SpawningMob spawningFeather = new SpawningMob(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[32, 3], WhatIsSpawned.feather); scene.AddGameObject(spawningFeather); break; case 0xff00807e: SpawningMob spawningCoin = new SpawningMob(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[32, 3], WhatIsSpawned.coin); scene.AddGameObject(spawningCoin); break; case 0xff00807d: SpawningMob spawningFlower = new SpawningMob(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[32, 3], WhatIsSpawned.flower); scene.AddGameObject(spawningFlower); break; case 0xff3c3c3c: Star star = new Star(new Rectangle(i * 32, j * 32, 64, 64)); scene.AddGameObject(star); break; case 0xff_3c_64_64: Cloud cloud = new Cloud(new Rectangle(i * 32, j * 32, 32 * 3, 32 * 2)); scene.AddGameObject(cloud); break; case 0xff_3c_64_65: Cloud cloudcombo = new Cloud(new Rectangle(i * 32, j * 32, 32 * 12, 32 * 2), true); scene.AddGameObject(cloudcombo); break; case uint n when(n > 0xff_01_00_00 && n <= 0xff_01_ff_ff): width = n.GREEN(); height = n.BLUE(); Block block = new Block(new Microsoft.Xna.Framework.Point(i * 32, j * 32), width, height); scene.AddGameObject(block); break; case uint m when(m > 0xff_02_00_00 && m <= 0xff_02_ff_ff): int number = m.GREEN(); height = m.BLUE(); Pipe pipe = new Pipe(new Rectangle(i * 32, j * 32, 2 * 32, height * 32), Texture2DExtender.ProperPipe(2, height), number); //PipeManager.AddPipe(number, pipe); scene.AddGameObject(pipe); break; case 4278190335: DestroyableTile destroyable = new DestroyableTile(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[61, 0]); scene.AddGameObject(destroyable); break; case 4278190334: DestroyableTile destroyable1 = new DestroyableTile(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[32, 14]); scene.AddGameObject(destroyable1); break; case 4278190333: DestroyableTile destroyable2 = new DestroyableTile(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[43, 16]); scene.AddGameObject(destroyable2); break; case 4278190332: DestroyableTile destroyable3 = new DestroyableTile(new Rectangle(i * 32, j * 32, 32, 32), tilesTextures[66, 4]); scene.AddGameObject(destroyable3); break; default: Console.WriteLine("The color is unknown. Value: " + color); break; } } } startingScene = scene.Clone(); }