コード例 #1
0
ファイル: Checkpoint.cs プロジェクト: rliebz/Puddle
 public void Animate(Level level)
 {
     if (activated && frameIndexX < (32 * 7) && (level.count % 2) == 0)
     {
         frameIndexX += 32;
     }
 }
コード例 #2
0
ファイル: Controls.cs プロジェクト: rliebz/Puddle
 public void Update(Level level)
 {
     kbo = kb;
     gpo = gp;
     kb = Keyboard.GetState();
     this.gp = GamePad.GetState(PlayerIndex.One);
 }
コード例 #3
0
ファイル: Shot.cs プロジェクト: rliebz/Puddle
        public virtual void CheckCollisions(Level level)
        {
            // Check collisions with enemies
            foreach (Enemy e in level.enemies)
            {
                if (Intersects(e))
                {
                    destroyed = true;
                    // TODO: Move enemy logic to enemy class
                    e.health -= damage;
                    e.spriteColor = Color.Red;
                    e.hurtPoint = level.count;
                }
            }

            // check collisions with blocks
            foreach (Sprite s in level.items)
            {
                if (s.isSolid && Intersects(s))
                    destroyed = true;
            }

            if (offScreen)
                destroyed = true;
        }
コード例 #4
0
ファイル: Egg.cs プロジェクト: rliebz/Puddle
        public void CheckCollisions(Level level)
        {
            // check collisions with player
            if (Intersects(level.player) && !level.player.invulnerable)
            {
                level.player.Death(level);
                destroyed = true;
            }

            // check collisions with blocks
            foreach (Sprite s in level.items)
            {
                if (s.isSolid && Intersects(s))
                destroyed = true;
            }

            foreach (Sprite s in level.projectiles)
            {
                if (s is Shot && Intersects(s))
                {
                    s.destroyed = true;
                    health--;
                    hurt_point = level.count;
                    spriteColor = Color.Red;
                    if (health == 0)
                    {
                        destroyed = true;
                    }
                }
            }

            if (offScreen)
                destroyed = true;
        }
コード例 #5
0
ファイル: Hand.cs プロジェクト: rliebz/Puddle
        public override void Update(Level level)
        {
            base.Update(level);

            Move(level);
            Animate(level);
        }
コード例 #6
0
ファイル: Egg.cs プロジェクト: rliebz/Puddle
 public void Animate(Level level)
 {
     if (level.count - hurt_point > 2 && spriteColor == Color.Red)
     {
         spriteColor = Color.White;
     }
 }
コード例 #7
0
ファイル: Button.cs プロジェクト: jakerose27/Puddle
        public void Action(Level level)
        {
            if (activated)
                return;

            soundList["Sounds/button.wav"].Play();

            int number = int.Parse(name.Split(' ')[1]);

            foreach (Sprite s in level.items)
            {
                if (s.name.Contains("Block") && int.Parse(s.name.Split(' ')[1]) == number )
                {
                    ((Block)s).changeType("push");

                }
                if (s.name.Contains("Gate") && int.Parse(s.name.Split(' ')[1]) == number )
                {
                    s.isSolid = false;
                    //Console.WriteLine(number);
                    ((Block)s).changeType("transparent");

                }
            }

            activated = true;
        }
コード例 #8
0
ファイル: Hand.cs プロジェクト: jakerose27/Puddle
        public override void Update(Level level, ContentManager content)
        {
            // Move
            Move(level);

            // Be killed if necessary
            destroyed = (health <= 0);
        }
コード例 #9
0
ファイル: PowerUp.cs プロジェクト: jakerose27/Puddle
        public void Action(Player player, Level level)
        {
            player.powerup[name] = true;

            level.message_point = level.count;
            if (name == "jetpack")
                level.message = "Press and hold the jump button to jetpack!";
            else if (name == "charged")
                level.message = "Press and hold the right trigger to charge a super shot!";
        }
