public KeyboardController(Game1 game, Mario mario)
        {
            time = 0;
            timeSinceToggle = 0;
            oldState = Keyboard.GetState(PlayerIndex.One);
            //action state keys
            keyBoardCommands.Add((int)Keys.Up, new UpCommand(mario));
            keyBoardCommands.Add((int)Keys.W, new UpCommand(mario));
            keyBoardCommands.Add((int)Keys.Down, new DownCommand(mario));
            keyBoardCommands.Add((int)Keys.S, new DownCommand(mario));
            keyBoardCommands.Add((int)Keys.Left, new LeftCommand(mario));
            keyBoardCommands.Add((int)Keys.A, new LeftCommand(mario));
            keyBoardCommands.Add((int)Keys.Right, new RightCommand(mario));
            keyBoardCommands.Add((int)Keys.D, new RightCommand(mario));
            keyBoardCommands.Add((int)Keys.Up & (int)Keys.Left, new UpLeftCommand(mario));
            keyBoardCommands.Add((int)Keys.Space, new FireballCommand(mario));
            keyBoardCommands.Add((int)Keys.F, new PlaceBlockCommand(game.Scene));
            keyBoardCommands.Add((int)Keys.H, new DestroyBlockCommand(game.Scene));

            //power up state keys
            keyBoardCommands.Add((int)Keys.Y, new StandardCommand(mario));
            keyBoardCommands.Add((int)Keys.U, new SuperCommand(mario));
            keyBoardCommands.Add((int)Keys.I, new FireCommand(mario));
            keyBoardCommands.Add((int)Keys.O, new DeadCommand(mario));
            //Game commands
            keyBoardCommands.Add((int)Keys.R, new ResetCommand(game));
            keyBoardCommands.Add((int)Keys.P, new PauseCommand(game));
            keyBoardCommands.Add((int)Keys.Q, new QuitCommand(game));
            keyBoardCommands.Add((int)Keys.M, new MuteCommand(game));
            keyBoardCommands.Add((int)Keys.V, new VictoryCommand(game));
            keyBoardCommands.Add((int)Keys.G, new GameoverCommand(game));
        }
示例#2
0
 public OtherCollision(Mario mario, Scene scene, Quadtree quadtree)
 {
     this.scene = scene;
     this.mario = mario;
     this.sprites = scene.SSprites;
     this.movsprites = scene.MovSprites;
     this.quad = quadtree;
     this.sounds = new SoundMachine(scene.Game);
     this.nearObjects = new List<Sprite>();
 }
示例#3
0
        public GamePadController(Game1 game, Mario mario)
        {
            oldState = GamePad.GetState(PlayerIndex.One);

                GamepadCommands.Add((int)Buttons.DPadUp, new UpCommand(mario));
                GamepadCommands.Add((int)Buttons.DPadDown, new DownCommand(mario));
                GamepadCommands.Add((int)Buttons.DPadLeft, new LeftCommand(mario));
                GamepadCommands.Add((int)Buttons.DPadRight, new RightCommand(mario));
                GamepadCommands.Add((int)Buttons.B, new FireballCommand(mario));

                GamepadCommands.Add((int)Buttons.Start, new PauseCommand(game));
        }
示例#4
0
 protected override void Draw(GameTime gameTime)
 {
     if (atMainMenu)
     {
         home.Draw(spriteBatch, GraphicsDevice);
     }
     else
     {
         if (!(curLevel.Contains("Underground") || curLevel.Contains("Four")))
         {
             GraphicsDevice.Clear(Color.CornflowerBlue);
         }
         else
         {
             GraphicsDevice.Clear(Color.Black);
         }
         if (!isGameOver)
         {
             GameNotOverDraw(gameTime);
         }
         else
         {
             MusicManager.Instance.StopBackgroundMusic();
             parser.Draw();
             Mario.Draw(spriteBatch);
             UI.Draw(spriteBatch);
             trophy.Draw();
             if (delay > 150)
             {
                 load.GameOver(spriteBatch);
                 if (!soundPlayed)
                 {
                     MarioWorldSoundBoard.Instance.PlayGameOver();
                     soundPlayed = true;
                 }
                 else if (soundPlayed && delay > 350)
                 {
                     changer.changeLevel();
                     LevelChanger.SetBGMusic(curLevel);
                     delay       = 0;
                     soundPlayed = false;
                     st          = new ScoreTracker();
                     isGameOver  = false;
                 }
             }
             delay++;
         }
     }
 }
示例#5
0
        public KeyboardController(Game1 game, Mario mario)
        {
            oldState = Keyboard.GetState(PlayerIndex.One);
            //action state keys
            keyBoardCommands.Add((int)Keys.Up, new UpCommand(mario));
            keyBoardCommands.Add((int)Keys.W, new UpCommand(mario));
            keyBoardCommands.Add((int)Keys.Down, new DownCommand(mario));
            keyBoardCommands.Add((int)Keys.S, new DownCommand(mario));
            keyBoardCommands.Add((int)Keys.Left, new LeftCommand(mario));
            keyBoardCommands.Add((int)Keys.A, new LeftCommand(mario));
            keyBoardCommands.Add((int)Keys.Right, new RightCommand(mario));
            keyBoardCommands.Add((int)Keys.D, new RightCommand(mario));
            keyBoardCommands.Add((int)Keys.Space, new FireballCommand(mario));

            //power up state keys
            keyBoardCommands.Add((int)Keys.Y, new StandardCommand(mario));
            keyBoardCommands.Add((int)Keys.U, new SuperCommand(mario));
            keyBoardCommands.Add((int)Keys.I, new FireCommand(mario));
            keyBoardCommands.Add((int)Keys.O, new DeadCommand(mario));
            //block keys
            //reset command
            keyBoardCommands.Add((int)Keys.R, new ResetCommand(game));
            keyBoardCommands.Add((int)Keys.P, new PauseCommand(game));
        }
