Example #1
0
    public void ReturnToPool(LaundryGarment laundryGarment)
    {
        GarmentType type = laundryGarment.garment.type;

        Rigidbody2D rb = laundryGarment.GetComponent <Rigidbody2D>();

        rb.gravityScale = 0.0f;
        rb.velocity     = Vector3.zero;

        laundryGarment.garment = null;
        for (int i = 0; i < LaundryGarmentPools.Length; i++)
        {
            if (LaundryGarmentPools[i].GarmentPoolType == type)
            {
                laundryGarment.transform.parent = LaundryGarmentPools[i].transform;
                laundryGarment.gameObject.SetActive(false);
            }
        }
    }
Example #2
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);
    }