コード例 #10
0
ファイル: Cannon.cs プロジェクト: jakerose27/Puddle
 public override void Update(Level level, ContentManager content)
 {
     if (level.count % 125 == 0)
     {
         Fireball fireball = new Fireball(
             spriteX + (faceLeft ? -63 : 31), spriteY - 16, direction
         );
         fireball.LoadContent(content);
         level.projectiles.Add((Sprite)fireball);
     }
 }
コード例 #11
0
ファイル: PowerUp.cs プロジェクト: rliebz/Puddle
 public void Action(Player player, Level level)
 {
     player.powerup[name] = true;
     player.worldPowerUp = name;
     level.message_point = level.count;
     if (name == "jetpack")
         level.message = "Press and hold the jump button to jetpack!";
     else if (name == "charged")
         level.message = "Press and hold the right trigger to charge a super shot!";
     else if (name == "puddle")
         level.message = "Press and hold down to turn into a puddle and avoid damage!";
 }
コード例 #12
0
ファイル: Level.cs プロジェクト: rliebz/Puddle
 public Level(Level l)
 {
     player = l.player;
     enterPowerUps = new Dictionary<string,bool>(l.enterPowerUps);
     enterLives = l.player.lives;
     enemies = new List<Enemy>(l.enemies);
     projectiles = new List<Sprite>(l.projectiles);
     items = new List<Sprite>(l.items);
     message = l.message;
     message_point = l.message_point;
     name = l.name;
     content = l.content;
 }
コード例 #13
0
ファイル: PowerShot.cs プロジェクト: jakerose27/Puddle
 public override void CheckCollisions(Level level)
 {
     base.CheckCollisions(level);
     foreach (Sprite s in level.items)
     {
         if (s is Block && Intersects(s))
         {
             Block b = (Block)s;
             if (b.blockType == "break")
                 b.destroyed = true;
         }
     }
 }
コード例 #14
0
ファイル: Button.cs プロジェクト: rliebz/Puddle
        public void Action(Level level)
        {
            if (activated)
                return;

            activated = true;

            if (holdButton)
                soundList["Sounds/HoldButtonPress.wav"].Play();
            else
                soundList["Sounds/button.wav"].Play();

            if (name.Contains("Credits"))
            {
                this.creditScreen = true;
                slideImage = level.content.Load<Texture2D>("Slides/credits.png");
                return;
            }

            if (name.Contains("Controls"))
            {
                this.controlScreen = true;
                slideImage = level.content.Load<Texture2D>("Slides/pause0.png");
                return;
            }

            int number = int.Parse(name.Split(' ')[1]);

            foreach (Sprite s in level.items)
            {
                if (s.name.Contains("Block") && int.Parse(s.name.Split(' ')[1]) == number )
                {
                    ((Block)s).changeType("push");
                    foreach (Sprite s2 in level.items)
                    {
                        if (s2 is Block)
                            ((Block)s2).neighborsFound = false;
                    }
                }
                else if (s.name.Contains("Gate") && int.Parse(s.name.Split(' ')[1]) == number )
                {
                    ((Block)s).changeType("transparent");
                }
                else if (s.name.Contains("Invis") && int.Parse(s.name.Split(' ')[1]) == number)
                {
                    ((Block)s).changeType("temp");
                }
            }
        }
コード例 #15
0
ファイル: Checkpoint.cs プロジェクト: jakerose27/Puddle
 public void CheckCollisions(Level level)
 {
     if (Intersects(level.player))
     {
         Action(level.player);
         foreach (Sprite s in level.items)
         {
             if (s != this && s is Checkpoint)
             {
                 Checkpoint c = (Checkpoint)s;
                 c.activated = false;
                 c.frameIndex = 0;
             }
         }
         activated = true;
     }
 }
コード例 #16
0
ファイル: Rat.cs プロジェクト: rliebz/Puddle
        public override void Update(Level level)
        {
            base.Update(level);

            // Move
            Move(level);

            // Fall
            Fall(level);

            // Maybe jump
            if (grounded && rnd.NextDouble() > .99)
                Jump(level);

            // Animate sprite
            Animate(level);
        }
