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(); }
public void input() { if (playerState is RaccoonMarioState) { if (Math.Abs(velocityX) > 300 && !activebuff) { ContentManager.SoundEffects["Running"].Play(); System.Timers.Timer timer = new System.Timers.Timer(4500); timer.Elapsed += Timer_Elapsed2; timer.AutoReset = false; timer.Start(); canflystronger = true; activebuff = true; } } if (Keyboard.GetState().IsKeyDown(Keys.Right)) { oriented_right = true; } if (Keyboard.GetState().IsKeyDown(Keys.Left)) { oriented_right = false; } if (!crouching) { if (Keyboard.GetState().IsKeyDown(Keys.Left) && !collisionX) { if (velocityX > -300 && velocityX < -80) { velocityX -= 13; } else if (velocityX > -300) { velocityX = -100; } } else if (Keyboard.GetState().IsKeyDown(Keys.Right) && !collisionX) { if (velocityX < 300 && velocityX > 80) { velocityX += 13; } else if (velocityX < 300) { velocityX = 100; } } } if (Keyboard.GetState().IsKeyDown(Keys.Up) && Math.Abs(velocityY) < 0.01f && collisionYbot) { velocityY = -600; ContentManager.SoundEffects["Jumping"].Play(0.4f, 0, 0); } //if (Keyboard.GetState().IsKeyDown(Keys.X)) { velocityY = -500; ContentManager.SoundEffects["Jumping"].Play(0.4f,0,0); } if (Keyboard.GetState().IsKeyDown(Keys.F) && canshoot && playerState is FireMarioState) { var fireball = new FireBall(new Rectangle(this.TextureRect.center().X, this.TextureRect.center().Y, 16, 16), ContentManager.Textures["fireball"], oriented_right); fireball.velocityY = this.velocityY * 1.3f; fireball.velocityX = Math.Max(300, 200 + this.velocityX); if (!oriented_right) { fireball.velocityX *= -1; } scene.QueryAddGameObject(fireball); shootTimer = new System.Timers.Timer(1000); shootTimer.Start(); canshoot = false; shootTimer.Elapsed += ShootTimer_Elapsed; ContentManager.SoundEffects["Flame Ball"].Play(0.4f, 0, 0); } // Special Interactions D_prevstate = D_state; D_state = Keyboard.GetState().IsKeyDown(Keys.D) ? ButtonState.Pressed : ButtonState.Released; if (D_prevstate == ButtonState.Released && D_state == ButtonState.Pressed && playerState is RaccoonMarioState && !tailwhip) { if (canflystronger) { velocityY = -270; } ContentManager.SoundEffects["Raccoon Tail Whip"].Play(0.3f, 0, 0); if (collisionYbot) { if (oriented_right) { damage = new SimpleDamage(new Rectangle(this.rectangle.Right, this.rectangle.Bot - 32, 20, 32), null); } else { damage = new SimpleDamage(new Rectangle(this.rectangle.X - 32, this.rectangle.Bot - 32, 20, 32), null); } scene.QueryAddGameObject(damage); System.Timers.Timer timer = new System.Timers.Timer(100); timer.Elapsed += Timer_Elapsed1; timer.AutoReset = false; timer.Start(); groundwhip = true; } else { damage = new SimpleDamage(new Rectangle(this.rectangle.Right, this.rectangle.Bot - 32, 1, 1), null); scene.QueryAddGameObject(damage); System.Timers.Timer timer = new System.Timers.Timer(100); timer.Elapsed += Timer_Elapsed1; timer.AutoReset = false; timer.Start(); groundwhip = false; if (velocityY > 0 && !canflystronger) { velocityY -= 150; } } tailwhip = true; } if (Keyboard.GetState().IsKeyDown(Keys.Down) && !(playerState is SmallMarioState) && !crouching && teleportType == TeleportType.None && !onpipe) { crouching = true; SmallerCollisionBox(); //SmallerTexture(); } if (!Keyboard.GetState().IsKeyDown(Keys.Down) && crouching) { crouching = false; BiggerCollisionBox(); GotBigger(); //BiggerTexture(); } if (!Keyboard.GetState().IsKeyDown(Keys.C) && HasAttachedTurtle) { HasAttachedTurtle = false; Turtle turtle = null; if (oriented_right) { turtle = new Turtle(new Rectangle(rectangle.Right + 10, rectangle.Bot - 36, 32, 32), null); } else { turtle = new Turtle(new Rectangle(rectangle.X - 42, rectangle.Bot - 36, 32, 32), null); } turtle.state = TurtleState.roll; turtle.velocityY = this.velocityY; turtle.velocityX = Math.Max(this.velocityX + 300, 300); if (!oriented_right) { turtle.velocityX *= -1; } turtle.justspawned = true; turtle.timer.Start(); scene.QueryAddGameObject(turtle); ContentManager.SoundEffects["Flame Ball"].Play(); } }