示例#6
0
        public void ResetContent()
        {
            spriteBatch = new SpriteBatch(game.GraphicsDevice);
            sprites = new List<ISprite>();
            movSprites = new List<Sprite>();
            ssprites = new List<Sprite>();
            victoryScreen = new VictoryScreen(game);
            gameOverScreen = new GameOverScreen(game);

            mario = new Mario(game, this);
            // Create a camera instance and limit its moving range
            _camera = new Camera(game.GraphicsDevice.Viewport);

            // Create 9 layers with parallax ranging from 0% to 100% (only horizontal)
            _layers = new Layer[9];
            hud = new HUD(game, mario);
            parser = new Parser(game);
            if (Map == 1)
            {
                parser.Parse(mario, sprites, movSprites, ssprites, _layers, _camera, "map.xml");

            }
            else if (Map == 2)
            {
                parser.Parse(mario, sprites, movSprites, ssprites, _layers, _camera, "map2.xml");
            }
            else if (Map == 3)
            {
                parser.Parse(mario, sprites, movSprites, ssprites, _layers, _camera, "map3.xml");
            }

            isPaused = false;
            isMuted = false;
            victory = false;
            defeat = false;
            SoundEffect effect = game.Content.Load<SoundEffect>("OriginalThemeSong");
            instance = effect.CreateInstance();
            instance.IsLooped = true;
            instance.Play();

            quad = new Quadtree(0, new CollisionBox(0, 0, game.GraphicsDevice.Viewport.Width, game.GraphicsDevice.Viewport.Height));
            secquad = new Quadtree(0, new CollisionBox(0, 0, game.GraphicsDevice.Viewport.Width, game.GraphicsDevice.Viewport.Height));

            collision = new MarioCollision(mario, this);
            sec_collision = new OtherCollision(mario, this, secquad);
            ////////////////////////////

            //this.Mute();
            ////////////////////////////////

            screenHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
            screenWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;

            Font1 = game.Content.Load<SpriteFont>("MarioPoints");
            keyboardCont = new KeyboardController(game, mario);
            gamePadCont = new GamePadController(game, mario);
            // TODO: use this.Content to load your game content here
        }
示例#7
0
文件: Scene.cs 项目: bergerad/Test
        private void Parse(XmlReader reader)
        {
            int type;
            int posX;
            int posY;
            String str;
            Sprite sprite;
            Vector2 vec;
            while (reader.Read())
            {
                switch (reader.Name)
                {
                    case "block":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("type");
                                type = Convert.ToInt32(str);
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                posX *= 16;
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                posY *= 16;
                                vec = new Vector2(posX, posY);
                                sprite = blockFactory.MakeProduct(type);
                                sprite.CollisionBox.Physics(vec, Vector2.Zero, Vector2.Zero);
                                System.Console.WriteLine("newblock");
                                System.Console.WriteLine("min =" + sprite.CollisionBox.Min);
                                System.Console.WriteLine("max =" + sprite.CollisionBox.Max);
                                //System.Console.WriteLine(sprite.CollisionBox.Cells[0]);
                                //System.Console.WriteLine(sprite.CollisionBox.Cells[1]);
                                //System.Console.WriteLine(sprite.CollisionBox.Cells[2]);
                                //System.Console.WriteLine(sprite.CollisionBox.Cells[3]);
                                sprites.Add(sprite);

                                //check for coins and items
                            }
                            break;
                        }
                    case "mario":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                mario = new Mario(game, posX, posY);
                            }
                            break;
                        }
                    case "item":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("type");
                                type = Convert.ToInt32(str);
                                sprite = itemFactory.MakeProduct(type);
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                posX *= 16;
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                posY *= 16;
                                vec = new Vector2(posX, posY);
                                sprite.CollisionBox.Physics(vec,Vector2.Zero, Vector2.Zero);

                                sprites.Add(sprite);
                            }
                            break;
                        }
                    case "enemy":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("type");
                                type = Convert.ToInt32(str);
                                sprite = enemyFactory.MakeProduct(type);
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                posX *= 16;
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                posY *= 16;
                                vec = new Vector2(posX, posY);
                                sprite.CollisionBox.Physics(vec, Vector2.Zero, Vector2.Zero);
                                sprites.Add(sprite);
                            }
                            break;
                        }

                }

            }
        }
示例#8
0
 public MarioIdleState(Mario mario)
     : base(mario)
 {
 }
示例#9
0
 public MarioJumpingState(Mario mario)
     : base(mario)
 {
 }
示例#10
0
 public MarioWalkingState(Mario mario)
     : base(mario)
 {
 }
示例#11
0
 public MarioFire(Mario mario)
     : base(mario)
 {
 }
 public MarioJumpingState(Mario mario)
     : base(mario)
 {
     gravity = mario.Gravity;
 }
示例#13
0
        internal static void EnemyCollisions()
        {
            Enemy deadEnemy = null;

            foreach (Enemy en in Resources.levelOneEnemies)
            {
                if (Math.Abs(en.enemy.Left - Mario.mario.Left) <= 18 * x)
                {
                    foreach (Control c in form.Controls)
                    {
                        if (c is PictureBox && c.Tag == "block" && Math.Abs((c as PictureBox).Left - Mario.mario.Left) <= 20 * x)
                        {
                            if (en.enemy.Bounds.IntersectsWith(c.Bounds))
                            {
                                if (BottomCollision(en.enemy, c as PictureBox))
                                {
                                    en.enemy.Top = c.Top - x;
                                    en.force     = 0;
                                }

                                if (RightCollision(en.enemy, c as PictureBox))
                                {
                                    en.right      = false;
                                    en.enemy.Left = c.Left - x;
                                    en.left       = true;
                                }

                                if (LeftCollision(en.enemy, c as PictureBox))
                                {
                                    en.left       = false;
                                    en.enemy.Left = c.Right;
                                    en.right      = true;
                                }
                            }
                        }
                    }
                    if (Mario.mario.Bounds.IntersectsWith(en.enemy.Bounds))
                    {
                        if (BottomCollision(Mario.mario, en.enemy))
                        {
                            Mario.jump  = true;
                            Mario.force = 8;
                            en.Die();
                            deadEnemy = en;
                        }
                        else
                        {
                            if (!Mario.invincible)
                            {
                                if (Mario.upgrade == 0)
                                {
                                    Mario.Lose();
                                }
                                else
                                {
                                    Mario.GotHit();
                                }
                            }
                        }
                    }
                }
            }

            if (deadEnemy != null)
            {
                Resources.levelOneEnemies.Remove(deadEnemy);
            }
        }
