Beispiel #1
0
    void HandleDoorUp(Dor door)
    {
        if (WasVisitedFromSide(door.direction))
        {
            return;
        }

        //can the door up give this water?
        if (door.door.isOpen && door.water.fillAmount > 0 && fillAmount < 100)
        {
            over = (door.water.fillAmount - minVerticalHeightToDrip) * .1f;
            door.water.CacheWater(-over, Side.UP);
            fillAmount += over;
            return;
        }

        //can door up receive water from this?
        if (door.door.isOpen && door.water.fillAmount < 100 && fillAmount > 100)
        {
            //if (door.water.fillAmount <= 95) {
            over = fillAmount - 100;
            over = over + fillAmount > 100 ? (over + fillAmount) - 100 : over;
            door.water.CacheWater(over, Side.UP);
            fillAmount -= over;
            return;
            //}
        }
    }
Beispiel #2
0
    void HandleDoorSideways(Dor.Side originalDir, Dor door)
    {
        if (WasVisitedFromSide(door.direction))
        {
            return;
        }

        //Can this give the other side water?
        if (door.door.isOpen && door.water.fillAmount < fillAmount &&
            fillAmount > minVerticalHeightToDrip)
        {
            auxDiff = fillAmount - door.water.fillAmount;

            //if(auxDiff < 5) {
            //    over = auxDiff / 2f;
            //    fillAmount -= over;
            //    door.water.CacheWater(over, door.direction);
            //    return;
            //}

            over        = auxDiff * .1f;
            fillAmount -= over;
            door.water.CacheWater(over, door.direction);
            return;
        }

        //Can the other side give this side water?
        if (door.door.isOpen && door.water.fillAmount > fillAmount &&
            door.water.fillAmount > minVerticalHeightToDrip)
        {
            auxDiff = door.water.fillAmount - fillAmount;

            //if (auxDiff < 5) {
            //    over = auxDiff / 2f;
            //    fillAmount += over;
            //    door.water.CacheWater(-over, door.direction);
            //    return;
            //}

            over        = auxDiff * .1f;
            fillAmount += over;
            door.water.CacheWater(-over, door.direction);
            return;
        }
    }