private bool TestCollisionFromDirection(List <IGameObject> GameObjects, Vector2 PlayerSpawnLocation) { bool PassTest = true; Player = new Mario(DefaultSpawn, GameDummy); ICollision Side = new NullCollision(); foreach (IGameObject GameObject in GameObjects) { Player.DestinationRectangle = new Rectangle((int)PlayerSpawnLocation.X, (int)PlayerSpawnLocation.Y, DefaultSize, DefaultSize); GameObject.DestinationRectangle = new Rectangle((int)DefaultSpawn.X, (int)DefaultSpawn.Y, DefaultSize, DefaultSize); Side = CollisionDetector.detectCollision(Player, GameObject); if (PlayerSpawnLocation.Equals(UpperSpawn)) { if (Side is NullCollision || !(Side is Top)) { PassTest = false; Debug.WriteLine("Error: Object " + GameObject.ToString() + "'s collision type was " + Side.ToString() + ", expected Top"); } } else if (PlayerSpawnLocation.Equals(LowerSpawn)) { if (Side is NullCollision || !(Side is Bottom)) { PassTest = false; Debug.WriteLine("Error: Object " + GameObject.ToString() + "'s collision type was " + Side.ToString() + ", expected Bottom"); } } else if (PlayerSpawnLocation.Equals(LeftSpawn)) { if (Side is NullCollision || !(Side is Left)) { PassTest = false; Debug.WriteLine("Error: Object " + GameObject.ToString() + "'s collision type was " + Side.ToString() + ", expected Left"); } } else if (PlayerSpawnLocation.Equals(RightSpawn)) { if (Side is NullCollision || !(Side is Right)) { PassTest = false; Debug.WriteLine("Error: Object " + GameObject.ToString() + "'s collision type was " + Side.ToString() + ", expected Right"); } } else { PassTest = false; Debug.WriteLine("Error: Invalid collision direction"); } } return(PassTest); }
public void findCollision() { ICollision side = new NullCollision(); foreach (IObject ob in Game.objects) { side = CollisionDetector.detectCollision(Game.Mario, ob); if (!(side is NullCollision) && (ob is BowserFire)) { ICollisionHandler MarioBowserFireCollision = new MarioBowserFireCollisionHandler(Game); MarioBowserFireCollision.handleCollision(); } } }
public void findCollision() { ICollision side = new NullCollision(); foreach (Bowser bowser in Game.bowserList) { if (!Game.Mario.ShouldCollide) { break; } side = CollisionDetector.detectCollision(Game.Mario, bowser); if (!(side is NullCollision)) { ICollisionHandler MarioBowser = new MarioBowserCollisionHandler(Game); MarioBowser.handleCollision(); } } }
public void update() { foreach (IEnemy enemy in enemyList) { foreach (IBlock block in blockList.blockList) { Rectangle ifCollision = new Rectangle(); ifCollision = Rectangle.Intersect(enemy.rectangle, block.rectangle); ICollision side = new NullCollision(ifCollision); if (!ifCollision.IsEmpty) { if (ifCollision.Height > ifCollision.Width && enemy.X < block.X) { side = new LeftCollision(ifCollision); new EnemyBlockCollisionHandler(enemy, block, side).Execute(); } else if (ifCollision.Height > ifCollision.Width && enemy.X > block.X) { side = new RightCollision(ifCollision); new EnemyBlockCollisionHandler(enemy, block, side).Execute(); } else if (ifCollision.Height < ifCollision.Width && enemy.Y > block.Y) { side = new TopCollision(ifCollision); new EnemyBlockCollisionHandler(enemy, block, side).Execute(); } else if (ifCollision.Height < ifCollision.Width && enemy.Y < block.Y) { side = new BottomCollision(ifCollision); new EnemyBlockCollisionHandler(enemy, block, side).Execute(); } else { new EnemyBlockCollisionHandler(enemy, block, side).Execute(); } } } } }