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);
        }
 public static bool IsTilePassable(this GameLocation gameLocation, int tileX, int tileY)
 {
     return(gameLocation.IsTilePassable(new Location(tileX * Game1.tileSize, tileY * Game1.tileSize)));
 }