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); }
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); }