/// <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]; } } }