public void CheckKoopaCollisions(List <IBlock> blocks, List <IPipe> pipes, List <IEnemy> koopas) { Game1.Side collisionType = Game1.Side.None; GeneralCollisionDetector generalDetector = new GeneralCollisionDetector(); EnemyGravityHandler gravityHandler = new EnemyGravityHandler(); for (int loop = 0; loop < koopas.Count; loop++) { Koopa koopa = (Koopa)koopas.ElementAt(loop); Rectangle currentKoopa = koopa.GetRectangle(); for (int secondLoop = loop + 1; secondLoop < koopas.Count; secondLoop++) { Koopa secondKoopa = (Koopa)koopas.ElementAt(secondLoop); Rectangle currentSecondKoopa = secondKoopa.GetRectangle(); collisionType = generalDetector.DetermineCollision(currentKoopa, currentSecondKoopa); EnemyEnemyCollisionHandler.HandleCollision(koopa, secondKoopa, collisionType); } foreach (IPipe pipe in pipes) { Rectangle currentPipe = pipe.GetRectangle(); collisionType = generalDetector.DetermineCollision(currentKoopa, currentPipe); EnemyPipeCollisionHandler.HandleCollision(koopa, pipe, collisionType); } foreach (IBlock block in blocks) { Rectangle currentBlock = block.GetRectangle(); collisionType = generalDetector.DetermineCollision(currentKoopa, currentBlock); EnemyBlockCollisionHandler.HandleCollision(koopa, block, collisionType); } } }
public static void HandleCollision(IPlayer marioPlayer, IEnemy enemy, Game1.Side side) { Mario mario = (Mario)marioPlayer; if (!mario.IsInSpecialAnimationState()) { if (mario.IsStarMario() && !side.Equals(Game1.Side.None)) { enemy.BeFlipped(); } else if (side.Equals(Game1.Side.Left) || side.Equals(Game1.Side.Right) || side.Equals(Game1.Side.Top)) { mario.TakeDamage(); } //case mario on enemy else if (side.Equals(Game1.Side.Bottom)) { int bounceVelocity = -4; // case enemy is goomba if (enemy is Goomba) { Goomba localGoomba = (Goomba)enemy; localGoomba.KillEnemy(); mario.SetVerticalVelocity(bounceVelocity); } if (enemy is Koopa) { Koopa localKoopa = (Koopa)enemy; localKoopa.KillEnemy(); mario.SetVerticalVelocity(bounceVelocity); } if (!WorldManager.spriteSet.players[0].GetTouchedGround()) { WorldManager.spriteSet.players[0].IncrementEnemyMultiplier(); } } } }
public static void HandleCollision(Fireball fireball, IEnemy enemy, Game1.Side side) { EnemyGravityHandler gravity = new EnemyGravityHandler(); if (side != Game1.Side.None) { if (enemy is Goomba) { Goomba localGoomba = (Goomba)enemy; localGoomba.BeFlipped(); gravity.ApplyGravityToEnemy(localGoomba); } if (enemy is Koopa) { Koopa localKoopa = (Koopa)enemy; localKoopa.BeFlipped(); gravity.ApplyGravityToEnemy(localKoopa); } fireball.ChangeState(); } }
public KoopaLeftMovingState(Koopa myKoopa) { this.koopa = myKoopa; }
public KoopaStompedState(Koopa koopa) { this.koopa = koopa; this.koopa.koopaSprite = new KoopaStompedSprite(); }
public KoopaNightmareState(Koopa myKoopa) { this.koopa = myKoopa; this.koopa.koopaSprite = new KoopaNightmareSprite(); }
public KoopaDeadState(Koopa myKoopa) { this.koopa = myKoopa; this.koopa.koopaSprite = new KoopaDeadSprite(); }
public KoopaRightMovingState(Koopa myKoopa) { this.koopa = myKoopa; }