Example #1
0
        /// <summary>
        /// Obtient le tile à l'index spécifié sur la texture donnée
        /// </summary>
        /// <param name="tileIndex">L'index du tile</param>
        /// <param name="texture">La texture</param>
        /// <returns>Le tile</returns>
        private Bitmap GetCroppedTexture(int tileIndex, string textureName)
        {
            if (tileIndex == GameMapTile.EMPTY)
            {
                return(null);
            }

            int    textureIndex = this.RetrieveTextureIndex(textureName);
            string croppedKey   = RetrieveCroppedKey(tileIndex, textureIndex);

            // Si le tile n'est pas en dictionnaire de données, on l'ajoute pour une utilisation future (évite de recharger la même texture)
            if (!CroppedTextures.ContainsKey(croppedKey))
            {
                Bitmap      texture        = this.GetTexture(textureName);
                Bitmap      croppedTexture = new Bitmap(GlobalData.TileSize.Width, GlobalData.TileSize.Height);
                Graphics    graphics       = Graphics.FromImage(croppedTexture);
                GameVector2 vector         = GameMapTile.DecodeFormattedIndex(tileIndex, texture.Width / GlobalData.TileSize.Width) * GlobalData.TileSize;
                Rectangle   section        = new Rectangle(vector.X, vector.Y, GlobalData.TileSize.Width, GlobalData.TileSize.Height);

                graphics.DrawImage(texture, DESTINATION_RECT_32, section, GraphicsUnit.Pixel);
                CroppedTextures.Add(croppedKey, croppedTexture);
            }

            Bitmap resultBitmap;

            if (CroppedTextures.TryGetValue(croppedKey, out resultBitmap))
            {
                return(resultBitmap);
            }
            return(null);
        }