コード例 #1
0
ファイル: Inventaire.cs プロジェクト: RedYou1/Minecraft-Form
        public bool Equals(Inventaire inv)
        {
            if (inv == null)
            {
                return(false);
            }
            if (longueur != inv.longueur || hauteur != inv.hauteur)
            {
                return(false);
            }

            for (int i = 0; i < Length; i++)
            {
                if ((items[i] == null) != (inv.items[i] == null))
                {
                    return(false);
                }
                if (items[i] == null && inv.items[i] == null)
                {
                    continue;
                }
                if (!items[i].Equals(inv.items[i]))
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #2
0
ファイル: Joueur.cs プロジェクト: RedYou1/Minecraft-Form
 /// <summary>
 /// Constructeur de Joueur
 /// </summary>
 /// <param name="x">La position horizontale du joueur</param>
 /// <param name="y">La position verticale du joueur</param>
 public Joueur(float x, float y) : base(x, y, 20)
 {
     crafting   = new Inventaire("CRAFT", 2, 2);
     barre      = new Inventaire("BARRE", 1, 3);
     inventaire = new Inventaire("INVENTAIRE", 2, 3);
     faim       = 20;
 }
コード例 #3
0
ファイル: Joueur.cs プロジェクト: RedYou1/Minecraft-Form
 private Joueur(float x, float y, int vie, float faim, int maindroite, Inventaire inventaire, Inventaire barre, Inventaire crafting) : base(x, y, vie)
 {
     this.faim       = faim;
     this.maindroite = maindroite;
     this.inventaire = inventaire;
     this.barre      = barre;
     this.crafting   = crafting;
 }
コード例 #4
0
 /// <summary>
 /// regarde s'il a un craft possible dans l'inventaire (les 3x3 premier slot)
 /// </summary>
 /// <param name="inv"></param>
 /// <returns></returns>
 public static Craft CheckAll(Inventaire inv)
 {
     foreach (Craft craft in Craft.crafts)
     {
         if (Check(inv, craft))
         {
             return(craft);
         }
     }
     return(null);
 }
コード例 #5
0
ファイル: Marchand.cs プロジェクト: RedYou1/Minecraft-Form
 private Marchand(float x, float y, int vie, Echange[] echanges) : base(x, y, vie)
 {
     inventaire = new Inventaire("MARCHAND", 9, 1);
     if (echanges == null)
     {
         this.echanges = new Echange[0];
     }
     else
     {
         this.echanges = echanges;
     }
 }
コード例 #6
0
ファイル: Marchand.cs プロジェクト: RedYou1/Minecraft-Form
 /// <summary>
 /// Constructeur de Marchand
 /// </summary>
 /// <param name="x">position horizontale du marchand</param>
 /// <param name="y">Position verticale de Marchand</param>
 /// <param name="echanges">echanges possible que le marchand peut faire</param>
 public Marchand(float x, float y, Echange[] echanges) : base(x, y, 20)
 {
     inventaire = new Inventaire("MARCHAND", 9, 1);
     if (echanges == null)
     {
         this.echanges = new Echange[0];
     }
     else
     {
         this.echanges = echanges;
     }
 }
コード例 #7
0
        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);
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
ファイル: Marchand.cs プロジェクト: RedYou1/Minecraft-Form
        /// <summary>
        /// genere un marchand avec des echange aleatoire
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public Marchand(float x, float y) : base(x, y, 20)
        {
            inventaire = new Inventaire("MARCHAND", 9, 1);
            echanges   = new Echange[5];
            Random r = new Random();

            Item[] items = Item.Items().Values.ToArray();
            for (int i = 0; i < 5; i++)
            {
                Item i1 = items[r.Next(0, items.Length)].Clone();
                i1.Quantite = r.Next(1, i1.MaxQuantite + 1);
                Item i2 = null;
                if (r.NextDouble() > .5)
                {
                    i2          = items[r.Next(0, items.Length)].Clone();
                    i2.Quantite = r.Next(1, i2.MaxQuantite + 1);
                }
                Item i3 = items[r.Next(0, items.Length)].Clone();
                i3.Quantite = r.Next(1, i3.MaxQuantite + 1);

                echanges[i] = new Echange(i1, i2, i3);
            }
        }
コード例 #10
0
ファイル: Sacados.cs プロジェクト: RedYou1/Minecraft-Form
 private Sacados(Inventaire inv) : base(1, 1)
 {
     inventaire = inv;
 }
コード例 #11
0
ファイル: Sacados.cs プロジェクト: RedYou1/Minecraft-Form
 public Sacados() : base(1, 1)
 {
     inventaire = new Inventaire("SacADos", 2, 2);
 }
コード例 #12
0
ファイル: Coffre.cs プロジェクト: RedYou1/Minecraft-Form
        public override Block Clone()
        {
            Inventaire inv = inventaire.Clone();

            return(new Coffre_Block(inv));
        }
コード例 #13
0
ファイル: Four.cs プロジェクト: RedYou1/Minecraft-Form
 private Four_Block(Inventaire inv, int carburant) : base(1, "Four")
 {
     this.carburant = carburant;
     inventaire     = inv;
 }
コード例 #14
0
ファイル: Coffre.cs プロジェクト: RedYou1/Minecraft-Form
 /// <summary>
 /// Constructeur de Coffre_Block
 /// </summary>
 public Coffre_Block() : base(1, "Coffre")
 {
     inventaire = new Inventaire("COFFRE", 3, 2);
 }
コード例 #15
0
 /// <summary>
 /// Constructeur de TableDeCraft qui permet de créé une table de craft directement dans la table de craft
 /// </summary>
 /// <param name="inv">l'inventaire de la table de craft</param>
 private TableDeCraft(Inventaire inv) : base(1, "TableDeCraft")
 {
     inventaire = inv;
 }
コード例 #16
0
 /// <summary>
 /// Constructeur de TableDeCraft
 /// </summary>
 public TableDeCraft() : base(1, "TableDeCraft")
 {
     inventaire = new Inventaire("CRAFT", 3, 3);
 }
コード例 #17
0
ファイル: Coffre.cs プロジェクト: RedYou1/Minecraft-Form
 /// <summary>
 /// Constructeur Coffre_Block qui permet de créé un coffre directement avec ton inventaire
 /// </summary>
 /// <param name="inv">L'inventaire de coffre(3,2)</param>
 private Coffre_Block(Inventaire inv) : base(1, "Coffre")
 {
     inventaire = inv;
 }
コード例 #18
0
ファイル: Four.cs プロジェクト: RedYou1/Minecraft-Form
 /// <summary>
 /// Constructeur de Four_Block
 /// </summary>
 public Four_Block() : base(1, "Four")
 {
     carburant  = 0;
     inventaire = new Inventaire("FOUR", 1, 3);
 }