Esempio n. 1
0
 public void PairUp(GarmentSock other)
 {
     pairedSock = other;
     AudioManager.instance.PlaySound(SoundName.Fold1 + currentFoldingStep);
     currentFoldingStep       = 1;
     other.currentFoldingStep = 1;
 }
Esempio n. 2
0
    public GarmentSock SeparatePair()
    {
        GarmentSock sock = pairedSock;

        pairedSock = null;
        AudioManager.instance.PlaySound(SoundName.Fold1 + currentFoldingStep);
        currentFoldingStep      = 0;
        sock.currentFoldingStep = 0;
        return(sock);
    }
Esempio n. 3
0
 public GarmentSock(GarmentSock other) : base(other)
 {
     this.fabric               = other.fabric;
     this.color                = other.color;
     this.cleanliness          = other.cleanliness;
     this.humidity             = other.humidity;
     this.pressed              = other.pressed;
     this.folded               = other.folded;
     this.shrunk               = other.shrunk;
     this.dyed                 = other.dyed;
     this.melted               = other.melted;
     this.torn                 = other.torn;
     this.burned               = other.burned;
     this.customerID           = other.customerID;
     this.currentFoldingStep   = other.currentFoldingStep;
     this.size                 = other.size;
     this.foldingSteps         = other.foldingSteps;
     this.laundryGarmentPrefab = other.laundryGarmentPrefab;
     this.type                 = other.type;
 }
Esempio n. 4
0
    private void PlaceGarmentOnBoard(LaundryGarment laundryGarment)
    {
        //Unfold garment if folded
        //If pair of socks, separate them, then spawn the extra sock as a LaundryGarment
        if (laundryGarment.garment is GarmentSock && laundryGarment.garment.Folded)
        {
            GarmentSock sock  = (GarmentSock)laundryGarment.garment;
            GarmentSock other = sock.SeparatePair();
            other.CreateLaundryGarment(laundryGarment.transform.position, laundryGarment.transform.rotation, laundryGarment.transform.parent);
        }
        laundryGarment.garment.currentFoldingStep = 0;

        ironingBoard.garmentOnBoard = laundryGarment.garment;
        AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound);
        laundryGarment.ReturnToPool();
        garmentRenderer.UpdateAppearance();
        pressingProgress = 0.0f;
        burnTimer        = 0.0f;
        graceTimer       = 0.0f;
    }
Esempio n. 5
0
    public static Basket GetRandomBasket()
    {
        Basket basket = new Basket();

        //Determine number of garments
        int numberOfGarments = UnityEngine.Random.Range(instance.MinimumNumberOfGarments, instance.MaximumNumberOfGarments + 1);

        List <Garment> garments = new List <Garment>();

        //Generate the garments
        for (int i = 0; i < numberOfGarments;)
        {
            //Determine fabricType
            int        fabricIndex = instance.WeightedFabricIndices[UnityEngine.Random.Range(0, instance.WeightedFabricIndices.Length)];
            FabricType fabricType  = instance.LaundryGenerationParameters[fabricIndex].fabric;

            //Determine garmentType
            int         garmentTypeIndex = UnityEngine.Random.Range(0, instance.LaundryGenerationParameters[fabricIndex].garmentType.Length);
            GarmentType garmentType      = instance.LaundryGenerationParameters[fabricIndex].garmentType[garmentTypeIndex];

            //Instantiate garment
            Garment garment = null;
            switch (garmentType)
            {
            case GarmentType.Top:
                garment = new GarmentTop(new Fabric(fabricType), GarmentColor.RandomColor());
                break;

            case GarmentType.Pants:
                garment = new GarmentPants(new Fabric(fabricType), GarmentColor.RandomColor());
                break;

            case GarmentType.Sock:
                garment = new GarmentSock(new Fabric(fabricType), GarmentColor.RandomColor());
                break;

            case GarmentType.Underwear:
                garment = new GarmentUnderwear(new Fabric(fabricType), GarmentColor.RandomColor());
                break;

            case GarmentType.Dress:
                garment = new GarmentDress(new Fabric(fabricType), GarmentColor.RandomColor());
                break;

            case GarmentType.Skirt:
                garment = new GarmentSkirt(new Fabric(fabricType), GarmentColor.RandomColor());
                break;

            case GarmentType.Shirt:
                garment = new GarmentShirt(new Fabric(fabricType), GarmentColor.RandomColor());
                break;

            default:
                Debug.LogError("Unknown garment type");
                break;
            }

            i += garment.size;
            garments.Add(garment);
            if (garment is GarmentSock)
            {
                Garment otherSock = new GarmentSock((GarmentSock)garment);
                garments.Add(otherSock);
                i += otherSock.size;
            }
        }

        //Shuffle clothing to separate socks
        int n = garments.Count;

        while (n > 1)
        {
            n--;
            int     k     = UnityEngine.Random.Range(0, n + 1);
            Garment value = garments[k];
            garments[k] = garments[n];
            garments[n] = value;
        }

        foreach (Garment garment in garments)
        {
            basket.AddGarment(garment);
        }

        return(basket);
    }
