public void DeliverKeptAsideOrderTo(ResourceCarrier recipient) { ResourceShipment orderedShipment = null; IEnumerator <AgoraMerchant> merchantsEnumerator = _agora.MerchantsEnumerator(); while (merchantsEnumerator.MoveNext()) { AgoraMerchant merchant = merchantsEnumerator.Current; KeepAsideOrderManager merchantOrderManager = merchant.GetComponent <KeepAsideOrderManager>(); if (merchantOrderManager != null) { if (orderedShipment != null) { orderedShipment.AddShipment(merchantOrderManager.DeliverKeptAside(recipient)); } else { orderedShipment = merchantOrderManager.DeliverKeptAside(recipient); } } } recipient.shipment = orderedShipment; }
protected void Awake() { AgoraMerchant toAdd = (GameManager.instance.InstantiatePrefabAsChild(gameObject, test.gameObject, transform.position) as GameObject).GetComponent <AgoraMerchant>(); GetComponent <Agora>().AddMerchant(toAdd); AgoraMerchant toAdd2 = (GameManager.instance.InstantiatePrefabAsChild(gameObject, test2.gameObject, transform.position) as GameObject).GetComponent <AgoraMerchant>(); GetComponent <Agora>().AddMerchant(toAdd2); }
public override void Evolve() { base.Evolve(); AgoraMerchant[] merchantsNew = new AgoraMerchant[_agora.spots * 2]; for (int i = 0; i < _agora.spots; i++) { merchantsNew[i] = _agora.merchants[i]; } _agora.merchants = merchantsNew; _agora.spots *= 2; }
public bool LeaveSpot(AgoraMerchant merchant) { for (int i = 0; i < spots; i++) { if (merchants[i] == merchant) { return(LeaveSpot(i)); } } return(false); }
private bool TakeSpot(AgoraMerchant merchant) { for (int i = 0; i < spots; i++) { if (merchants[i] == null) { return(TakeSpot(i, merchant)); } } return(false); }
public override int OrderedAmountFor(string resourceName) { int count = 0; IEnumerator <AgoraMerchant> merchantsEnumerator = _agora.MerchantsEnumerator(); while (merchantsEnumerator.MoveNext()) { AgoraMerchant merchant = merchantsEnumerator.Current; count += merchant.orderManager.OrderedAmountFor(resourceName); } return(count); }
public IEnumerator <AgoraMerchant> MerchantsEnumerator() { AgoraMerchant[] merchantsToIterateOn = merchants; for (int i = 0; i < merchantsToIterateOn.Length; i++) { AgoraMerchant merchant = merchantsToIterateOn[i]; if (merchant != null) { yield return(merchant); } } }
public override void CancelKeptAside(ResourceCarrier carrier) { IEnumerator <AgoraMerchant> merchantsEnumerator = _agora.MerchantsEnumerator(); while (merchantsEnumerator.MoveNext()) { AgoraMerchant merchant = merchantsEnumerator.Current; KeepAsideOrderManager merchantKeepAside = merchant.GetComponent <KeepAsideOrderManager>(); if (merchantKeepAside != null) { merchantKeepAside.CancelKeptAside(carrier); } } }
private IEnumerator OrdersSendingCoroutine() { while (true) { IEnumerator <AgoraMerchant> merchantsEnum = MerchantsEnumerator(); while (merchantsEnum.MoveNext()) { AgoraMerchant merchant = merchantsEnum.Current; merchant.orderManager.SendOrderIfPossible(); yield return(new WaitForSeconds(1.0f)); } yield return(new WaitForSeconds(1.0f)); } }
public override bool CanMakeKeepAsideOrder(string resourceName) { IEnumerator <AgoraMerchant> merchantsEnumerator = _agora.MerchantsEnumerator(); while (merchantsEnumerator.MoveNext()) { AgoraMerchant merchant = merchantsEnumerator.Current; KeepAsideOrderManager merchantKeepAside = merchant.GetComponent <KeepAsideOrderManager>(); if (merchantKeepAside != null && merchantKeepAside.CanMakeKeepAsideOrder(resourceName)) { return(true); } } return(false); }
/** * Quand une agora déévolue, si elle possédait N magasins alors que la forme déévoluée ne peut en accepter que M (M<N), les N-M derniers magasins sont jetés. * (TODO : les enregistrer quand meme pour qu'en cas de déévolution-réévolution l'agora reprenne automatiquement les memes caractéristiques). **/ public override void Devolve() { base.Devolve(); AgoraMerchant[] merchantsNew = new AgoraMerchant[_agora.spots / 2]; int j; int i; for (i = 0, j = 0; i < _agora.spots && j < _agora.spots / 2; i++) { if (_agora.merchants[i] != null) { merchantsNew[j++] = _agora.merchants[i]; } } _agora.merchants = merchantsNew; _agora.spots /= 2; //TODO virer si nécessaire }
public override int Order(string resourceName, int orderedAmount, BuildingStock deliveryPlace) { int leftToOrder = orderedAmount; IEnumerator <AgoraMerchant> merchantsEnumerator = _agora.MerchantsEnumerator(); while (merchantsEnumerator.MoveNext()) { AgoraMerchant merchant = merchantsEnumerator.Current; leftToOrder -= merchant.orderManager.Order(resourceName, leftToOrder, deliveryPlace); if (leftToOrder == 0) { return(orderedAmount); } } return(orderedAmount - leftToOrder); }
public override int MakeKeepAsideOrder(string resourceName, int orderedAmount, ResourceCarrier recipient) { int leftToOrder = orderedAmount; IEnumerator <AgoraMerchant> merchantsEnumerator = _agora.MerchantsEnumerator(); while (merchantsEnumerator.MoveNext()) { AgoraMerchant merchant = merchantsEnumerator.Current; KeepAsideOrderManager merchantKeepAside = merchant.GetComponent <KeepAsideOrderManager>(); if (merchantKeepAside != null) { leftToOrder -= merchantKeepAside.MakeKeepAsideOrder(resourceName, leftToOrder, recipient); } if (leftToOrder == 0) { return(orderedAmount); } } return(orderedAmount - leftToOrder); }
public void AddMerchant(AgoraMerchant merchant) { TakeSpot(merchant); //TODO gérer le retour de TakeSpot ? }
private bool TakeSpot(int spot, AgoraMerchant merchant) { merchants[spot] = merchant; return(true); }