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