示例#14
0
 public MarioStandard(Mario mario)
     : base(mario)
 {
 }
 public void UpdatePosition(GameTime gameTime, ref ScreenManager Screenmanager, ref Mario mario)
 {
     if (LifeSpan < 2)
     {
         return;
     }
     Moving = "False";
     if (Keyboard.GetState().IsKeyDown(Keys.Right))
     {
         Position.X += 4;
         Direction   = "Right";
         Moving      = "True";
     }
     if (Keyboard.GetState().IsKeyDown(Keys.Left))
     {
         Position.X -= 4;
         Direction   = "Left";
         Moving      = "True";
     }
     if (Keyboard.GetState().IsKeyDown(Keys.Up))
     {
         if (Jumping == "False")
         {
             if (this.GetType() == typeof(MarioSmall))
             {
                 Content.Load <SoundEffect>("JumpSmall").Play();
             }
             else
             {
                 Content.Load <SoundEffect>("JumpSuper").Play();
             }
             Jumping = "True";
             Gravity = -20;
         }
     }
     if (Jumping == "True")
     {
         Position.Y += Gravity;
         Gravity++;
     }
     if (Position.X <= 0)
     {
         Screenmanager.Backward();
     }
     if (Position.X + Width >= 800)
     {
         Screenmanager.Forward();
     }
     if (Position.Y > 456)
     {
         mario.Mariostate = new MarioSmall(Content, mario.Mariostate.Position, 35, 40);
         mario.Destroy();
     }
 }
 protected MarioPowerupState(Mario mario)
 {
     this.mario = mario;
 }
示例#17
0
        public static void BulletBrick(GameTime gametime, ref Mario mario, ref BrickManager brickmanager, ref EnemyManager enemymanager)
        {
            if (mario == null)
            {
                return;
            }
            if (mario.Mariostate.LifeSpan < 2)
            {
                return;
            }
            if (mario.bullet.released == false)
            {
                return;
            }

            for (int i = 0; i < brickmanager.Bricks.Count; i++)
            {
                if (brickmanager.Bricks[i] != null)
                {
                    if (mario.bullet.Bounds.Intersects(brickmanager.Bricks[i].Bounds))
                    {
                        if (brickmanager.Bricks[i].GetType() != typeof(PlatformBrick))
                        {
                            mario.bullet.released = false;
                            mario.bullet.timer    = 0;
                            //mario.bullet = null;
                            break;
                        }
                    }
                }
            }
            for (int i = 0; i < enemymanager.Enemies.Count; i++)
            {
                if (mario == null)
                {
                    return;
                }
                if (mario.Mariostate.LifeSpan < 2)
                {
                    return;
                }
                if (mario.bullet.released == false)
                {
                    return;
                }
                if (enemymanager.Enemies[i] != null)
                {
                    if (enemymanager.Enemies[i].LifeSpan == 0)
                    {
                        enemymanager.Enemies[i] = null;
                        continue;
                    }
                    if (mario.bullet.Bounds.Intersects(enemymanager.Enemies[i].Bounds))
                    {
                        enemymanager.Enemies[i].Destroy();
                        mario.bullet.released = false;
                        mario.bullet.timer    = 0;
                        break;
                    }
                }
            }
        }
