Esempio n. 1
0
        /// <summary>
        /// retire une certaine quantite d'une ressource dans un hangar. Les resources retirees sont toujours celles des
        /// stacks les plus anciens.
        /// </summary>
        /// <param name="type">le type de resource a retirer</param>
        /// <param name="qte"></param>
        /// <returns>un stack qui contient la qte de resource du type si possible, null sinon</returns>
        public ResourceStack GetStack(ResourceElement.ResourceType type, int qte)
        {
            if (GetResourceQte(type) < qte)
            {
                return(null);
            }

            ResourceStack currentStack = null;

            foreach (ResourceStack s in ResourceStacks)
            {
                if (s.Type == type)
                {
                    currentStack = s;
                }
            }

            ResourceStack result = currentStack.GetSubStack(qte);

            if (currentStack.Qte == 0)
            {
                onRemoveStack(currentStack);
                ResourceStacks.Remove(currentStack);
            }
            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// Permet d'ajouter un stack dans ce hangar. Le stack sera vide dans la transaction.
        /// </summary>
        /// <param name="stack">Le stack a ajouter.</param>
        public void Add(ResourceStack stack)
        {
            ResourceStack inHangar = null;

            for (int i = 0; i < ResourceStacks.Count; i++)   //trouver si un stack de ce type existe, sinon en creer un
            {
                if (ResourceStacks[i].Type == stack.Type)
                {
                    inHangar = ResourceStacks[i];
                }
            }
            if (inHangar == null)   // Il n'existait pas de stack dans le hangar.
            {
                ResourceStack s = stack.GetSubStack(stack.Qte);
                ResourceStacks.Add(s); // Fait une copie dans le hangar et vide l'ancien stack
                onNewStack(s);
            }
            else
            {
                inHangar.Add(stack); // Combine les stacks
            }
        }