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;
    }
Esempio n. 2
0
    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;
 }
Esempio n. 4
0
    public bool LeaveSpot(AgoraMerchant merchant)
    {
        for (int i = 0; i < spots; i++)
        {
            if (merchants[i] == merchant)
            {
                return(LeaveSpot(i));
            }
        }

        return(false);
    }
Esempio n. 5
0
    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);
    }
Esempio n. 7
0
    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);
            }
        }
    }
Esempio n. 9
0
    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));
        }
    }
Esempio n. 10
0
    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
    }
Esempio n. 12
0
    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);
    }
Esempio n. 13
0
    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);
    }
Esempio n. 14
0
 public void AddMerchant(AgoraMerchant merchant)
 {
     TakeSpot(merchant);
     //TODO gérer le retour de TakeSpot ?
 }
Esempio n. 15
0
 private bool TakeSpot(int spot, AgoraMerchant merchant)
 {
     merchants[spot] = merchant;
     return(true);
 }