示例#18
0
 public static void CollideEnemies(GameTime gameTIme, ref Mario mario, ref EnemyManager Enemymanager, ContentManager Content)
 {
     for (int i = 0; i < Enemymanager.Enemies.Count; i++)
     {
         if (mario == null)
         {
             return;
         }
         if (mario.Mariostate.LifeSpan < 2)
         {
             return;
         }
         if (Enemymanager.Enemies[i] == null)
         {
             continue;
         }
         if (Enemymanager.Enemies[i].LifeSpan == 0)
         {
             Enemymanager.Enemies[i] = null;
             continue;
         }
         if (mario.Bounds.Intersects(Enemymanager.Enemies[i].Bounds))
         {
             if (Enemymanager.Enemies[i].GetType() == typeof(Gumba) && Enemymanager.Enemies[i].LifeSpan == 2)
             {
                 if (mario.Mariostate.Jumping == "True" && mario.Mariostate.Position.Y < Enemymanager.Enemies[i].Position.Y)
                 {
                     Enemymanager.Enemies[i].Destroy();
                     int TempGravity = mario.Mariostate.Gravity;
                     mario.Mariostate.Gravity     = -TempGravity + (TempGravity / 2);
                     mario.Mariostate.Position.Y -= 10;
                     Content.Load <SoundEffect>("Kick").Play();
                 }
                 else if (mario.Mariostate.Vibrating == false)
                 {
                     string Direction = mario.Mariostate.Direction;
                     if (mario.Mariostate.GetType() == typeof(MarioFire))
                     {
                         mario.Mariostate           = new MarioBig(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y), 45, 78);
                         mario.Mariostate.Direction = Direction;
                         mario.Mariostate.Vibrating = true;
                         Content.Load <SoundEffect>("Shrink").Play();
                     }
                     else if (mario.Mariostate.GetType() == typeof(MarioBig))
                     {
                         mario.Mariostate           = new MarioSmall(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y + 38), 35, 40);
                         mario.Mariostate.Direction = Direction;
                         mario.Mariostate.Vibrating = true;
                         Content.Load <SoundEffect>("Shrink").Play();
                     }
                     else
                     {
                         mario.Destroy();
                     }
                 }
             }
             else if (Enemymanager.Enemies[i].GetType() == typeof(Spiny) || Enemymanager.Enemies[i].GetType() == typeof(BillBlasterBullet))
             {
                 if (Enemymanager.Enemies[i].GetType() == typeof(BillBlasterBullet) && mario.Mariostate.Landing == "BillBlaster")
                 {
                     continue;
                 }
                 if (mario.Mariostate.Vibrating == false)
                 {
                     string Direction = mario.Mariostate.Direction;
                     if (mario.Mariostate.GetType() == typeof(MarioFire))
                     {
                         mario.Mariostate           = new MarioBig(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y), 45, 78);
                         mario.Mariostate.Direction = Direction;
                         mario.Mariostate.Vibrating = true;
                         Content.Load <SoundEffect>("Shrink").Play();
                     }
                     else if (mario.Mariostate.GetType() == typeof(MarioBig))
                     {
                         mario.Mariostate           = new MarioSmall(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y + 38), 35, 40);
                         mario.Mariostate.Direction = Direction;
                         mario.Mariostate.Vibrating = true;
                         Content.Load <SoundEffect>("Shrink").Play();
                     }
                     else
                     {
                         mario.Destroy();
                     }
                 }
             }
             else if (Enemymanager.Enemies[i].GetType() == typeof(Plant))
             {
                 if (mario.Mariostate.Vibrating == false)
                 {
                     string Direction = mario.Mariostate.Direction;
                     if (mario.Mariostate.GetType() == typeof(MarioFire))
                     {
                         mario.Mariostate           = new MarioBig(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y), 45, 78);
                         mario.Mariostate.Direction = Direction;
                         mario.Mariostate.Vibrating = true;
                         Content.Load <SoundEffect>("Shrink").Play();
                     }
                     else if (mario.Mariostate.GetType() == typeof(MarioBig))
                     {
                         mario.Mariostate           = new MarioSmall(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y + 38), 35, 40);
                         mario.Mariostate.Direction = Direction;
                         mario.Mariostate.Vibrating = true;
                         Content.Load <SoundEffect>("Shrink").Play();
                     }
                     else
                     {
                         mario.Destroy();
                     }
                 }
             }
             else if (Enemymanager.Enemies[i].GetType() == typeof(Duck))
             {
                 if (mario.Mariostate.Vibrating == false)
                 {
                     if (mario.Mariostate.Jumping == "True")
                     {
                         int TempGravity = mario.Mariostate.Gravity;
                         mario.Mariostate.Gravity     = -TempGravity + (TempGravity / 2);
                         mario.Mariostate.Position.Y -= 10;
                         if (Enemymanager.Enemies[i].LifeSpan > 3)
                         {
                             Enemymanager.Enemies[i].LifeSpan = 3;
                         }
                         else
                         {
                             Enemymanager.Enemies[i] = null;
                         }
                         Content.Load <SoundEffect>("Kick").Play();
                     }
                     else if (mario.Mariostate.GetType() == typeof(MarioFire))
                     {
                         if (Enemymanager.Enemies[i].LifeSpan == 3)
                         {
                             if (mario.Mariostate.Position.X <= Enemymanager.Enemies[i].Position.X)
                             {
                                 Enemymanager.Enemies[i].LifeSpan    = 2;
                                 Enemymanager.Enemies[i].Direction   = "Right";
                                 Enemymanager.Enemies[i].Position.X += 7;
                             }
                             else
                             {
                                 Enemymanager.Enemies[i].LifeSpan    = 1;
                                 Enemymanager.Enemies[i].Direction   = "Left";
                                 Enemymanager.Enemies[i].Position.X -= 7;
                             }
                         }
                         else
                         {
                             mario.Mariostate           = new MarioBig(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y), 45, 78);
                             mario.Mariostate.Vibrating = true;
                             Content.Load <SoundEffect>("Shrink").Play();
                         }
                     }
                     else if (mario.Mariostate.GetType() == typeof(MarioBig))
                     {
                         if (Enemymanager.Enemies[i].LifeSpan == 3)
                         {
                             if (mario.Mariostate.Position.X <= Enemymanager.Enemies[i].Position.X)
                             {
                                 Enemymanager.Enemies[i].LifeSpan    = 2;
                                 Enemymanager.Enemies[i].Direction   = "Right";
                                 Enemymanager.Enemies[i].Position.X += 7;
                             }
                             else
                             {
                                 Enemymanager.Enemies[i].LifeSpan    = 1;
                                 Enemymanager.Enemies[i].Direction   = "Left";
                                 Enemymanager.Enemies[i].Position.X -= 7;
                             }
                         }
                         else
                         {
                             mario.Mariostate           = new MarioSmall(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y + 38), 35, 40);
                             mario.Mariostate.Vibrating = true;
                             Content.Load <SoundEffect>("Shrink").Play();
                         }
                     }
                     else
                     {
                         if (Enemymanager.Enemies[i].LifeSpan == 3)
                         {
                             if (mario.Mariostate.Position.X <= Enemymanager.Enemies[i].Position.X)
                             {
                                 Enemymanager.Enemies[i].LifeSpan    = 2;
                                 Enemymanager.Enemies[i].Direction   = "Right";
                                 Enemymanager.Enemies[i].Position.X += 7;
                             }
                             else
                             {
                                 Enemymanager.Enemies[i].LifeSpan    = 1;
                                 Enemymanager.Enemies[i].Direction   = "Left";
                                 Enemymanager.Enemies[i].Position.X -= 7;
                             }
                         }
                         else
                         {
                             mario.Destroy();
                         }
                     }
                 }
             }
         }
     }
 }
示例#19
0
 public static void CollideItems(GameTime gameTIme, ref Mario mario, ref ItemManager Itemmanager, ContentManager Content)
 {
     if (mario == null)
     {
         return;
     }
     if (mario.Mariostate.LifeSpan < 2)
     {
         return;
     }
     for (int i = 0; i < Itemmanager.Items.Count; i++)
     {
         if (Itemmanager.Items[i] == null)
         {
             continue;
         }
         if (Itemmanager.Items[i].LifeSpan == 0)
         {
             Itemmanager.Items[i] = null;
             continue;
         }
         if (mario.Bounds.Intersects(Itemmanager.Items[i].Bounds))
         {
             if (Itemmanager.Items[i].GetType() == typeof(Mushroom) && Itemmanager.Items[i].LifeSpan == 2)
             {
                 string Direction = mario.Mariostate.Direction;
                 if (mario.Mariostate.GetType() == typeof(MarioSmall))
                 {
                     mario.Mariostate           = new MarioBig(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y - 38), 45, 78);
                     mario.Mariostate.Direction = Direction;
                     Itemmanager.Items[i]       = null;
                     Content.Load <SoundEffect>("PowerUp").Play();
                 }
             }
             else if (Itemmanager.Items[i].GetType() == typeof(FireFlower) && Itemmanager.Items[i].LifeSpan == 2)
             {
                 string Direction = mario.Mariostate.Direction;
                 if (mario.Mariostate.GetType() == typeof(MarioBig))
                 {
                     mario.Mariostate           = new MarioFire(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y - 2), 45, 78);
                     mario.Mariostate.Direction = Direction;
                     Itemmanager.Items[i]       = null;
                     Content.Load <SoundEffect>("PowerUp").Play();
                 }
                 else if (mario.Mariostate.GetType() == typeof(MarioSmall))
                 {
                     mario.Mariostate           = new MarioFire(Content, new Vector2(mario.Bounds.X, mario.Bounds.Y - 38), 45, 78);
                     mario.Mariostate.Direction = Direction;
                     Itemmanager.Items[i]       = null;
                     Content.Load <SoundEffect>("PowerUp").Play();
                 }
             }
             else if (Itemmanager.Items[i].GetType() == typeof(Coins))
             {
                 mario.num_coins++;
                 if (mario.num_coins == 5)
                 {
                     mario.num_coins = 0;
                     mario.Lives++;
                 }
                 Itemmanager.Items[i] = null;
                 Content.Load <SoundEffect>("Coin").Play();
             }
         }
     }
 }