コード例 #17
0
ファイル: Rat.cs プロジェクト: jakerose27/Puddle
        public override void Update(Level level)
        {
            // Move
            Move(level);

            // Fall
            Fall(level);

            // Maybe jump
            if (grounded && rnd.NextDouble() > .99)
                Jump(level);

            // Animate sprite
            Animate(level);

            // Be killed if necessary
            destroyed = (health <= 0);
        }
コード例 #18
0
ファイル: Fireball.cs プロジェクト: rliebz/Puddle
        public void CheckCollisions(Level level)
        {
            // check collisions with player
            if (Intersects(level.player) && !level.player.invulnerable)
            {
                level.player.Death(level);
            }

            // check collisions with blocks
            foreach (Sprite s in level.items)
            {
                if (s.isSolid && Intersects(s))
                    destroyed = true;
            }

            if (offScreen)
                destroyed = true;
        }
コード例 #19
0
ファイル: Face.cs プロジェクト: rliebz/Puddle
        public override void Update(Level level)
        {
            base.Update(level);

            // Move
            Move(level);

            // Shoot maybe
            if (level.count % 30 == 0)
                Shoot(level);

            Animate(level);

            if (destroyed)
            {
                foreach (Enemy e in level.enemies)
                    e.health = 0;
            }
        }
コード例 #20
0
ファイル: Hand.cs プロジェクト: jakerose27/Puddle
        public override void Move(Level level)
        {
            if (level.count % 80 == 0)
            {
                if (x_vel != 0)
                {
                    y_vel = x_vel;
                    x_vel = 0;
                }
                else
                {
                    x_vel = -y_vel;
                    y_vel = 0;
                }
            }

            spriteX += Convert.ToInt32(x_vel);
            spriteY += Convert.ToInt32(y_vel);
        }
コード例 #21
0
ファイル: Face.cs プロジェクト: jakerose27/Puddle
        public override void Update(Level level, ContentManager content)
        {
            // Move
            Move(level);

            // Shoot maybe
            if (level.count % 30 == 0)
                Shoot(level, content);

            // Be killed if necessary
            if (health <= 0)
            {
                destroyed = true;
                foreach (Enemy e in level.enemies)
                {
                    e.health = 0;
                }
                level.player.newMap = "Content/Level6.tmx";
            }
        }
コード例 #22
0
ファイル: Geyser.cs プロジェクト: rliebz/Puddle
        public void checkCollisions(Level level)
        {
            if (Intersects(level.player))
               {
                level.player.yVel = speed;
                level.player.grounded = false;

               	if (level.player.hydration < level.player.maxHydration - 2)
                    level.player.hydration += 2;
            }

            foreach (Enemy e in level.enemies)
            {
                if (Intersects(e))
                {
                    e.yVel = speed;
                    e.grounded = false;
                }
            }
        }
コード例 #23
0
ファイル: Enemy.cs プロジェクト: rliebz/Puddle
        public virtual void Fall(Level level)
        {
            // Fall if airborne
            if (!grounded)
            {
                yVel += level.gravity;
                if (yVel > level.maxFallSpeed)
                    yVel = level.maxFallSpeed;
                spriteY += Convert.ToInt32(yVel);
            }
            else
            {
                yVel = 1;
            }

            grounded = false;

            // Downward collisions
            foreach (Sprite s in level.items)
            {
                if (s.isSolid && Intersects(s))
                {
                    // Up collision
                    if (topWall - Convert.ToInt32(yVel) > s.bottomWall)
                    {
                        yVel = 0;
                        while (topWall < s.bottomWall)
                            spriteY++;
                    }

                    // Down collision
                    else if (!grounded &&
                        (bottomWall - Convert.ToInt32(yVel)) < s.topWall)
                    {
                        grounded = true;
                        while (bottomWall > s.topWall)
                            spriteY--;
                    }
                }
            }
        }
コード例 #24
0
ファイル: Dying.cs プロジェクト: rliebz/Puddle
        public override void Update(Level level)
        {
            // Rotate
            rotationAngle += 0.05f;

            // Fall
            yVel += level.gravity;
            if (yVel > level.maxFallSpeed)
                yVel = level.maxFallSpeed;
            spriteY += Convert.ToInt32(yVel);

            // Remove object if below screen
            if (topWall > 22 * 32)
            {
                destroyed = true;

                // Win game if boss is defeated
                if (type.Equals(typeof(Face)))
                    level.player.newMap = "Win";
            }
        }
