public void ThrowObject() { Sprite originalSprite = HoldedSprite; Rectangle originalSpriteCore = originalSprite.core; Vector2 newPosition = MovementManager.GetRectNextTo(originalSpriteCore, bounds, direction); originalSpriteCore.X = (int)newPosition.X; originalSpriteCore.Y = (int)newPosition.Y; newPosition = MovementManager.MoveVector(new Vector2(originalSpriteCore.X, originalSpriteCore.Y), Tile.size, direction); originalSpriteCore.X = (int)newPosition.X; originalSpriteCore.Y = (int)newPosition.Y; originalSprite.canCollide = true; HoldedSprite.MapDepth = Game.MapDepth.player; bool passable = originalSprite.passable; originalSprite.passable = false; if (!movementManager.CollisionCheck(originalSprite, originalSpriteCore) && movementManager.InsideMap(originalSprite, originalSpriteCore)) { DiscardObject(); originalSprite.position.X = originalSpriteCore.X; originalSprite.position.Y = originalSpriteCore.Y; map.AddObject(originalSprite); } originalSprite.passable = passable; }
private void Jump() { if (!jumping) { int VectorMoveTo = 0; if (direction == MovementManager.Direction.down || direction == MovementManager.Direction.up) { VectorMoveTo = maxJumpingHeight; } if (direction == MovementManager.Direction.right || direction == MovementManager.Direction.left) { VectorMoveTo = maxJumpingWidth; } Rectangle collisionRect = core; Vector2 collisionVector = MovementManager.MoveVector(position, VectorMoveTo, direction); //TODO: something is wrong here. i can smell it collisionRect.X = (int)collisionVector.X; collisionRect.Y = (int)collisionVector.Y; if (!movementManager.CollisionCheck(this, collisionRect)) { Game.content.Load <SoundEffect>("Audio\\Waves\\fart").Play(); originalJumpingPosition = position; canCollide = false; passable = true; jumping = true; return; } } }