示例#20
0
        public static void CollideBricks(GameTime gameTIme, ref Mario mario, ref BrickManager Brickmanager, ref ItemManager Itemmanager, ContentManager Content, ref ScreenManager Screenmanager)
        {
            if (mario == null)
            {
                return;
            }
            if (mario.Mariostate.LifeSpan < 2)
            {
                return;
            }
            string Landing = mario.Mariostate.Landing, LandingBoolean = "False";

            for (int i = 0; i < Brickmanager.Bricks.Count; i++)
            {
                if (Brickmanager.Bricks[i] == null)
                {
                    continue;
                }
                if (Brickmanager.Bricks[i].LifeSpan == 0)
                {
                    Brickmanager.Bricks[i] = null;
                    continue;
                }
                if (mario.Bounds.Intersects(Brickmanager.Bricks[i].Bounds))
                {
                    if (Brickmanager.Bricks[i].GetType() == typeof(NormalBrick) && Brickmanager.Bricks[i].LifeSpan == 2)
                    {
                        if (mario.Bounds.Y > Brickmanager.Bricks[i].Bounds.Y)
                        {
                            mario.Mariostate.Position.Y = Brickmanager.Bricks[i]._Texture.Height + Brickmanager.Bricks[i].Position.Y;
                            mario.Mariostate.Gravity    = 1;
                            if (mario.Mariostate.GetType() != typeof(MarioSmall))
                            {
                                Brickmanager.Bricks[i].Destroy();
                                Content.Load <SoundEffect>("BrickSmash").Play();
                            }
                            else
                            {
                                Brickmanager.Bricks[i].LoadAnimation();
                                Content.Load <SoundEffect>("Bump").Play();
                            }
                        }
                        else if (mario.Mariostate.Gravity >= 0)
                        {
                            Landing        = "Normal";
                            LandingBoolean = "True";
                            if (mario.Mariostate.Jumping == "True")
                            {
                                mario.Mariostate.Jumping    = "False";
                                mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 3;
                            }
                        }
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(Caslte))
                    {
                        if (mario.Mariostate.Position.X >= 600 && mario.Mariostate.Position.X < 690)
                        {
                            mario.Mariostate.Position.X = 800;
                        }
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(Escalator))
                    {
                        if (mario.Bounds.Y > Brickmanager.Bricks[i].Position.Y - 2)
                        {
                            mario.Mariostate.Position.Y = Brickmanager.Bricks[i]._Texture.Height + Brickmanager.Bricks[i].Position.Y;
                            mario.Mariostate.Gravity    = 1;
                        }
                        else
                        {
                            LandingBoolean = "True";
                            if (mario.Mariostate.Jumping == "True")
                            {
                                mario.Mariostate.Jumping    = "False";
                                mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 1;
                            }
                        }
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(FLAG))
                    {
                        mario.Mariostate.Gravity = 5;
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(SpecialBrick))
                    {
                        if (mario.Bounds.Y > Brickmanager.Bricks[i].Bounds.Y)
                        {
                            mario.Mariostate.Position.Y = Brickmanager.Bricks[i]._Texture.Height + Brickmanager.Bricks[i].Position.Y;
                            mario.Mariostate.Gravity    = 1;
                            if (Itemmanager.Items[Brickmanager.Bricks[i].Index] != null)
                            {
                                if (Itemmanager.Items[Brickmanager.Bricks[i].Index].LifeSpan == 1)
                                {
                                    Itemmanager.Items[Brickmanager.Bricks[i].Index].LifeSpan = 2;
                                    Content.Load <SoundEffect>("PowerUpAppears").Play();
                                }
                            }
                            if (Brickmanager.Bricks[i].LifeSpan == 2)
                            {
                                Brickmanager.Bricks[i].Destroy();
                            }
                        }
                        else if (mario.Mariostate.Gravity >= 0)
                        {
                            Landing        = "Special";
                            LandingBoolean = "True";
                            if (mario.Mariostate.Jumping == "True")
                            {
                                mario.Mariostate.Jumping    = "False";
                                mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 3;
                            }
                        }
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(INVBrick))
                    {
                        if (mario.Bounds.Y > Brickmanager.Bricks[i].Bounds.Y && mario.Mariostate.Gravity < 0)
                        {
                            mario.Mariostate.Position.Y = Brickmanager.Bricks[i]._Texture.Height + Brickmanager.Bricks[i].Position.Y;
                            mario.Mariostate.Gravity    = 1;
                            if (Itemmanager.Items[Brickmanager.Bricks[i].Index] != null)
                            {
                                if (Itemmanager.Items[Brickmanager.Bricks[i].Index].LifeSpan == 1)
                                {
                                    Itemmanager.Items[Brickmanager.Bricks[i].Index].LifeSpan = 2;
                                    Content.Load <SoundEffect>("PowerUpAppears").Play();
                                }
                            }
                            if (Brickmanager.Bricks[i].LifeSpan == 2)
                            {
                                Brickmanager.Bricks[i].Destroy();
                            }
                        }
                        else if (mario.Mariostate.Gravity >= 0 && Brickmanager.Bricks[i].LifeSpan == 1)
                        {
                            Landing        = "Special";
                            LandingBoolean = "True";
                            if (mario.Mariostate.Jumping == "True")
                            {
                                mario.Mariostate.Jumping    = "False";
                                mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 3;
                            }
                        }
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(PlatformBrick))
                    {
                        Landing        = "Platform";
                        LandingBoolean = "True";
                        mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 1;
                        if (mario.Mariostate.Jumping == "True")
                        {
                            mario.Mariostate.Jumping = "False";
                        }
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(Pipe))
                    {
                        int MostRight = (int)Brickmanager.Bricks[i].Position.X + Brickmanager.Bricks[i]._Texture.Width;
                        int Length    = (int)mario.Mariostate.Position.X + mario.Mariostate.Width;
                        if (mario.Mariostate.Position.Y <= Brickmanager.Bricks[i].Position.Y && mario.Mariostate.Gravity >= 0)
                        {
                            Landing        = "Pipe";
                            LandingBoolean = "True";
                            if (Screenmanager.CurrentScreenIndex == 3 && Keyboard.GetState().IsKeyDown(Keys.Down) && mario.Mariostate.Position.X <= 300)
                            {
                                Screenmanager.Forward();
                                mario.Mariostate.Position.X = 25;
                                mario.Mariostate.Position.Y = 0;
                            }
                            else if (Screenmanager.CurrentScreenIndex == 4 && Keyboard.GetState().IsKeyDown(Keys.Down))
                            {
                                Screenmanager.Backward();
                                mario.Mariostate.Position.X = 620;
                            }
                            if (mario.Mariostate.Jumping == "True")
                            {
                                mario.Mariostate.Jumping    = "False";
                                mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 1;
                            }
                        }
                        else if (Length < MostRight)
                        {
                            mario.Mariostate.Moving     = "False";
                            mario.Mariostate.Position.X = Brickmanager.Bricks[i].Position.X - mario.Mariostate.Width;
                        }
                        else
                        {
                            mario.Mariostate.Moving     = "False";
                            mario.Mariostate.Position.X = MostRight;
                        }
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(BillBlaster))
                    {
                        if (Landing != "BillBlaster")
                        {
                            if (mario.Mariostate.Gravity >= 0 && mario.Mariostate.Jumping == "True")
                            {
                                Landing        = "BillBlaster";
                                LandingBoolean = "True";
                                mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 1;
                                mario.Mariostate.Jumping    = "False";
                            }
                            else if (mario.Mariostate.Position.X < Brickmanager.Bricks[i].Position.X)
                            {
                                mario.Mariostate.Position.X = Brickmanager.Bricks[i].Position.X - mario.Mariostate.Width;
                                mario.Mariostate.Moving     = "False";
                            }
                            else
                            {
                                mario.Mariostate.Position.X = Brickmanager.Bricks[i].Position.X + Brickmanager.Bricks[i]._Texture.Width;
                                mario.Mariostate.Moving     = "False";
                            }
                        }
                        else
                        {
                            LandingBoolean = "True";
                        }
                    }
                    else if (Brickmanager.Bricks[i].GetType() == typeof(stairs))
                    {
                        if (mario.Mariostate.GetType() == typeof(MarioSmall))
                        {
                            if (mario.Mariostate.Position.Y + 20 <= Brickmanager.Bricks[i].Position.Y && mario.Mariostate.Gravity >= 0)
                            {
                                LandingBoolean = "True";
                                if (mario.Mariostate.Jumping == "True")
                                {
                                    mario.Mariostate.Jumping    = "False";
                                    mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 1;
                                }
                            }
                            else if (mario.Mariostate.Position.X <= Brickmanager.Bricks[i].Position.X)
                            {
                                mario.Mariostate.Moving     = "False";
                                mario.Mariostate.Position.X = Brickmanager.Bricks[i].Position.X - mario.Mariostate.Width;
                            }
                            else
                            {
                                mario.Mariostate.Moving     = "False";
                                mario.Mariostate.Position.X = Brickmanager.Bricks[i].Position.X + Brickmanager.Bricks[i]._Texture.Width;
                            }
                        }
                        else
                        {
                            if (mario.Mariostate.Position.Y + 50 <= Brickmanager.Bricks[i].Position.Y && mario.Mariostate.Gravity >= 0)
                            {
                                LandingBoolean = "True";
                                if (mario.Mariostate.Jumping == "True")
                                {
                                    mario.Mariostate.Jumping    = "False";
                                    mario.Mariostate.Position.Y = Brickmanager.Bricks[i].Position.Y - mario.Mariostate.Height + 1;
                                }
                            }
                            else if (mario.Mariostate.Position.X <= Brickmanager.Bricks[i].Position.X)
                            {
                                mario.Mariostate.Moving     = "False";
                                mario.Mariostate.Position.X = Brickmanager.Bricks[i].Position.X - mario.Mariostate.Width;
                            }
                            else
                            {
                                mario.Mariostate.Moving     = "False";
                                mario.Mariostate.Position.X = Brickmanager.Bricks[i].Position.X + Brickmanager.Bricks[i]._Texture.Width;
                            }
                        }
                    }
                }
            }
            mario.Mariostate.Landing = Landing;
            if (LandingBoolean == "False")
            {
                if (mario.Mariostate.Jumping == "False")
                {
                    mario.Mariostate.Jumping = "True";
                    mario.Mariostate.Landing = "";
                    mario.Mariostate.Gravity = 0;
                }
            }
        }
