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; }
public Mine(Player source, int strength, Sprite sprite) : base(sprite.texture, sprite.position, sprite.drawingCoordinates) { this.source = source; this.strength = strength; MapDepth = Game.MapDepth.below; collisionFunction = Mine.UpdateMineCollision; canCollide = false; position = MovementManager.GetRectNextTo(bounds, source.bounds, source.direction); //position = MovementManager.MoveVector(position, Tile.size * 2, source.direction); }
public Projectile(Texture2D texture, float speed, Player source, int pathDestination, int strength, SoundEffect launchSound, SoundEffect hitSound) : base(texture, new Vector2()) { this.source = source; this.pathDestination = pathDestination; this.launchSound = launchSound; this.hitSound = hitSound; this.speed = speed; this.strength = strength; this.direction = source.direction; Vector2 result = MovementManager.GetRectNextTo(bounds, source.bounds, source.direction); position = result; if (launchSound != null) { launchSound.Play(); } }
private bool Interact() { Rectangle interactRect = new Rectangle(0, 0, Tile.size, Tile.size); Vector2 result = MovementManager.GetRectNextTo(interactRect, bounds, direction); interactRect.X = (int)result.X; interactRect.Y = (int)result.Y; foreach (GameObject gameObject in map.gameObjectList) { if (camera.InCamera(gameObject)) { if (interactRect.Intersects(gameObject.core) && gameObject.interactFunction != null) { gameObject.interactFunction(this, gameObject); return(true); } } } return(false); }
public override void Attack(Map map, Player player) { base.Attack(map, player); //attack Rectangle rangeRect = new Rectangle(0, 0, (int)(Tile.size * range), (int)(Tile.size * range)); Vector2 rangePosition = MovementManager.GetRectNextTo(rangeRect, player.bounds, player.direction); rangeRect.X = (int)rangePosition.X; rangeRect.Y = (int)rangePosition.Y; bool hit = false; foreach (GameObject gameObject in player.map.gameObjectList) { if (player.camera.InCamera(gameObject)) { Enemy enemy = gameObject as Enemy; if (enemy != null) { if (rangeRect.Intersects(enemy.core)) { enemy.DealDamage(player); hit = true; } } } } if (hit) { attackSound.Play(); } else { swingSound.Play(); } }