public void MarioLuigiCollisionTest(Mario mario, Luigi luigi, SoundEffects sound) { Rectangle marioRectangle = myMario.GetRectangle(); Rectangle luigiRectangle = luigi.GetRectangle(); Rectangle intersectionRectangle; intersectionRectangle = Rectangle.Intersect(marioRectangle, luigiRectangle); if (!intersectionRectangle.IsEmpty) { if (intersectionRectangle.Width > intersectionRectangle.Height) { if (marioRectangle.Y > luigiRectangle.Y) { luigi.BoostJump(); sound.Bump(); } else if (luigiRectangle.Y > marioRectangle.Y) { mario.BoostJump(); sound.Bump(); } } } }
public Tuple<int, bool> EnemyCollisionTest(Luigi luigi, HUD hud, IList<IEnemy> enemies, int x, SoundEffects sound) { Rectangle luigiRectangle = myLuigi.GetRectangle(); Rectangle enemyRectangle; bool enemyKilled = false; bool invincible = myLuigi.Invincible(); int xpos = x; Rectangle intersectionRectangle; Queue<IEnemy> doomedEnemies = new Queue<IEnemy>(); foreach (IEnemy enemy in enemies) { enemyRectangle = enemy.GetRectangle(); intersectionRectangle = Rectangle.Intersect(luigiRectangle, enemyRectangle); if (!intersectionRectangle.IsEmpty) { if (intersectionRectangle.Width >= intersectionRectangle.Height) { sound.Bump(); doomedEnemies.Enqueue(enemy); hud.luigiEnemyKill(luigi); enemyKilled = true; } else if (invincible) { doomedEnemies.Enqueue(enemy); } else { myLuigi.Hit(); if (luigiRectangle.X < enemyRectangle.X) { xpos = xpos - intersectionRectangle.Width; } else { xpos = xpos + intersectionRectangle.Width; } if (myLuigi.IsDead()) { hud.lifeLostLuigi(); } } } } while (doomedEnemies.Count() > 0) { IEnemy enemie = doomedEnemies.Dequeue(); enemies.Remove(enemie); } return new Tuple<int,bool>(xpos, enemyKilled); }
public Level(Difficulty difficulty, List <Map> _map, int time, string title, int number) { this.difficulty = difficulty; _Maps = _map; Time = time; _Mario = Mario.GetMario(); _Luigi = Luigi.GetLuigi(); Title = title; Number = number; currentMap = 0; }
protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(backgroundColor); spriteBatch.Begin(); foreach (BackgroundSprite backgroundSprite in backgroundList) { backgroundSprite.Draw(spriteBatch); } if (!levelSelected) { menu.Draw(spriteBatch); } else { List <IGameObject> notItemList = new List <IGameObject>(); foreach (IGameObject gameObj in gameObjects) { if (gameObj is IItem) { gameObj.Draw(spriteBatch, Color.White); } else { notItemList.Add(gameObj); } } foreach (IGameObject miscObj in notItemList) { if (!(miscObj is Mario)) { miscObj.Draw(spriteBatch, Color.White); } } Mario.Draw(spriteBatch, Color.White); if (isPkMode) { Luigi.Draw(spriteBatch, Color.Green); marioHealthBar.Draw(spriteBatch, Mario.health); luigiHealthBar.Draw(spriteBatch, Luigi.health); } HUD.Draw(spriteBatch); } spriteBatch.End(); base.Draw(gameTime); }
public static void SerializeMap() { int width = 5000; var map1 = new Map(650, width, @"../../Views/Source/Images/Background/01.png"); List <MapUnit> temp = new List <MapUnit>(); for (int i = 0; i * 100 < width; i++) { temp.Add(new GeneralWithImageRef(new PointF(i * 100, 570), @"../../Views/Source/Images/Blocks/ground_grass_block.png", 70, 200, "Gound")); } temp.Add(new GeneralWithImageRef(new PointF(100, 100), @"../../Views/Source/Images/Blocks/brick.png", 50, 50, "Brick")); map1.Blocks = temp; map1.Coins = new List <MapUnit>() { new CoinOrdinary(40, new PointF(100, 200), @"../../Views/Source/Images/Items/Coins/Coin_1.png", new PointF(30, 30)), new CoinOrdinary(60, new PointF(300, 300), @"../../Views/Source/Images/Items/Coins/Coin_1.png", new PointF(30, 30)), new CoinOrdinary(50, new PointF(200, 200), @"../../Views/Source/Images/Items/Coins/Coin_1.png", new PointF(30, 30)) }; map1.Enemies = new List <MapUnit>() { new GeneralEnemy(new PointF(400, 150), new PointF(50, 50), @"../../Views/Source/Images/Enemies/Koopa/Koopa_Red_Right_1.png"), new GeneralEnemy(new PointF(300, 350), new PointF(50, 50), @"../../Views/Source/Images/Enemies/Goomba/Goomba_Normal_1.png") }; map1.Pipes = new List <MapUnit>() { new PipeGreen(new PointF(400, 150), 200, 100), new PipeGreen(new PointF(500, 150), 300, 100) }; //Using Singleton var level = new Level(Difficulty.Easy, new List <Map>() { map1 }, 200, "Test level", 1); level._Mario = Mario.GetMario(new PointF(10, 300), new PointF(50, 50)); level._Luigi = Luigi.GetLuigi(new PointF(100, 300), new PointF(50, 50)); Serializer.Serialize("Levels.dat", level); }
public LuigiEnemyCollision(Luigi luigi) { myLuigi = luigi; }
public LuigiItemCollision(Luigi luigi) { myLuigi = luigi; }
public LuigiBlockCollision(Luigi luigi) { myLuigi = luigi; }
public bool FillMap(Canvas gameCanvas, Image background, StackPanel panel, Mario _Mario, Luigi _Luigi, Difficulty difficulty) { gameCanvas.Width = Wigth; background.Source = UnitImagesFactory.GetImageSource(BackgrounImageSource); GeneralObject.MainFacade.PlayStopSound(GeneralObject._backgroundPlayer, Facade.playingCommand.play, SoundSource, Facade.PlayingType.loop); FillingBackground(panel, gameCanvas, background); foreach (Coin coin in Coins) { coin.ImageController = new Image(); coin.ImageController.Source = UnitImagesFactory.GetImageSource(coin.Image); coin.ImageController.Width = coin.ImageSize.X; coin.ImageController.Height = coin.ImageSize.Y; coin.ImageController.Stretch = Stretch.Fill; Canvas.SetTop(coin.ImageController, coin.Position.Y); Canvas.SetLeft(coin.ImageController, coin.Position.X); gameCanvas.Children.Add(coin.ImageController); } foreach (Block block in Blocks) { block.ImageController = new Image(); block.ImageController.Source = UnitImagesFactory.GetImageSource(block.Image); block.ImageController.Width = block.ImageSize.X; block.ImageController.Height = block.ImageSize.Y; block.ImageController.Stretch = Stretch.Fill; Canvas.SetTop(block.ImageController, block.Position.Y); Canvas.SetLeft(block.ImageController, block.Position.X); gameCanvas.Children.Add(block.ImageController); } foreach (Pipe pipe in Pipes) { pipe.ImageController = new Image(); pipe.ImageController.Source = UnitImagesFactory.GetImageSource(pipe.Image); pipe.ImageController.Width = pipe.ImageSize.X; pipe.ImageController.Height = pipe.ImageSize.Y; pipe.ImageController.Stretch = Stretch.Fill; Canvas.SetTop(pipe.ImageController, pipe.Position.Y); Canvas.SetLeft(pipe.ImageController, pipe.Position.X); gameCanvas.Children.Add(pipe.ImageController); } foreach (Bonus bonus in Bonuses) { bonus.ImageController = new Image(); bonus.ImageController.Source = UnitImagesFactory.GetImageSource(bonus.Image); bonus.ImageController.Width = bonus.ImageSize.X; bonus.ImageController.Height = bonus.ImageSize.Y; bonus.ImageController.Stretch = Stretch.Fill; Canvas.SetTop(bonus.ImageController, bonus.Position.Y); Canvas.SetLeft(bonus.ImageController, bonus.Position.X); gameCanvas.Children.Add(bonus.ImageController); } List <MapUnit> enemy_additional = new List <MapUnit>(); foreach (Enemy enemy in Enemies) { int quantity = 0; if (difficulty.Equals(Difficulty.Middle)) { quantity = 1; } if (difficulty.Equals(Difficulty.Hard)) { quantity = 2; } enemy.ImageController = new Image(); enemy.ImageController.Source = UnitImagesFactory.GetImageSource(enemy.Image); enemy.ImageController.Width = enemy.ImageSize.X; enemy.ImageController.Height = enemy.ImageSize.Y; enemy.ImageController.Stretch = Stretch.Fill; Canvas.SetTop(enemy.ImageController, enemy.Position.Y); Canvas.SetLeft(enemy.ImageController, enemy.Position.X); gameCanvas.Children.Add(enemy.ImageController); for (int i = 0; i < quantity; i++) { var new_enemy = enemy.Clone(); var temp = MapUnit.CheckOut(new_enemy.Position.X + GeneralObject.cellSize.X, new_enemy.Position.Y, GeneralObject._gameModel.CurrentLevel, null); if (temp == null) { new_enemy.Position = UnitImagesFactory.GetPosition(new_enemy.Position.X + GeneralObject.cellSize.X, new_enemy.Position.Y); } else { temp = MapUnit.CheckOut(new_enemy.Position.X, new_enemy.Position.Y + GeneralObject.cellSize.Y, GeneralObject._gameModel.CurrentLevel, null); if (temp == null) { new_enemy.Position = UnitImagesFactory.GetPosition(new_enemy.Position.X, new_enemy.Position.Y + GeneralObject.cellSize.Y); } else { temp = MapUnit.CheckOut(new_enemy.Position.X, new_enemy.Position.Y - GeneralObject.cellSize.Y, GeneralObject._gameModel.CurrentLevel, null); if (temp == null) { new_enemy.Position = UnitImagesFactory.GetPosition(new_enemy.Position.X, new_enemy.Position.Y - GeneralObject.cellSize.Y); } else { temp = MapUnit.CheckOut(new_enemy.Position.X - GeneralObject.cellSize.X, new_enemy.Position.Y, GeneralObject._gameModel.CurrentLevel, null); if (temp == null) { new_enemy.Position = UnitImagesFactory.GetPosition(new_enemy.Position.X - GeneralObject.cellSize.X, new_enemy.Position.Y); } } } } if (!new_enemy.Position.Equals(enemy.Position)) { new_enemy.ImageController.Width = new_enemy.ImageSize.X; new_enemy.ImageController.Height = new_enemy.ImageSize.Y; new_enemy.ImageController.Stretch = Stretch.Fill; Canvas.SetTop(new_enemy.ImageController, new_enemy.Position.Y); Canvas.SetLeft(new_enemy.ImageController, new_enemy.Position.X); enemy_additional.Add(new_enemy); gameCanvas.Children.Add(new_enemy.ImageController); } } } foreach (var enemy in enemy_additional) { Enemies.Add(enemy); } if (_Mario != null) { _Mario.ImageController = new Image(); _Mario.ImageController.Source = UnitImagesFactory.GetImageSource(_Mario.Image); _Mario.ImageController.Width = _Mario.ImageSize.X; _Mario.ImageController.Height = _Mario.ImageSize.Y; _Mario.ImageController.Stretch = Stretch.Fill; Canvas.SetTop(_Mario.ImageController, _Mario.Position.Y); Canvas.SetLeft(_Mario.ImageController, _Mario.Position.X); Panel.SetZIndex(_Mario.ImageController, 5); gameCanvas.Children.Add(_Mario.ImageController); } if (_Luigi != null && (GeneralObject._gameViewModel._quantity.Equals("Two") || GeneralObject.OnMap)) { _Luigi.ImageController = new Image(); _Luigi.ImageController.Source = UnitImagesFactory.GetImageSource(_Luigi.Image); _Luigi.ImageController.Width = _Luigi.ImageSize.X; _Luigi.ImageController.Height = _Luigi.ImageSize.Y; _Luigi.ImageController.Stretch = Stretch.Fill; Canvas.SetTop(_Luigi.ImageController, _Luigi.Position.Y); Canvas.SetLeft(_Luigi.ImageController, _Luigi.Position.X); Panel.SetZIndex(_Luigi.ImageController, 5); gameCanvas.Children.Add(_Luigi.ImageController); } return(true); }