Beispiel #1
0
        /// <summary>
        /// Updates the creature behaviour.
        /// </summary>
        public override void Update()
        {
            if (OwningCreatureAI.reachedEndOfPath && !IsDone && OwningCreatureAI.CreatureStats.IsFoodFull())
            {
                OwningCreatureAI.SetAnimation("Idle");
                if (m_CurrentResourceSource != null)
                {
                    m_CurrentResourceSource.m_WorkedByVillager = null;
                }
                Done();
            }
            else if (!IsDone && m_CurrentResourceSource != null)
            {
                if (EatTimer >= 1)
                {
                    if (m_CurrentResourceSource != null)
                    {
                        if (m_CurrentResourceSource.ExtractResource(1).Value != 0)
                        {
                            OwningCreatureAI.CreatureStats.AddFood(10);
                            EatTimer = 0;
                        }
                    }
                }
                else
                {
                    EatTimer += Time.deltaTime;
                }
            }
            else
            {
                List <ResourceSource> rs = PlanetDatalayer.Instance.GetManager <ResourceManager>().GetResourceSourcesInArea(new Rect(OwningCreatureAI.transform.position.x - 2, OwningCreatureAI.transform.position.z - 2, 4, 4), Resources.ResourceType.Food);
                if (rs.Count > 0)
                {
                    m_CurrentResourceSource = rs[0];
                }
                else
                {
                    m_Tries++;
                }

                if (m_Tries >= 3)
                {
                    OwningCreatureAI.SetAnimation("Idle");
                    if (m_CurrentResourceSource != null)
                    {
                        m_CurrentResourceSource.m_WorkedByVillager = null;
                    }

                    Done();
                }
            }
        }
        /// <summary>
        /// Updates the creature behaviour.
        /// </summary>
        public override void Update()
        {
            if (OwningCreatureAI.reachedEndOfPath && !IsDone && (m_CurrentResourceSource == null || IsInventoryFull()))
            {
                if (m_CurrentResourceSource != null)
                {
                    m_CurrentResourceSource.m_WorkedByVillager = null;
                }
                Done();
            }
            else if (OwningCreatureAI.reachedEndOfPath && !IsDone && (m_CurrentResourceSource != null && !IsInventoryFull()))
            {
                if (OwningCreatureAI.GetCurrentAnimation().AnimationName != "Extracting")
                {
                    OwningCreatureAI.SetAnimation("Extracting");
                }

                if (ExtractTimer >= 1)
                {
                    if (m_CurrentResourceSource != null)
                    {
                        if (m_CurrentResourceSource.ExtractResource(1).Value != 0)
                        {
                            ((VillagerAI)OwningCreatureAI).GetVillagerStats().VillagerInventory.AddResource(m_TargetResourceType, 1);
                            PlanetDatalayer.Instance.GetManager <FoMManager>().IncreaseFoM(PlanetDatalayer.Instance.GetManager <VillagerManager>().m_VillagerList.IndexOf((VillagerAI)OwningCreatureAI), 1);
                            ExtractTimer = 0;
                        }
                    }
                }
                else
                {
                    ExtractTimer += Time.deltaTime;
                }
            }
            else
            {
                List <ResourceSource> rs = PlanetDatalayer.Instance.GetManager <ResourceManager>().GetResourceSourcesInArea(new Rect(OwningCreatureAI.transform.position.x - 2, OwningCreatureAI.transform.position.z - 2, 4, 4), m_TargetResourceType);
                if (rs.Count > 0)
                {
                    m_CurrentResourceSource = rs[0];
                }
            }
        }