コード例 #25
0
ファイル: Geyser.cs プロジェクト: jakerose27/Puddle
        public void checkCollision(Level level)
        {
            if (Intersects(level.player))
               {
                    level.player.y_vel = -4;
                    //level.player.spriteY -= 1;
                    level.player.grounded = false;
                    if (level.player.hydration < level.player.maxHydration - 2)
                    {
                        level.player.hydration += 2;
                    }
            }

            foreach (Enemy e in level.enemies)
            {
                if (Intersects(e))
                {
                    e.y_vel = -4;
                    e.grounded = false;
                }
            }
        }
コード例 #26
0
ファイル: Pipe.cs プロジェクト: rliebz/Puddle
 public void Action(Level level)
 {
     if (this is Pipe )
     {
         int x = 0;
         int y = 0;
         String pipeName = this.name.Remove(this.name.Length-1);
         if(this.name.EndsWith("1")){
             foreach (Sprite i in level.items)
             {
                 if (i is Pipe)
                 {
                     Pipe p = (Pipe)i;
                     if (p.name == pipeName.Insert(pipeName.Length,"2"))
                     {
                         x = p.spriteX;
                         y = p.spriteY;
                         Transport(level, x, y);
                     }
                 }
             }
         }
         else if(this.name.EndsWith("2")){
             foreach (Sprite i in level.items)
             {
                 if (i is Pipe)
                 {
                     Pipe p = (Pipe)i;
                     if (p.name == pipeName.Insert(pipeName.Length,"1"))
                     {
                         x = p.spriteX;
                         y = p.spriteY;
                         Transport(level, x, y);
                     }
                 }
             }
         }
     }
 }
コード例 #27
0
ファイル: Shot.cs プロジェクト: jakerose27/Puddle
        public virtual void CheckCollisions(Level level)
        {
            // Check collisions with enemies
            foreach (Enemy e in level.enemies)
            {
                if (Intersects(e))
                {
                    destroyed = true;
                    e.health -= damage;
                }
            }

            // check collisions with blocks
            foreach (Sprite s in level.items)
            {
                if (s.isSolid && Intersects(s))
                    destroyed = true;
            }

            if (offScreen)
                destroyed = true;
        }
コード例 #28
0
ファイル: Checkpoint.cs プロジェクト: rliebz/Puddle
 public void CheckCollisions(Level level)
 {
     if (Intersects(level.player))
     {
         Action(level.player);
         if (!activated)
         {
             instance = soundList["Sounds/Checkpoint.wav"].CreateInstance();
             instance.Volume = 0.7f;
             instance.Play();
         }
         foreach (Sprite s in level.items)
         {
             if (s != this && s is Checkpoint)
             {
                 Checkpoint c = (Checkpoint)s;
                 c.activated = false;
                 c.frameIndexX = 0;
             }
         }
         activated = true;
     }
 }
コード例 #29
0
ファイル: Bird.cs プロジェクト: rliebz/Puddle
        public override void Animate(Level level)
        {
            // Animate once every several frames
            if (level.count % 6 != 0)
                return;

            // Wings go forward
            if (flapUp)
            {

                if (frameIndexX < (32 * 3))
                {
                    frameIndexX += 32;
                }
                else
                {
                    frameIndexX -= 32;
                    flapUp = false;
                }
            }

            // Wings go backward
            else
            {
                if (frameIndexX > 0)
                {
                    frameIndexX -= 32;
                }
                else
                {
                    frameIndexX += 32;
                    flapUp = true;
                }
            }

            base.Animate(level);
        }
コード例 #30
0
ファイル: Pipe.cs プロジェクト: jakerose27/Puddle
 public void Transport(Level level, int x, int y)
 {
     level.player.spriteX = x;
     level.player.spriteY = y - level.player.collisionHeight;
 }