public void Handle(ICollidable player, ICollidable solidBlock, CollisionDirection.DirectionTag direction) { if (typeof(IMario).IsInstanceOfType(player) && typeof(SolidBlock).IsInstanceOfType(solidBlock)) { this.player = (IMario)player; this.solidBlock = (SolidBlock)solidBlock; Console.WriteLine(this.solidBlock.Physics.xPosition + " " + this.solidBlock.Physics.yPosition); switch (direction) { case CollisionDirection.DirectionTag.Top: this.player.SetYPosition(this.solidBlock.GetTopSide() - player.GetHeight()); this.player.Ground(); break; case CollisionDirection.DirectionTag.Bottom: this.player.SetYPosition(this.solidBlock.GetBottomSide() + 1); break; case CollisionDirection.DirectionTag.Left: this.player.SetXPosition(this.solidBlock.GetLeftSide() - player.GetWidth()); break; case CollisionDirection.DirectionTag.Right: this.player.SetXPosition(this.solidBlock.GetRightSide() + 1); break; default: Console.WriteLine("Unexpected Direction Received in Collision.PlayerWithQuestionBlock"); break; } } }
public void Handle(ICollidable player, ICollidable solidBlock, CollisionDirection.DirectionTag direction) { if (typeof(IMario).IsInstanceOfType(player) && typeof(SolidBlock).IsInstanceOfType(solidBlock)) { this.player = (IMario)player; this.solidBlock = (SolidBlock)solidBlock; Console.WriteLine(this.solidBlock.Physics.xPosition + " " + this.solidBlock.Physics.yPosition); switch (direction) { case CollisionDirection.DirectionTag.Top: this.player.SetYPosition(this.solidBlock.GetTopSide() - player.GetHeight()); this.player.Ground(); break; case CollisionDirection.DirectionTag.Bottom: ((GameObject)player).Physics.yVelocity = 0; this.player.StopJumping(); this.player.SetYPosition(this.solidBlock.GetBottomSide() + 1); break; case CollisionDirection.DirectionTag.Left: this.player.SetXPosition(this.solidBlock.GetLeftSide() - player.GetWidth()); break; case CollisionDirection.DirectionTag.Right: this.player.SetXPosition(this.solidBlock.GetRightSide() + 1); break; default: Console.WriteLine(Config.GetCollisionResolutionException() + GetType().ToString()); break; } } }
void addBlock(String line) { String[] split = line.Split(','); IObject block; //Debug.WriteLine(split[0]); float x = ((Int32.Parse(split[1]) - 1) * blockBaseDimension * blockSizeMod) + screenX + (2 * blockBaseDimension * blockSizeMod); float y = ((Int32.Parse(split[2]) - 1) * blockBaseDimension * blockSizeMod) + screenY + (2 * blockBaseDimension * blockSizeMod); switch (split[0]) { case "bluesandblock": block = new BlueSandBlock(sprites["tileset"], new Vector2(x, y)); break; case "dragonblock": block = new DragonBlock(sprites["tileset"], new Vector2(x, y)); break; case "dungeonblock": block = new DungeonBlock(sprites["tileset"], new Vector2(x, y)); break; case "pushableblock": block = new PushableBlock(sprites["tileset"], new Vector2(x, y), split[3]); break; case "stairsblock": block = new StairsBlock(sprites["tileset"], new Vector2(x, y)); break; case "fireblock": block = new FireBlock(sprites["fire"], new Vector2(x + 8, y)); break; case "fishblock": block = new FishBlock(sprites["tileset"], new Vector2(x, y)); break; case "solidblock": Color c = Color.Transparent; if (split[3] == "blue") { c = Color.Blue; } block = new SolidBlock(sprites["Backgrounds"], new Vector2(x, y), c); break; default: block = new DungeonBlock(sprites["tileset"], new Vector2(x, y)); break; } Blocks.Add(block); }