//---------------------------------- //INTERACTION WITH PRODUTOR--------- //---------------------------------- //Comandado a partir do owner(Gajo) public void start(GajoWorker outro, float duracao) { _parent.walker.Animacao.SetBool("interact", true); _parent.walker.Navigation.stopMoving(); isInteracting = true; // _parent.transform.LookAt(outro.transform);//Isto não devia estar aqui, mas por algum motivo não funciona se so estiver no LookAt _parent.behavior.dispatcherSpeed = duracao; outro.startInteraction(_parent); }
//--// void GenerateWorkingPopulation() { int dbIndex = 0; foreach (ClassWorkerProducao item in CitizenFactory.listaDefinicaoWorkers) { GameObject prefab = item.boneco; if (prefab == null) Debug.LogError("Please add a character to the list of workers!! Alternatively, please delete the empty entry."); else { prefab.SetActive(true); for (int i = 0; i < item.count; i++) { if (item.posicaoInicial && item.boneco) { GameObject baseOperacoes = item.posicaoInicial; Vector3 pos = CitizenFactory.v3GetValidCoordinate(baseOperacoes.transform.position, 5); GameObject go = (GameObject)Instantiate(prefab, pos, Quaternion.identity); // workersList.Add(go); go.AddComponent(typeof(GajoWorker)); GajoWorker g = (GajoWorker)go.GetComponent(typeof(GajoWorker)); CitizenFactory.listaProdutores.Add(g); g.type = item.tipo; g.basePositionTr = baseOperacoes.transform; g.freedomBasePosition = item.raioAtracao; if (item.animacaoInicial != null) g.animationProduction = item.animacaoInicial; if (item.tipo == Profession.ProfessionType.Two_States) { if (item.posicaoDelivery != null) //item.deliveryLocation.transform; { g.entregaPositionTr = item.posicaoDelivery.transform; g.animationTransaction = item.animacao2; g.isWalkingAgent = true; } else Debug.LogError("There is no Delivery Object defined in a two state indivivual - Worker section"); } else g.isWalkingAgent = false; g.classe_animacao = dbIndex + 1; g.init(); } else Debug.LogError("Please add a base object to the worker definition!"); } prefab.SetActive(false); } } }
//-------------------------------------------------------------------------------------- //ATACA PRODUTOR-------------------------------------------------------------------------------------- //-------------------------------------// //Chamado em BehaviorAI.performAction() public float ataca(GajoWorker produtor) {//Ficou identico ao comeGajo if (_owner.getId() == Global.whoIsBeingTracked) { Global.whatAmIDoing = TypeOfActionBeingPerformed.COME_PRODUTOR; } _owner.whatAmIDoing = TypeOfActionBeingPerformed.COME_PRODUTOR; float reward = 0; if (produtor != null) { reward = comeProdutor(produtor); } return(reward); }
private float comeProdutor(GajoWorker produtor) { float total = 0; float amount = 0; float dose = 10; float reward = 0; float qtResourcesQueTinha = 0; myanimations.anima(); produtor.startInteraction(_owner); _owner.startInteraction(produtor, 0.05f); if (_owner.metabolism.chemicals[0] != -1) { qtResourcesQueTinha += _owner.metabolism.chemicals [0]; //RFA REWARD------------------------------------------------------------------ if (produtor.chemicals[1] > dose) { amount = produtor.chemicals[1] - dose; produtor.chemicals[1] -= dose; } else { amount = produtor.chemicals[1]; produtor.chemicals[1] = 0; } _owner.metabolism.chemicals[0] += amount; total = total + amount; } if (_owner.metabolism.chemicals[1] != -1) { qtResourcesQueTinha += _owner.metabolism.chemicals [1]; //RFA REWARD------------------------------------------------------------------ if (produtor.chemicals[2] > dose) { amount = produtor.chemicals[2] - dose; produtor.chemicals[2] -= dose; } else { amount = produtor.chemicals[2]; produtor.chemicals[2] = 0; } _owner.metabolism.chemicals[1] += amount; total = total + amount; } if (_owner.metabolism.chemicals[2] != -1) { qtResourcesQueTinha += _owner.metabolism.chemicals [2]; //RFA REWARD------------------------------------------------------------------ if (produtor.chemicals[0] > dose) { amount = produtor.chemicals[0] - dose; produtor.chemicals[0] -= dose; } else { amount = produtor.chemicals[0]; produtor.chemicals[0] = 0; } _owner.metabolism.chemicals[2] += amount; total = total + amount; } reward += total; _owner.behavior.dispatcherSpeed = 12f; _owner.walker.Animacao.enabled = true; if (qtResourcesQueTinha > 0) //RFA REWARD---------------------------------------------------------------------------------------------------- { _owner.behavior.Interacao.Memoria.ganhoTradingOrSocializing = amount / qtResourcesQueTinha; //RFA REWARD------------------------------------------- } else //RFA REWARD------------------------------------------------------------------------------------------------------------------------ { _owner.behavior.Interacao.Memoria.ganhoTradingOrSocializing = amount / 0.01f; //RFA REWARD---------------------------------------------------------- } return(reward); }
//------------------------------------------------------------------------------------- public void startInteraction(GajoWorker m, float duracao) { behavior.Interacao.start(m, duracao); }