public override void Update() { base.Update(); if (tradingPosts != null && tradingPosts.Count > 0) { ResourceManager.TradingPost tradingPost = tradingPosts[0]; if (path.Count <= 0) { MoveToTile(tradingPost.zeroPointTile, false); } if (overTile == tradingPost.zeroPointTile) { foreach (ResourceManager.ReservedResources rr in tradingPost.GetInventory().TakeReservedResources(this)) { foreach (ResourceManager.ResourceAmount ra in rr.resources) { caravan.GetInventory().ChangeResourceAmount(ra.resource, ra.amount, false); ResourceManager.ConfirmedTradeResourceAmount confirmedTradeResourceAmount = caravan.confirmedResourcesToTrade.Find(crtt => crtt.resource == ra.resource); if (confirmedTradeResourceAmount != null) { confirmedTradeResourceAmount.amountRemaining += ra.amount; } } } tradingPosts.RemoveAt(0); } if (tradingPosts.Count <= 0) { JobManager.Job job = new JobManager.Job( tradingPost.tile, GameManager.resourceM.GetObjectPrefabByEnum(ResourceManager.ObjectEnum.CollectResources), null, 0 ) { transferResources = new List <ResourceManager.ResourceAmount>() }; foreach (ResourceManager.ConfirmedTradeResourceAmount confirmedTradeResourceAmount in caravan.confirmedResourcesToTrade) { if (confirmedTradeResourceAmount.tradeAmount > 0) { tradingPost.GetInventory().ChangeResourceAmount(confirmedTradeResourceAmount.resource, confirmedTradeResourceAmount.tradeAmount, false); confirmedTradeResourceAmount.amountRemaining = 0; job.transferResources.Add(new ResourceManager.ResourceAmount(confirmedTradeResourceAmount.resource, confirmedTradeResourceAmount.tradeAmount)); } } caravan.confirmedResourcesToTrade.Clear(); GameManager.jobM.CreateJob(job); } } else { if (path.Count <= 0) { Wander(caravan.targetTile, 4); } else { wanderTimer = UnityEngine.Random.Range(10f, 20f); } } }