Esempio n. 1
0
 //----------------------------------
 //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);
 }
Esempio n. 2
0
        //--//
        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);
                }
            }
        }
Esempio n. 3
0
        //--------------------------------------------------------------------------------------
        //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);
        }
Esempio n. 4
0
        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);
 }