Example #1
0
    public LiquidType GetUniqueRandomLiquid(List <LiquidType> used, LiquidAlcohol al)
    {
        int steps = 0;

        while (steps++ < 100)
        {
            int        idx = UnityEngine.Random.Range(0, used.Count);
            LiquidType lt  = used[idx];

            if (GlassLiquid.LiquidTypeToLiquidAlcohol(lt) != al || lt == LiquidType.BeerHead || lt == LiquidType.Beer)
            {
                continue;
            }

            used.Remove(lt);

            return(lt);
        }

        return(LiquidType.None);
    }
Example #2
0
    public void SetUpControls()
    {
        int nbLiquids = (int)LiquidType.COUNT;

        List <SolidType>  solids  = new List <SolidType>(8);
        List <LiquidType> liquids = new List <LiquidType>(nbLiquids);

        for (int i = 0; i < nbLiquids; i++)
        {
            liquids.Add((LiquidType)i);
        }

        liquids.Remove(LiquidType.None);

        SetAlcholControl(0, LiquidType.None, SolidType.None);
        SetAlcholControl(1, LiquidType.None, SolidType.None);
        SetAlcholControl(2, LiquidType.None, SolidType.None);

        SetNotAlcholControl(0, LiquidType.None, SolidType.None);
        SetNotAlcholControl(1, LiquidType.None, SolidType.None);
        SetNotAlcholControl(2, LiquidType.None, SolidType.None);
        SetNotAlcholControl(3, LiquidType.None, SolidType.None);

        for (int measuresIi = 0; measuresIi < Cocktail.Measures.Count; measuresIi++)
        {
            CocktailMeasure measure = Cocktail.Measures[measuresIi];

            SolidType  solid  = SolidType.None; // @TODO. Maybe part of measure?
            LiquidType liquid = LiquidType.None;

            liquid = measure.LiquidType;

            if (solid != SolidType.None)
            {
                solids.Add(solid);
            }

            if (liquid != LiquidType.None)
            {
                liquids.Remove(liquid);

                if (liquid == LiquidType.Beer)
                {
                    continue;
                }

                LiquidAlcohol alcohol = GlassLiquid.LiquidTypeToLiquidAlcohol(liquid);

                if (alcohol == LiquidAlcohol.Yes)
                {
                    if (RandomAddAlcholControl(liquid, solid) == false)
                    {
                        if (RandomAddNotAlcholControl(liquid, solid) == false)
                        {
                            Debug.LogError("Cannot fit in ingredients. Recipe too complicated");
                        }
                    }
                }
                else
                {
                    if (RandomAddNotAlcholControl(liquid, solid) == false)
                    {
                        if (RandomAddAlcholControl(liquid, solid) == false)
                        {
                            Debug.LogError("Cannot fit in ingredients. Recipe too complicated");
                        }
                    }
                }
            }
        }

        // Actions
        for (int i = 0; i < 3; i++)
        {
            ControlMarker ctrl = GetAlcholControl(i);
            if (!(ctrl.Liquid == LiquidType.None && ctrl.Solid == SolidType.None))
            {
                continue;
            }

            LiquidType lt = GetUniqueRandomLiquid(liquids, LiquidAlcohol.Yes);
            SetAlcholControl(i, lt, SolidType.None);
        }

        // DPad
        for (int i = 0; i < 4; i++)
        {
            ControlMarker ctrl = GetNotAlcholControl(i);
            if (!(ctrl.Liquid == LiquidType.None && ctrl.Solid == SolidType.None))
            {
                continue;
            }

            LiquidType lt = GetUniqueRandomLiquid(liquids, LiquidAlcohol.No);
            SetNotAlcholControl(i, lt, SolidType.None);
        }
    }