示例#1
0
 /// <summary>
 /// Permet d'extraire un ResourceStack de ce stack.
 /// Les ressources les plus anciennes seront priorisées et Qte sera retire de ce stack
 /// </summary>
 /// <param name="qte"></param>
 /// <returns>un ResourceStack contenant Qte m3 ou null si ce n'est pas possible</returns>
 public ResourceStack GetSubStack(int qte)
 {
     // Il faut si possible creer un stack qui contient les ressources les plus anciennes
     // de ce stack et les enlever de ce stack. Il ne faut pas garder de resourceElement vide
     if (qte > 0 && qte <= Qte)
     {
         ResourceStack subStack = new ResourceStack(Type);
         foreach (ResourceElement re in _ResourceElementsInto)
         {
             if (subStack.Qte + re.Quantity < qte && re.Quantity > 0)
             {
                 subStack.Add(re); // On ajoute l'élément entier.
             }
             else if (subStack.Qte < qte)
             {
                 subStack.Add(re.Split(qte - subStack.Qte));
             }
         }
         CleanResourceElementList();
         onChange(this);
         return(subStack);
     }
     else
     {
         return(null);
     }
 }
示例#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
            }
        }