public static bool IsWateringCanFillingSource(this GameLocation gameLocation, Point tile) { if (gameLocation.IsWater(tile) && !gameLocation.IsTilePassable(tile.X, tile.Y)) { return(true); } if (gameLocation is BuildableGameLocation buildableGameLocation) { Building building = buildableGameLocation.getBuildingAt(new Vector2(tile.X, tile.Y)); if (building is not null && (building is FishPond || building.buildingType.Equals("Well")) && building.daysOfConstructionLeft.Value <= 0) { return(true); } } if (gameLocation is Submarine && tile.X >= 9 && tile.X <= 20 && tile.Y >= 7 && tile.Y <= 11) { return(true); } if (gameLocation.name.Value == "Greenhouse" && ((tile.X == 9 && tile.Y == 7) || (tile.X == 10 && tile.Y == 7))) { return(true); } if (gameLocation.name.Value == "Railroad" && tile.X >= 14 && tile.X <= 16 && tile.Y >= 55 && tile.Y <= 56) { return(true); } return(false); }