public static void HandleCollision(IPlayer player, IItem item, Game1.Side side) { if (!side.Equals(Game1.Side.None)) { MarioState playerState = player.GetState(); if (item is FireFlower) { if (playerState.Equals(MarioState.SMALL) || playerState.Equals(MarioState.LARGE)) { player.SwitchToFireMario(true); } item.ChangeState(); } if (item is RedMushroom) { if (playerState.Equals(MarioState.SMALL)) { player.SwitchToBigMario(true); } item.ChangeState(); } if (item is Star) { //go to star state item.ChangeState(); if (StarUtility.isFirstShown == false) { StarUtility.starTime = 8; StarUtility.isStarMario = true; player.SetStarMario(true); StarUtility.StarMarioLock = true; Console.Out.WriteLine("collide with star"); StarUtility.isFirstShown = true; } } if (item is VisibleCoin) { item.ChangeState(); } if (item is GreenMushroom) { int lives = player.GetLives(); player.SetLives(lives + 1); item.ChangeState(); } } if (item is KoopaShell) { KoopaShell shell = (KoopaShell)item; int collisionFix = 2; if (side.Equals(Game1.Side.Top)) { int bounceVelocity = -5; //Console.WriteLine("here"); player.SetVerticalVelocity(bounceVelocity); item.ChangeState(); } if (side.Equals(Game1.Side.Left)) { if (shell.isHit) { player.TakeDamage(); } else { player.MoveX(-1 * collisionFix); player.SetHorizontalVelocity(0); } } else if (side.Equals(Game1.Side.Right)) { if (shell.isHit) { player.TakeDamage(); } else { player.MoveX(collisionFix); player.SetHorizontalVelocity(0); } } } if (item is Flag) { if (side.Equals(Game1.Side.Left)) { MarioFlagCollisionHandler.HandleCollision(player, item); } } }