private bool TryIrrigateGrid(Irrigable i)
    {
        if (i.GridObject.ParentGrid.LevelController.Level > GridObject.ParentGrid.LevelController.Level)
        {
            return(false);
        }

        if (WaterLevel > i.GridObject.ParentGrid.LevelController.Level)
        {
            return(false);
        }

        if (i.TryIrrigate(this))
        {
            _irrigatableNeighborList.Remove(i);

            OnIrrigatedGrid?.Invoke(i.GridObject.ParentGrid);

            return(true);
        }

        return(false);
    }