/// <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); }
/// <summary> /// Met a jour ce qui est dans le four</br> /// fait cuire les items /// </summary> public void Update() { //dessus Item it1 = inventaire.GetItem(0); //dessous Item it2 = inventaire.GetItem(1); //resultat Item it3 = inventaire.GetItem(2); //s'il a des item a cuire if (it1 != null) { if (it1 is Cuisable cuit) { //si le four peut sortir les items if (it3 == null || (it3.id() == cuit.CuitEn().id() && it3.Quantite + cuit.CuitEn().Quantite <= it3.MaxQuantite)) { while (true) { //s'il ne rest plus d'item a cuire if (it1.Quantite == 0) { inventaire.SetItem(0, null); break; } if (it1 is Cuisable cui) { //s'il reste du carburant if (cui.TempsDeCuisson() <= carburant) { it1.Quantite--; carburant -= cui.TempsDeCuisson(); //l'ajoute if (it3 == null) { inventaire.SetItem(2, cui.CuitEn().Clone()); it3 = inventaire.GetItem(2); } else { it3.Quantite += cui.CuitEn().Quantite; if (it3.Quantite + cui.CuitEn().Quantite > it3.MaxQuantite) { break; } } continue; } else { if (it2 == null) { //s'arrete s'il ne reste plus de carburant meme dans le slot des carburant break; } if (it2 is Brulable bru) { carburant += bru.ProduitTemperature(); it2.Quantite--; if (it2.Quantite == 0) { inventaire.SetItem(1, null); it2 = null; } } } } } } } } }