private static bool Check(Inventaire inv, Craft craft)
        {
            int longueur = inv.Longueur;
            int hauteur  = inv.Hauteur;

            //max 3x3
            if (longueur > 3)
            {
                longueur = 3;
            }
            if (hauteur > 3)
            {
                hauteur = 3;
            }

            for (int x = 0; x < 3; x++)
            {
                for (int y = 0; y < 3; y++)
                {
                    int slot = x + (y * inv.Longueur);

                    bool invnull = true;
                    if (x < longueur && y < hauteur)
                    {
                        invnull = inv.GetItem(slot) == null;
                    }
                    bool craftnull = craft.From[x, y] == null;
                    //les deux slot sont null
                    if (invnull && craftnull)
                    {
                        continue;
                    }
                    //seulement un des deux est null
                    if (invnull != craftnull)
                    {
                        return(false);
                    }

                    if (x < longueur && y < hauteur)
                    {
                        //si pas meme item ou pas assez de cette item
                        if (craft.From[x, y].id() != inv.GetItem(slot).id() ||
                            craft.From[x, y].Quantite > inv.GetItem(slot).Quantite)
                        {
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }
Exemple #2
0
        public override Item Clone()
        {
            Sacados it = new Sacados();

            for (int x = 0; x < inventaire.Length; x++)
            {
                it.inventaire.SetItem(x, inventaire.GetItem(x));
            }
            return(it);
        }
Exemple #3
0
 public override bool Detruire(Joueur joueur)
 {
     if (joueur.MainDroit() is Pioche)
     {
         joueur.AjouterItem(new Four_Item(1));
         if (inventaire.GetItem(0) != null)
         {
             joueur.AjouterItem(inventaire.GetItem(0));
         }
         if (inventaire.GetItem(1) != null)
         {
             joueur.AjouterItem(inventaire.GetItem(1));
         }
         if (inventaire.GetItem(2) != null)
         {
             joueur.AjouterItem(inventaire.GetItem(2));
         }
         return(true);
     }
     return(false);
 }
        /// <summary>
        /// effectue le craft dans l'inventaire</br>
        /// enleve les items du craft dans l'inventaire</br>
        /// ajoute l'item crafter dans l'inventaire du joueur</br>
        /// reset si plus de place
        /// </summary>
        /// <param name="inv"></param>
        /// <param name="joueur"></param>
        /// <returns></returns>
        public static bool CraftIt(Inventaire inv, Joueur joueur)
        {
            foreach (Craft craft in Craft.crafts)
            {
                if (Check(inv, craft))
                {
                    Item cl = craft.To.Clone();
                    int  i  = joueur.AjouterItem(cl);
                    if (i > 0)
                    {
                        Item cl2 = craft.To.Clone();
                        cl2.Quantite -= i;
                        joueur.EnleverItem(cl2);
                    }
                    else
                    {
                        int longueur = inv.Longueur;
                        int hauteur  = inv.Hauteur;

                        //max 3x3
                        if (longueur > 3)
                        {
                            longueur = 3;
                        }
                        if (hauteur > 3)
                        {
                            hauteur = 3;
                        }

                        for (int x = 0; x < longueur; x++)
                        {
                            for (int y = 0; y < hauteur; y++)
                            {
                                int  slot = x + (y * longueur);
                                Item it   = inv.GetItem(slot);
                                if (it != null)
                                {
                                    it.Quantite -= craft.From[x, y].Quantite;
                                    if (it.Quantite == 0)
                                    {
                                        inv.SetItem(slot, null);
                                    }
                                }
                            }
                        }
                        return(true);
                    }
                }
            }
            return(false);
        }
Exemple #5
0
 /// <summary>
 /// recupère l'item dans sa main droit
 /// </summary>
 /// <returns></returns>
 public Item MainDroit()
 {
     return(barre.GetItem(maindroite));
 }