示例#21
0
        public void Parse(Mario mario, List<ISprite> sprites, List<Sprite> movSprites, List<Sprite> ssprites, Layer[] _layers, Camera _camera, String file)
        {
            //Get the list of checkpoints
            XmlReader reader = XmlReader.Create(file);
            int type;
            int posX;
            int posY;
            float scroll;
            float visibility;
            String str;
            String tex;
            Sprite sprite;
            Vector2 vec;
            Layer layer;
            while (reader.Read())
            {
                switch (reader.Name)
                {
                    case "block":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("type");
                                type = Convert.ToInt32(str);
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                posX *= 32;
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                posY *= 32;
                                vec = new Vector2(posX, posY);
                                sprite = blockFactory.MakeProduct(type);
                                sprite.CollisionBox.Physics(vec, Vector2.Zero, Vector2.Zero);
                                sprite.ContainsItem = Convert.ToInt32(reader.GetAttribute("containsItem"));
                                sprite.ContainsCoin = Convert.ToInt32(reader.GetAttribute("containsCoin"));
                                sprites.Add(sprite);
                                ssprites.Add(sprite);
                                //check for coins and items
                            }
                            break;
                        }
                    case "mario":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                vec = new Vector2(posX, posY);
                                mario.MarioVec = vec;
                            }
                            break;
                        }
                    case "camera":
                        {
                            if (reader.IsStartElement())
                            {
                                int width;
                                int height;
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                posX *= 32;
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                posY *= 32;
                                str = reader.GetAttribute("width");
                                width = Convert.ToInt32(str);
                                str = reader.GetAttribute("height");
                                height = Convert.ToInt32(str);
                                _camera.Limits = new Rectangle(posX, posY, width, height);
                            }
                            break;
                        }
                    case "item":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("type");
                                type = Convert.ToInt32(str);
                                sprite = itemFactory.MakeProduct(type);
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                posX *= 32;
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                posY *= 32;
                                vec = new Vector2(posX, posY);
                                sprite.CollisionBox.Physics(vec, Vector2.Zero, Vector2.Zero);
                                sprites.Add(sprite);
                                ssprites.Add(sprite);
                            }
                            break;
                        }
                    case "enemy":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("type");
                                type = Convert.ToInt32(str);
                                sprite = enemyFactory.MakeProduct(type);
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                posX *= 32;
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                posY *= 32;
                                posY -= 1;
                                vec = new Vector2(posX, posY);
                                sprite.CollisionBox.Physics(vec, Vector2.Zero, Vector2.Zero);
                                sprites.Add(sprite);
                                movSprites.Add(sprite);
                                ssprites.Add(sprite);
                            }
                            break;
                        }
                    case "floor":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("start");
                                int start = Convert.ToInt32(str);
                                str = reader.GetAttribute("num");
                                int num = Convert.ToInt32(str);
                                posY = 17*32;
                                for (int i = start; i < num+start; i++)
                                {
                                    posX = i * 32;
                                    sprite = blockFactory.MakeProduct(3);
                                    vec = new Vector2(posX, posY);
                                    sprite.CollisionBox.Physics(vec, Vector2.Zero, Vector2.Zero);
                                    sprites.Add(sprite);
                                    ssprites.Add(sprite);
                                    sprite = blockFactory.MakeProduct(3);
                                    vec = new Vector2(posX, posY + 32);
                                    sprite.CollisionBox.Physics(vec, Vector2.Zero, Vector2.Zero);
                                    sprites.Add(sprite);
                                    ssprites.Add(sprite);
                                }
                            }
                            break;
                        }
                    case "backgroundLayer":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("scroll");
                                scroll = float.Parse(str);
                                str = reader.GetAttribute("visibility");
                                visibility = float.Parse(str);
                                str = reader.GetAttribute("num");
                                type = Convert.ToInt32(str);
                                layer = new Layer(_camera) { Parallax = new Vector2(scroll, visibility) };
                                _layers[type] = layer;
                            }
                            break;
                        }
                    case "backgroundSprite":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("texture");
                                tex = str;
                                str = reader.GetAttribute("num");
                                type = Convert.ToInt32(str);
                                str = reader.GetAttribute("posX");
                                posX = Convert.ToInt32(str);
                                posX *= 32;
                                str = reader.GetAttribute("posY");
                                posY = Convert.ToInt32(str);
                                posY *= 32;
                                _layers[type].Sprites.Add(new BGSprite(new Vector2(posX, posY), game.Content.Load<Texture2D>(tex)));
                            }
                            break;
                        }
                    case "triangle":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("type");
                                type = Convert.ToInt32(str);
                                posX = Convert.ToInt32(reader.GetAttribute("posX")) *32;
                                posY = Convert.ToInt32(reader.GetAttribute("posY"))*32;
                                int width = Convert.ToInt32(reader.GetAttribute("width"));
                                int height = Convert.ToInt32(reader.GetAttribute("height"));
                                bool reverse = Convert.ToBoolean(reader.GetAttribute("reverse"));
                                if (reverse)
                                {
                                    for (int j = 0; j < height; j++)
                                    {
                                        for (int i = 0; i < width - j; i++)
                                        {
                                            sprite = blockFactory.MakeProduct(type);
                                            sprite.CollisionBox.Physics(new Vector2(posX + i * 32, posY - j * 32), Vector2.Zero, Vector2.Zero);
                                            sprites.Add(sprite);
                                            ssprites.Add(sprite);
                                        }
                                    }
                                }
                                else
                                {
                                    for (int j = height; j >= 0; j--)
                                    {
                                        for (int i = width; i >0 + j; i--)
                                        {

                                            sprite = blockFactory.MakeProduct(type);
                                            sprite.CollisionBox.Physics(new Vector2(posX + (i - width) * 32, posY - j * 32), Vector2.Zero, Vector2.Zero);
                                            sprites.Add(sprite);
                                            ssprites.Add(sprite);
                                        }
                                    }
                                }
                            }
                            break;
                        }

                    case "row":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("type");
                                type = Convert.ToInt32(str);
                                posX = Convert.ToInt32(reader.GetAttribute("posX")) * 32;
                                posY = Convert.ToInt32(reader.GetAttribute("posY")) * 32;
                                int num = Convert.ToInt32(reader.GetAttribute("num"));
                                for (int i = 0; i < num; i++)
                                {
                                    sprite = blockFactory.MakeProduct(type);
                                    sprite.CollisionBox.Physics(new Vector2(posX + i*32, posY), Vector2.Zero, Vector2.Zero);
                                    sprites.Add(sprite);
                                    ssprites.Add(sprite);
                                }
                            }
                            break;
                        }
                    case "flag":
                        {
                            if (reader.IsStartElement())
                            {
                                posX = Convert.ToInt32(reader.GetAttribute("posX")) * 32;
                                posY = Convert.ToInt32(reader.GetAttribute("posY")) * 32;
                                sprite = blockFactory.MakeProduct(8);
                                sprite.CollisionBox.Physics(new Vector2(posX, posY), Vector2.Zero, Vector2.Zero);
                                sprites.Add(sprite);
                                ssprites.Add(sprite);
                                posY += (int)sprite.CollisionBox.Height;
                                for (int i = 0; i < 7; i++)
                                {
                                    sprite = blockFactory.MakeProduct(9);
                                    sprite.CollisionBox.Physics(new Vector2(posX, posY+i*32), Vector2.Zero, Vector2.Zero);
                                    sprites.Add(sprite);
                                    ssprites.Add(sprite);
                                }
                                sprite = blockFactory.MakeProduct(10);
                                sprite.CollisionBox.Physics(new Vector2(posX-16, posY), Vector2.Zero, Vector2.Zero);
                                sprites.Add(sprite);
                                ssprites.Add(sprite);
                            }
                            break;
                        }
                    case "checkpoints":
                        {
                            if (reader.IsStartElement())
                            {
                                this.latestCheckpoint.Add(new Vector2(Convert.ToInt32(reader.GetAttribute("ch1X")),Convert.ToInt32(reader.GetAttribute("ch1Y"))));
                                this.latestCheckpoint.Add(new Vector2(Convert.ToInt32(reader.GetAttribute("ch2X")), Convert.ToInt32(reader.GetAttribute("ch2Y"))));
                                this.latestCheckpoint.Add(new Vector2(Convert.ToInt32(reader.GetAttribute("ch3X")), Convert.ToInt32(reader.GetAttribute("ch3Y"))));
                                this.latestCheckpoint.Add(new Vector2(Convert.ToInt32(reader.GetAttribute("ch4X")), Convert.ToInt32(reader.GetAttribute("ch4Y"))));
                            }
                            break;
                        }
                    case "gravity":
                        {
                            if (reader.IsStartElement())
                            {
                                str = reader.GetAttribute("accelY");
                                game.scene.Gravity = (float)Convert.ToDouble(str);
                            }
                            break;
                        }
                }
            }
        }
 public MarioCrouchingState(Mario mario)
     : base(mario)
 {
 }