Esempio n. 6
0
    private IEnumerator WashCycle()
    {
        bool containsColoredGarments = false;

        AudioManager.instance.PlaySound(SoundName.MachineStart);

        List <Garment> garmentsToBeAdded = new List <Garment>();

        foreach (Garment garment in contents)
        {
            //Unfold garments if they are folded
            if (garment is GarmentSock && garment.Folded)
            {
                GarmentSock other = ((GarmentSock)garment).SeparatePair();
                other.currentFoldingStep = 0;
                other.Dry = false;
                garmentsToBeAdded.Add(other);
            }
            garment.currentFoldingStep = 0;
            garment.Dry = false;
            if (garment.Colored())
            {
                containsColoredGarments = true;
            }
        }

        //Put separated socks in machine
        foreach (Garment garment in garmentsToBeAdded)
        {
            contents.Add(garment);
        }

        if (autoCompleteFlag)
        {
            AudioManager.instance.PlaySoundLoop(SoundName.RunningWM, 6.0f);
            yield return(new WaitForLaundromatSeconds(6.0f));

            autoCompleteFlag = false;
        }
        else
        {
            AudioManager.instance.PlaySoundLoop(SoundName.RunningWM, WashCycleTime);
            yield return(new WaitForLaundromatSeconds(WashCycleTime));
        }

        foreach (Garment garment in contents)
        {
            if (!garment.Colored() && washSetting == WashSetting.Hot && containsColoredGarments)
            {
                garment.color = GarmentColor.Pink;
                garment.Dyed  = true;
            }

            if (garment.fabric.washingRestrictions == WashingRestrictions.HandWashOnly)
            {
                garment.Torn = true;
            }

            if (garment.fabric.washingRestrictions == WashingRestrictions.ColdOnly && washSetting == WashSetting.Hot)
            {
                garment.Melted = true;
            }

            if (garment.fabric.washingRestrictions == WashingRestrictions.HotOnly && washSetting == WashSetting.Cold)
            {
                garment.Shrunk = true;
            }

            if (Detergent)
            {
                garment.Clean = true;
                if (garment.fabric.washingRestrictions == WashingRestrictions.NoDetergent)
                {
                    garment.Dyed = true;
                }
            }
            else if (!Detergent)
            {
                if (garment.fabric.washingRestrictions == WashingRestrictions.NoDetergent)
                {
                    garment.Clean = true;
                }
            }
        }
        Detergent = false;
        state     = WashingMachineState.Done;
    }
Esempio n. 7
0
    private IEnumerator DryerCycle()
    {
        float cycleTime = 0.0f;

        if (dryerSetting == DryerSetting.High)
        {
            cycleTime = 10.0f;
        }
        else if (dryerSetting == DryerSetting.Low)
        {
            cycleTime = 20.0f;
        }

        if (!lintTrapClean)
        {
            cycleTime += 10.0f;
        }

        AudioManager.instance.PlaySound(SoundName.MachineStart);

        List <Garment> garmentsToBeAdded = new List <Garment>();

        foreach (Garment garment in contents)
        {
            //Unfold garments if they are folded
            if (garment is GarmentSock && garment.Folded)
            {
                GarmentSock other = ((GarmentSock)garment).SeparatePair();
                other.currentFoldingStep = 0;
                garmentsToBeAdded.Add(other);
            }
            garment.currentFoldingStep = 0;
        }

        //Put separated socks in machine
        foreach (Garment garment in garmentsToBeAdded)
        {
            contents.Add(garment);
        }

        if (autoCompleteFlag)
        {
            AudioManager.instance.PlaySoundLoop(SoundName.RunningDryer, 6.0f);
            yield return(new WaitForLaundromatSeconds(6.0f));

            autoCompleteFlag = false;
        }
        else
        {
            AudioManager.instance.PlaySoundLoop(SoundName.RunningDryer, cycleTime);
            yield return(new WaitForLaundromatSeconds(cycleTime));
        }

        foreach (Garment garment in contents)
        {
            if ((garment.fabric.dryingRestrictions == DryingRestrictions.LowOnly && dryerSetting == DryerSetting.High) ||
                (garment.fabric.dryingRestrictions == DryingRestrictions.HighOnly && dryerSetting == DryerSetting.Low) ||
                garment.fabric.dryingRestrictions == DryingRestrictions.HangDryOnly)
            {
                garment.Torn = true;
            }

            garment.Dry = true;
        }

        if (contents.Count > 0)
        {
            lintTrapClean = false;
        }
        state = DryerState.Done;
    }