public override bool perform(GameObject agent) { if (startTime == 0) { startTime = Time.time; } targetEstanteComponent.isUsed = true; //Debug.Log("startTime" + startTime); if (Time.time - startTime > workDuration) { //Debug.Log(Time.time-startTime); // finished filled BackpackComponent backpack = (BackpackComponent)agent.GetComponent(typeof(BackpackComponent)); EstanteComponent estanteComponent = targetEstanteComponent; Debug.LogError("desiredFood " + DesiredFood); if (estanteComponent.alimento == DesiredFood) { int preTakeAmount = 0; Client aux = null; if (agent.GetComponent <Labourer>() is Client) { aux = (Client)agent.GetComponent <Client>(); preTakeAmount = aux.listaDelaCompraDictionary[DesiredFood]; //ESTA CANTIDAD NO ES LA CANTIDAD QUE SE COGE FINALMENTE , SIMPLEMENTE ES LA CANTIDAD QUE DESEA COGER } int canFillAmount = backpack.canFill(DesiredFood, preTakeAmount); //Cantidad de ese alimento que puede meter en su inventario a pesar de que su idea fuera meter mas. Debug.LogError(canFillAmount + " canfill"); //TakedAmount es la cantidad que si ha podido coger en base a la disponibilidad de ese producto en el almacen y teniendo en cuenta que ya se valoro la disponibilidad del propio inventario int takedAmount = estanteComponent.Take(canFillAmount); Debug.LogError(takedAmount + " taked"); int r = backpack.Fill(DesiredFood, takedAmount); Debug.LogError(r + " fill"); //Debug.Log("Creo que estoy embuclado " + canFillAmount + " " + alimentoRandom); //HEMOS COGIDO LA COMIDA , AHORA HAY QUE ACTUALIZAR LA LISTA DE LA COMPRA aux.updateBuyList(DesiredFood, r); targetEstanteComponent.isUsed = false; if (aux.listaDelaCompra.Count == 0) { addEffect("isListComplete", true); } taked = true; } else { return(false); //Se ha fallado al intentar conseguir el alimento del estante que queriamos. } //Debug.Log("He salido de un bucle"); } return(true); }
public override bool perform(GameObject agent) { if (startTime == 0) { startTime = Time.time; } //Debug.Log("startTime" + startTime); if (Time.time - startTime > workDuration) { //Debug.Log(Time.time-startTime); // finished filled BackpackComponent backpack = (BackpackComponent)agent.GetComponent(typeof(BackpackComponent)); WareHouseComponent wareHouse = targetWareHouseComponent; BackpackComponent backpackWareHouse = (BackpackComponent)wareHouse.GetComponent(typeof(BackpackComponent)); while (!filled && backpackWareHouse.HasFood()) { //Seleccionamos de los alimentos disponibles en el almacen uno aleatorio. List <Alimento.enAlimentos> ListofAlimentosAvailable = backpackWareHouse.KindsOfFoodAvailable(); Alimento.enAlimentos alimentoRandom = ListofAlimentosAvailable[(int)UnityEngine.Random.Range(0.0f, ListofAlimentosAvailable.Count - 1)]; int preTakeAmount = 0; if (agent.GetComponent <Labourer>() is StoreRestocker) { StoreRestocker aux = (StoreRestocker)agent.GetComponent <Labourer>(); preTakeAmount = aux.RandomTakenAmount(); //ESTA CANTIDAD NO ES LA CANTIDAD QUE SE COGE FINALMENTE , SIMPLEMENTE ES LA CANTIDAD QUE DESEA COGER } int canFillAmount = backpack.canFill(alimentoRandom, preTakeAmount); //Cantidad de ese alimento que puede meter en su inventario a pesar de que su idea fuera meter mas. //Debug.LogError(canFillAmount + " canfill"); //TakedAmount es la cantidad que si ha podido coger en base a la disponibilidad de ese producto en el almacen y teniendo en cuenta que ya se valoro la disponibilidad del propio inventario int takedAmount = backpackWareHouse.Take(alimentoRandom, canFillAmount); //Debug.LogError(takedAmount+ " taked"); int r = backpack.Fill(alimentoRandom, takedAmount); //Debug.LogError(r + " fill"); //Debug.Log("Creo que estoy embuclado " + canFillAmount + " " + alimentoRandom); filled = true; } //Debug.Log("He salido de un bucle"); } return(true); }