示例#23
0
 public MarioSuper(Mario mario)
     : base(mario)
 {
 }
示例#24
0
 public DeadCommand(Mario receiver)
     : base(receiver)
 {
 }
示例#25
0
 public MarioDead(Mario mario)
     : base(mario)
 {
 }
示例#26
0
 protected MarioCommand(Mario receiver)
 {
     this.receiver = receiver;
 }
示例#27
0
 public Collision(Mario mario, Scene scene)
 {
     this.mario = mario;
     this.sprites = scene.Sprites;
 }
示例#28
0
 public RightCommand(Mario receiver)
     : base(receiver)
 {
 }
示例#29
0
        protected void GameNotOverDraw(GameTime gameTime)
        {
            parser.Draw();
            trophy.Draw();
            Mario.Draw(spriteBatch);
            pauser.Draw();
            if ((Mario.Health() == MarioStateMachine.MarioHealth.Dead && deathDelayScreen > 70 && st.Lives >= 0 && !(UI.getTime() <= 0)) || changingLevel)
            {
                load.Draw(spriteBatch);
                if (delay > 100)
                {
                    changingLevel = false;
                    st.EndStarCombo();
                    deathDelayScreen = 0;
                    delay            = 0;

                    st.LoseLife();
                    st.AllowFlagpolePoints();
                    st.TimePoints(UI.Time);
                    UI.SetTimer(400);
                }
                else
                {
                    delay++;
                }
            }
            else if ((Mario.Health() == MarioStateMachine.MarioHealth.Dead && !(UI.getTime() <= 0) || changingLevel) && st.Lives < 0)
            {
                isGameOver    = true;
                changingLevel = false;
            }
            if (needBlackScreen)
            {
                load.BlackScreen();
                if (delay > 30)
                {
                    needBlackScreen = false;
                    delay           = 0;
                }
                else
                {
                    delay++;
                }
            }
            if (UI.getTime() <= 0)
            {
                if (Mario.Health() == MarioStateMachine.MarioHealth.Normal && !alreadyKilled)
                {
                    Mario.KillMario();
                    alreadyKilled = true;
                }
                if (deathDelayScreen > 70)
                {
                    load.TimeUp(spriteBatch);
                    if (delay > 150)
                    {
                        alreadyKilled = false;
                        st.EndStarCombo();
                        deathDelayScreen = 0;
                        delay            = 0;
                        st.LoseLife();
                        st.AllowFlagpolePoints();
                        st.TimePoints(UI.Time);
                        UI.SetTimer(400);
                    }
                    else
                    {
                        delay++;
                    }
                }
            }
            UI.Draw(spriteBatch);
            editor.Draw(spriteBatch);
            if (Mario.Health() == MarioStateMachine.MarioHealth.Dead)
            {
                deathDelayScreen++;
            }
            base.Draw(gameTime);
        }
