Ejemplo n.º 1
0
        public void Update(GameTime gameTime)
        {
            if (scored)
            {
                Globals.HandleTimer(ref scoreDelay, gameTime, Restart);
            }

            Sprite.UpdateAll(gameTime);
            Globals.Map.Update();
            Explosion.CleanUp();
            Bomb.CleanUp();
            Powerup.CleanUp();

            playerList.RemoveAll(p => p.Dead);
            if (playerList.Count == 1 && !scored)
            {
                winner            = playerList[0];
                score[winner.Id] += 1;
                scoreDelay        = 2000;
                scored            = true;
            }

            if (playerList.Count == 0 && !scored)
            {
                scoreDelay = 2000;
                scored     = true;
            }
        }
Ejemplo n.º 2
0
        protected void handleDeath(GameTime gameTime)
        {
            if (Dead)
            {
                return;
            }

            Globals.HandleTimer(ref time, gameTime, Die);
        }
Ejemplo n.º 3
0
        public override void Update(GameTime gameTime)
        {
            if (Dead)
            {
                return;
            }

            Globals.HandleTimer(ref time, gameTime, Die);

            List <Tile> tiles = Globals.Map.Collide(this);

            foreach (Tile t in tiles.Where(t => t.Destroyable))
            {
                t.Die();
            }
        }
Ejemplo n.º 4
0
        public override void Update(GameTime gameTime)
        {
            Box.Y = Globals.WrappedY(Box.Y + (int)vy);
            vy   += gravity;

            if (vy > maxV)
            {
                vy = maxV;
            }

            if (Globals.Map.Collide(this).Any())
            {
                if (vy > 0)
                {
                    Box.Y   = (Box.Y / Globals.TileHeight) * Globals.TileHeight + (Globals.TileHeight - Box.Height);
                    jumping = false;
                }
                else
                {
                    Box.Y = ((Box.Y / Globals.TileHeight) + 1) * Globals.TileHeight;
                }
                Box.Y = Globals.WrappedY(Box.Y);
                vy    = 0;
            }

            foreach (Explosion e in Explosion.ExplosionList)
            {
                if (Collides(e))
                {
                    Dead = true;
                }
            }

            foreach (Powerup p in Powerup.PowerupList)
            {
                if (Collides(p))
                {
                    powerupSound.Play();
                    p.Effect(this);
                    p.Dead = true;
                }
            }

            Globals.HandleTimer(ref bombCooldown, gameTime);

            KeyboardState kbs = Keyboard.GetState();

            if (kbs.IsKeyDown(controls["right"]))
            {
                WalkRight();
            }
            if (kbs.IsKeyDown(controls["left"]))
            {
                WalkLeft();
            }
            if (kbs.IsKeyDown(controls["jump"]))
            {
                Jump();
            }

            /*
             * if (kbs.IsKeyDown(Keys.Q))
             * {
             *  BombType = (BombTypes)(((int)BombType + 1) % Enum.GetValues(typeof(BombTypes)).GetLength(0));
             * }
             */
            if (kbs.IsKeyDown(controls["bomb"]) && bombCooldown == 0)
            {
                bombHold += gameTime.ElapsedGameTime.Milliseconds;
                if (bombHold > bombHoldMax)
                {
                    bombHold = bombHoldMax;
                }
            }
            if (kbs.IsKeyUp(controls["bomb"]) && bombHold > 0)
            {
                throwSound.Play();
                if (PushBombs() == 0)
                {
                    Bomb  b;
                    float throwPower = ThrowModifier * (float)bombHold / (float)bombHoldMax;
                    if (BombType == BombTypes.Bomb)
                    {
                        b = new Bomb(Box, ExplosionSize);
                        b.Throw(throwPower, Direction);
                    }
                    else if (BombType == BombTypes.FloatingBomb)
                    {
                        b = new FloatingBomb(Box, ExplosionSize);
                        b.Throw(throwPower, Direction);
                    }
                    else if (BombType == BombTypes.StickyBomb)
                    {
                        b = new StickyBomb(Box, ExplosionSize);
                        b.Throw(throwPower, Direction);
                    }
                }
                bombCooldown = 200;
                bombHold     = 0;
            }
        }