Ejemplo n.º 1
0
    private async Task <DrinkStats> GetDrinkStats()
    {
        /** http://www.colorwiki.com/wiki/Delta_E:_The_Color_Difference */
        float           promR = 0, promG = 0, promB = 0;
        HashSet <Color> differentColors = new HashSet <Color>();

        DynamicParticle[] allObjects = (DynamicParticle[])FindObjectsOfType(typeof(DynamicParticle));
        int count    = 0;
        int quantity = allObjects.Length;

        if (quantity < 10)
        {
            return(null);
        }
        foreach (DynamicParticle obj in allObjects)
        {
            count++;
            Color color = obj.currentImage.gameObject.GetComponent <MeshRenderer>().materials[0].GetColor("_Color");
            promR += color.r;
            promG += color.g;
            promB += color.b;
            differentColors.Add(color);
        }
        promR = promR / allObjects.Length;
        promG = promG / allObjects.Length;
        promB = promB / allObjects.Length;
        Color promColor = new Color(promR, promG, promB);

        foreach (DynamicParticle obj in allObjects)
        {
            //Destroy(obj.gameObject);
            obj.SetColor(promColor);
            await Task.Delay(10); /** Simula que se toma la wea*/
        }


        var    color1 = new LabColor(promR, promG, promB);
        var    color2 = new LabColor(customer.wantedColor.r, customer.wantedColor.g, customer.wantedColor.b);
        double deltaE = new CIEDE2000ColorDifference().ComputeDifference(color1, color2);



        drinkStats = new DrinkStats()
        {
            preparationTime = Time.time - initialTime,
            mixture         = (differentColors.Count * 100) / quantity,
            colorSimilarity = (float)deltaE,
            quantity        = quantity,
            promColor       = promColor
        };



        return(drinkStats);
    }
Ejemplo n.º 2
0
    public async Task <int> StartEvaluating(DrinkStats drinkStats)
    {
        state = State.Evaluating;
        if (drinkStats == null)
        {
            await Speak("ESta wea esta vaciaaaaaaaaaaaaaaaaa gil culiao estafador");

            return(0);
        }
        int score = 100;

        Debug.Log(drinkStats.quantity);
        /* tiempo */
        float seconds = Mathf.Round(drinkStats.preparationTime * 100) / 100;

        switch (seconds)
        {
        case float n when n >= 80:
            await Speak("Te demoraste mucho! ");

            score -= 50;
            break;

        case float n when n >= 30:
            await Speak("Algo lento");

            score -= 20;
            break;

        case float n when n < 5:
            await Speak("Culiao rápido");

            score += 20;
            break;

        case float n when n < 10:
            await Speak("OOH que rápido");

            score += 10;
            break;
        }

        /*Cantidad*/
        switch (drinkStats.quantity)
        {
        case float n when n >= 100:
            await Speak("Buena cantidad!");

            break;

        case float n when n >= 80:
            break;

        case float n when n >= 50:
            await Speak("Hermano que wea con la cantidad");

            score -= 30;
            break;

        case float n when n >= 30:
            await Speak("Tan poco que le echaste... cagao");

            score -= 50;
            break;

        case float n when n < 30:
            await Speak("Entrega monea chchtumare");

            score -= 70;
            break;

        case float n when n < 10:
            await Speak("ESta wea esta vaciaaaaaaaaaaaaaaaaa gil culiao estafador");

            score -= 170;
            break;
        }
        if (drinkStats.quantity < 30)
        {
            return(score);
        }

        /*Mezcla*/
        switch (drinkStats.mixture)
        {
        case float n when n >= 92:
            break;

        case float n when n >= 90:
            await Speak("Mmm...");

            score -= 10;
            break;

        case float n when n >= 80:
            await Speak("Lo mezclaste poco eh");

            score -= 20;
            break;

        case float n when n < 70:
            await Speak("Ni lo mezclaste csmmmm!");

            score -= 30;
            break;
        }



        /*Color*/
        switch (drinkStats.colorSimilarity)
        {
        case float n when n >= .55f:
            await Speak("No se parece a lo que te pedí");

            score -= 50;
            break;

        case float n when n >= .46f:
            await Speak("Esta raro el color");

            score -= 30;
            break;

        case float n when n >= .4f:
            await Speak("Se ve bien");

            score += 10;
            break;

        case float n when n >= .3f:
            await Speak("Muy buen color");

            score += 20;
            break;

        case float n when n < .3f:
            //await Speak("Est");
            score += 30;
            break;
        }


        /*En resumen*/
        //await Speak("En resumen.....");
        await Task.Delay(1000);

        switch (score)
        {
        case int n when n >= 90:
            await Speak("Es perfecto!");

            break;

        case int n when n >= 80:
            await Speak("Bien Hecho!");

            break;

        case int n when n >= 70:
            await Speak("Bastante bueno");

            break;

        case int n when n >= 40:
            await Speak("Maomeno noma");

            break;

        case int n when n < 40:
            await Speak("Te quedó como las <size=40>weas</size>");

            break;
        }

        Debug.Log("Score: " + score);
        return(score);
    }