示例#30
0
 public StandardCommand(Mario receiver)
     : base(receiver)
 {
 }
示例#31
0
 protected MarioActionState(Mario mario)
 {
     this.mario = mario;
 }
示例#32
0
 public SuperCommand(Mario receiver)
     : base(receiver)
 {
 }
示例#33
0
 public override void Draw(SpriteBatch batch)
 {
     Mario.Draw(batch);
     base.Draw(batch);
 }
示例#34
0
 public UpLeftCommand(Mario receiver)
     : base(receiver)
 {
 }
示例#35
0
        public void LoadContent()
        {
            spriteBatch = new SpriteBatch(game.GraphicsDevice);

            levelManager = new LevelManager(Game);
            victoryScreen = new VictoryScreen(game);
            gameOverScreen = new GameOverScreen(game);

            mario = new Mario(game, this);
            isPaused = false;
            isMuted = false;
            victory = false;
            defeat = false;
            SoundEffect effect = game.Content.Load<SoundEffect>("OriginalThemeSong");
            instance = effect.CreateInstance();
            instance.IsLooped = true;
            instance.Play();

            ////////////////////////////

            //this.Mute();
            ////////////////////////////////

            screenHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
            screenWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;

            Font1 = game.Content.Load<SpriteFont>("MarioPoints");
            keyboardCont = new KeyboardController(game, mario);
            gamePadCont = new GamePadController(game, mario);
            // TODO: use this.Content to load your game content here
        }
示例#36
0
 public DownCommand(Mario receiver)
     : base(receiver)
 {
 }
 public MarioFallingState(Mario mario)
     : base(mario)
 {
 }
示例#38
0
 public FireballCommand(Mario receiver)
     : base(receiver)
 {
 }