virtual public void JumpUp(double height, bool direction) { isFalling = true; if (MapUnit.CheckOut(Canvas.GetLeft(ImageController), Canvas.GetTop(ImageController) + ImageController.Height + 1, GeneralObject._gameModel.CurrentLevel, new FallStrategy()) != null) { var StartY = Canvas.GetTop(ImageController); var EndY = StartY - height; GeneralObject.MainFacade.PlayStopSound(new MediaPlayer(), playingCommand.play, @"../../Views/Source/Sounds/jump.wav", PlayingType.original); var AnimationY = new DoubleAnimation(StartY, EndY, TimeSpan.FromSeconds(1)); AnimationY.Completed += (sender1, e1) => { Fall(); }; ImageController.BeginAnimation(Canvas.TopProperty, AnimationY); } }
public bool Move(MapUnit Unit, bool direction, DispatcherTimer timer) { var StartX = Canvas.GetLeft(Unit.ImageController); var EndX = StartX + 30 * (direction?1:-1); double step = EndX; if (direction) { step = EndX + Unit.ImageController.Width; } var temp = MapUnit.CheckOut(step, Canvas.GetTop(Unit.ImageController) + GeneralObject.cellSize.Y / 2, GeneralObject._gameModel.CurrentLevel, new MoveStrategy()); if (temp != null) { if (temp is Block) { direction = !direction; if (Unit is Enemy) { (Unit as Enemy).CurrentDirection = direction; } double delta = (Math.Abs(Canvas.GetLeft(temp.ImageController) - StartX) - (!direction ? 0 : 1) * temp.ImageController.Width) * (!direction ? 1 : -1); EndX = StartX + delta; var AnimationX1 = new DoubleAnimation(StartX, EndX, TimeSpan.FromMilliseconds(10)); Unit.ImageController.BeginAnimation(Canvas.LeftProperty, AnimationX1); EndX = StartX + 30 * (direction ? 1 : -1); } else if ((temp is Mario || temp is Luigi) && Unit is Enemy) { if (temp is Mario) { GeneralObject._gameModel.CurrentLevel._Mario.Die(); } else { GeneralObject._gameModel.CurrentLevel._Luigi.Die(); } } } var AnimationX = new DoubleAnimation(StartX, EndX, TimeSpan.FromSeconds(1)); Unit.ImageController.BeginAnimation(Canvas.LeftProperty, AnimationX); return(false); }
public bool Move(MapUnit Unit, bool direction, DispatcherTimer timer) { var StartY = Canvas.GetTop(Unit.ImageController); MapUnit temp = MapUnit.CheckOut(Canvas.GetLeft(Unit.ImageController) + GeneralObject.cellSize.X / 2, StartY + Unit.ImageController.Height + 30, GeneralObject._gameModel.CurrentLevel, new FallStrategy()); if (temp == null) { if (StartY < GeneralObject._gameModel.CurrentLevel._Maps[GeneralObject._gameModel.CurrentLevel.currentMap].Heigth) { var EndY = StartY + 30; var AnimationY = new DoubleAnimation(StartY, EndY, TimeSpan.FromMilliseconds(500)); AnimationY.Completed += (sender, e) => { if ((Canvas.GetTop(Unit.ImageController) + Unit.ImageController.Height) >= (NewGame.MainStackPanel.Height)) { if (Unit is Mario || Unit is Luigi) { (Unit as MovingObject).timer.Stop(); (Unit as MovingObject).Die(); } } }; Unit.ImageController.BeginAnimation(Canvas.TopProperty, AnimationY); } } else { PointF Position = temp.Position; if (Canvas.GetTop(Unit.ImageController) + Unit.ImageController.Height < Position.Y) { var EndY = Position.Y - Unit.ImageController.Height; var AnimationY = new DoubleAnimation(StartY, EndY, TimeSpan.FromMilliseconds(200)); Unit.ImageController.BeginAnimation(Canvas.TopProperty, AnimationY); } if (Unit is Mario || Unit is Luigi) { if (temp is Coin) { GeneralObject.MainFacade.PlayStopSound(new MediaPlayer(), playingCommand.play, @"../../Views/Source/Sounds/coin.wav", PlayingType.original); if (Unit is Mario) { GeneralObject._gameModel.CurrentLevel._Mario.Score += (temp as Coin).capacity; GeneralObject._gameModel.CurrentLevel._Mario.CoinsQuantity++; GeneralObject._gameModel.CurrentLevel._Mario.Notify(); } else { GeneralObject._gameModel.CurrentLevel._Luigi.Score += (temp as Coin).capacity; GeneralObject._gameModel.CurrentLevel._Luigi.CoinsQuantity++; GeneralObject._gameModel.CurrentLevel._Luigi.Notify(); } GeneralObject._gameModel.CurrentLevel._Maps[0].Coins.Remove(temp); NewGame.gameCanvas.Children.Remove(temp.ImageController); return(false); } else if (temp is Enemy) { if (Unit is Mario) { GeneralObject._gameModel.CurrentLevel._Mario.Score += 100; GeneralObject._gameModel.CurrentLevel._Mario.Notify(); GeneralObject.MainFacade.PlayStopSound(new MediaPlayer(), playingCommand.play, @"../../Views/Source/Sounds/mario_gotcha.wav", PlayingType.original); } else { GeneralObject._gameModel.CurrentLevel._Luigi.Score += 100; GeneralObject._gameModel.CurrentLevel._Luigi.Notify(); GeneralObject.MainFacade.PlayStopSound(new MediaPlayer(), playingCommand.play, @"../../Views/Source/Sounds/luigi_gotcha.wav", PlayingType.original); } GeneralObject._gameModel.CurrentLevel._Maps[0].Enemies.Remove(temp); NewGame.gameCanvas.Children.Remove(temp.ImageController); return(false); } else if (temp is Bonus) { if (Unit is Mario) { GeneralObject._gameModel.CurrentLevel._Mario.Score += 1000; GeneralObject._gameModel.CurrentLevel._Mario.Notify(); GeneralObject.MainFacade.PlayStopSound(new MediaPlayer(), playingCommand.play, @"../../Views/Source/Sounds/mario_bravo.wav", PlayingType.original); } else { GeneralObject._gameModel.CurrentLevel._Luigi.Score += 1000; GeneralObject._gameModel.CurrentLevel._Luigi.Notify(); GeneralObject.MainFacade.PlayStopSound(new MediaPlayer(), playingCommand.play, @"../../Views/Source/Sounds/luigi_bravo.wav", PlayingType.original); } GeneralObject._gameModel.CurrentLevel._Maps[0].Bonuses.Remove(temp); NewGame.gameCanvas.Children.Remove(temp.ImageController); return(false); } else { if (timer != null) { timer.Stop(); } } } return(true); } return(false); }
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); }