Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }