Beispiel #1
0
 public void Draw()
 {
     if (Sheet == null)
     {
         Sheet = BuildDefaultSheet();
     }
 }
Beispiel #2
0
 public SpritesSheetContent(SpritesSheet sheet)
 {
     SpritesList = new List <SpriteDefinition>();
     foreach (SpriteDefinition sprite in sheet)
     {
         this.SpritesList.Add(sprite);
     }
     this.TexturePath = sheet.TexturePath;
 }
Beispiel #3
0
 public Menu(SpritesSheet ss, List <MenuElement> ml, Vector2 p)
 {
     text = new Text(ss);
     this.spritesSheet     = ss;
     this.menuList         = ml;
     this.position         = p;
     this.width            = 0;
     this.height           = 0;
     this.menuStateGrey    = Color.ForestGreen;
     this.menuStateHilight = Color.White;
     this.menuStateNormal  = Color.OliveDrab;
 }
Beispiel #4
0
        private SpritesSheet BuildDefaultSheet()
        {
            SpritesSheet sheet = new SpritesSheet();

            Content = new ContentManager(this.Services);

            sheet.Texture = Content.Load <Texture2D>("WindowSpritesSheet");
            sheet.Add(new SpriteDefinition("windows_top_left", new Rectangle(0, 0, 29, 22)));
            sheet.Add(new SpriteDefinition("windows_top", new Rectangle(30, 0, 28, 22)));
            sheet.Add(new SpriteDefinition("windows_top_right", new Rectangle(59, 0, 29, 22)));
            sheet.Add(new SpriteDefinition("windows_left", new Rectangle(0, 23, 29, 19)));
            sheet.Add(new SpriteDefinition("windows_center", new Rectangle(30, 23, 28, 19)));
            sheet.Add(new SpriteDefinition("windows_right", new Rectangle(59, 23, 29, 19)));
            sheet.Add(new SpriteDefinition("windows_bottom_left", new Rectangle(0, 43, 29, 6)));
            sheet.Add(new SpriteDefinition("windows_bottom", new Rectangle(30, 43, 28, 6)));
            sheet.Add(new SpriteDefinition("windows_bottom_right", new Rectangle(59, 43, 29, 6)));
            return(sheet);
        }
Beispiel #5
0
        public void Draw(SpriteBatch sb, SpritesSheet ss)
        {
            // Dans l'idée je récupère le viewport et j'affiche ce qui est dans le viewport

            int tileIndex = 1;
            int tileX     = Settings.SCREEN_WIDTH / Settings.PIXEL_RATIO;
            int tileY     = -16;// Settings.SCREEN_HEIGHT / Settings.PIXEL_RATIO;

            for (int i = 0; i < 500; i++)
            {
                Vector2 coords = new Vector2(tileX, tileY);
                //Console.WriteLine("X: " + tileX.ToString() + " Y: " + tileY.ToString());
                sb.Draw(ss.spriteElements[tileIndex].sprite, coords, Color.White);
                tileX = tileX - 24;// * Settings.PIXEL_RATIO);
                if (tileX < -24)
                {
                    tileX = Settings.SCREEN_WIDTH / Settings.PIXEL_RATIO;
                    tileY = tileY + 16;// * Settings.PIXEL_RATIO);
                }
            }
        }
Beispiel #6
0
            public void Draw(SpriteBatch sb, SpritesSheet ss, SpriteFont font)
            {
                int currentRow = 1;

                // Ok, c'est pas mal mais en fait il faut que je déplace le view port dans le tableau, pas pour l'écran


                int tileX = Settings.SCREEN_WIDTH / Settings.PIXEL_RATIO;// + this.TileWidth;
                //int tileY = -this.TileHeight/2;// Settings.SCREEN_HEIGHT / Settings.PIXEL_RATIO;
                int tileY = 0;

                //ok, v2
                int Xreste;
                int Xquotient = Math.DivRem(this.viewport.X, this.TileWidth, out Xreste);

                int Yreste;
                int Yquotient = Math.DivRem(this.viewport.Y, this.TileHeight, out Yreste);
                int offset    = 8 * Yquotient;

                // En gros dans quotient, j'ai le nombre exacte de tile à partir de la gauche, donc j'affiche à partir de cette Tile
                // dans reste, j'ai les pixel restant donc j'affiche à partir de la.

                // Et pareil pour Y



                int row;
                int onsenfout;

                row = Math.DivRem((Settings.SCREEN_WIDTH / Settings.PIXEL_RATIO), this.TileWidth, out onsenfout);

                //int startTile = this.Width * Yquotient + Xquotient-1;

                int startTile = this.TilePicker(this.viewport.X, this.viewport.Y).TileIndex;

                /*
                 * Console.WriteLine("startTile= " + (startTile+1));
                 * Console.WriteLine("viewport.X= " + viewport.X + " viewport.Y=" + viewport.Y);
                 */
                row++;
                //row++;
                //Console.WriteLine("row= " + row);

                int currentTile = row;
                int index;


                int elem = startTile + currentTile;

                /*
                 * Console.WriteLine("currentTile= " + currentTile + " row=" + row);
                 * Console.WriteLine("Xquotient= " + Xquotient + " Yquotient=" + Yquotient);
                 * Console.WriteLine("Xreste= " + Xreste + " Yreste=" + Yreste);
                 */

                //while (tileX > -this.TileWidth && tileY < Settings.SCREEN_HEIGHT / Settings.PIXEL_RATIO)
                while (tileX > 0 && tileY < Settings.SCREEN_HEIGHT / Settings.PIXEL_RATIO)
                {
                    //Vector2 coords = new Vector2(tileX - Xreste, tileY - Yreste);

                    index = startTile + currentTile;



                    if (index > -1 && index < this.tiles.Length)
                    {
                        int spriteIndex = this.tiles[index].SpriteIndex;
                        elem = startTile + currentTile;

                        int offsetY = this.TileHeight - ss.spriteElements[spriteIndex].sprite.Height;
                        int offsetX = this.TileWidth - ss.spriteElements[spriteIndex].sprite.Width;



                        Vector2 coords = new Vector2(tileX - Xreste + offsetX + offset, tileY - Yreste / 2 + offsetY);

                        if (!debugOnScreen)
                        {
                            if (TilePicker(216, 76).TileIndex == index)
                            {
                                TilePicker(216, 76);
                                sb.Draw(ss.spriteElements[spriteIndex].sprite, coords, Color.Red);
                                Vector2 xy = new Vector2(tileX + 2 - Xreste + offsetX + offset, tileY + 2 - Yreste / 2 + offsetY);
                                sb.DrawString(font, index.ToString(), xy, Color.Black, 0f, Vector2.One, 0.3f, SpriteEffects.None, 0f);
                                sb.DrawString(font, index.ToString(), xy, Color.Gray, 0f, Vector2.One, 0.27f, SpriteEffects.None, 0f);
                            }
                            else
                            {
                                sb.Draw(ss.spriteElements[spriteIndex].sprite, coords, Color.White);
                            }
                        }
                        else
                        {
                            if (index % 2 > 0)
                            {
                                sb.Draw(ss.spriteElements[spriteIndex].sprite, coords, Color.Gray);


                                Vector2 xy = new Vector2(tileX + 2 - Xreste + offsetX + offset, tileY + 2 - Yreste / 2 + offsetY);
                                sb.DrawString(font, index.ToString(), xy, Color.Black, 0f, Vector2.One, 0.3f, SpriteEffects.None, 0f);
                                sb.DrawString(font, index.ToString(), xy, Color.Gray, 0f, Vector2.One, 0.27f, SpriteEffects.None, 0f);
                                xy = new Vector2(tileX + 2 - Xreste + offsetX + offset, tileY + 5 - Yreste / 2 + offsetY);
                                sb.DrawString(font, offset.ToString(), xy, Color.Black, 0f, Vector2.One, 0.3f, SpriteEffects.None, 0f);
                                sb.DrawString(font, offset.ToString(), xy, Color.Gray, 0f, Vector2.One, 0.27f, SpriteEffects.None, 0f);
                            }
                            else
                            {
                                sb.Draw(ss.spriteElements[spriteIndex].sprite, coords, Color.White);
                                Vector2 xy = new Vector2(tileX + 2 - Xreste + offsetX + offset, tileY + 2 - Yreste / 2 + offsetY);
                                sb.DrawString(font, index.ToString(), xy, Color.Black, 0f, Vector2.One, 0.3f, SpriteEffects.None, 0f);
                                sb.DrawString(font, index.ToString(), xy, Color.White, 0f, Vector2.One, 0.27f, SpriteEffects.None, 0f);
                                xy = new Vector2(tileX + 2 - Xreste + offsetX + offset, tileY + 5 - Yreste / 2 + offsetY);
                                sb.DrawString(font, offset.ToString(), xy, Color.Black, 0f, Vector2.One, 0.3f, SpriteEffects.None, 0f);
                                sb.DrawString(font, offset.ToString(), xy, Color.White, 0f, Vector2.One, 0.27f, SpriteEffects.None, 0f);
                            }

                            Vector2 zixy = new Vector2(tileX + 2 - Xreste + offsetX + offset, tileY + 8 - Yreste / 2);
                            sb.DrawString(font, Yreste.ToString(), zixy, Color.Black, 0f, Vector2.One, 0.3f, SpriteEffects.None, 0f);
                            sb.DrawString(font, Yreste.ToString(), zixy, Color.White, 0f, Vector2.One, 0.27f, SpriteEffects.None, 0f);
                        }
                    }



                    /*xy = new Vector2(tileX + 10 - Xreste, tileY + 10 - Yreste);
                     * sb.DrawString(font, this.tiles[index].Offset.ToString(), xy, Color.Black, 0f, Vector2.One, 0.4f, SpriteEffects.None, 0f);
                     * sb.DrawString(font, this.tiles[index].Offset.ToString(), xy, Color.White, 0f, Vector2.One, 0.37f, SpriteEffects.None, 0f);
                     */

                    currentTile--;
                    tileX = tileX - this.TileWidth;

                    if (currentTile == 0)
                    {
                        currentRow++;
                        tileX = Settings.SCREEN_WIDTH / Settings.PIXEL_RATIO;
                        tileY = tileY + this.TileHeight; // * Settings.PIXEL_RATIO);
                                                         // Je remet au max mon compteur de décalage de row
                        startTile = startTile + this.Width;
                        //startTile = this.TilePicker(tileX, tileY).TileIndex;
                        // JE me repositionne sur la bonne tile
                        currentTile = row;

                        offset = offset + 8;
                        //if (offset < 48*2) offset = offset + 8; else offset = 0;

                        //currentTile = currentTile + offset / 8;
                    }
                }

                if (debugOnScreen)
                {
                    Vector2 thexy = new Vector2(300, 2);
                    sb.DrawString(font, startTile.ToString(), thexy, Color.Black, 0f, Vector2.One, 0.4f, SpriteEffects.None, 0f);
                    sb.DrawString(font, startTile.ToString(), thexy, Color.White, 0f, Vector2.One, 0.37f, SpriteEffects.None, 0f);
                }

                /*
                 * // je parcours l'écran en fonction de la taille définit. Cela me donnera le nombre de tile à afficher
                 * while (tileX > -this.TileWidth && tileY < Settings.SCREEN_HEIGHT / Settings.PIXEL_RATIO)
                 * {
                 *  //Du coup, comme je dois partir le plus a droite, la tile la plus à droite est la tile de gauche + le nombre de
                 *  //tile possible a afficher dans une row
                 *
                 *
                 *  // Donc la je sais que sur une ligne affiché, je peux mettre "row" tiles (en nombre, donc)
                 *  // Comme je commence à droite, celle de droite sera start tile + row
                 *  // Mais il me manque le Y
                 *  // Donc la même
                 *
                 *  Console.WriteLine("startTile=" + startTile + " currentTile=" + currentTile);
                 *  Vector2 coords = new Vector2(tileX + viewport.X, tileY + viewport.Y);
                 *  //if (startTile + currentTile > 0)
                 *  //{
                 *      index = this.tiles[startTile + currentTile].SpriteIndex;
                 *      int elem = startTile + currentTile;
                 *      sb.Draw(ss.spriteElements[index].sprite, coords, Color.White);
                 *
                 *
                 *      Vector2 xy = new Vector2(tileX + 5 + viewport.X, tileY + 5 + viewport.Y);
                 *      /*
                 *                          sb.DrawString(font, row.ToString(), xy, Color.Black, 0f, Vector2.One, 0.4f, SpriteEffects.None, 0f);
                 *                          sb.DrawString(font, row.ToString(), xy, Color.White, 0f, Vector2.One, 0.37f, SpriteEffects.None, 0f);
                 * /*                        */
                /*                    xy = new Vector2(tileX + 10 + viewport.X, tileY + 10 + viewport.Y);
                 *                  sb.DrawString(font, elem.ToString(), xy, Color.Black, 0f, Vector2.One, 0.4f, SpriteEffects.None, 0f);
                 *                  sb.DrawString(font, elem.ToString(), xy, Color.White, 0f, Vector2.One, 0.37f, SpriteEffects.None, 0f);
                 *              //}
                 *
                 *              //#TODO le décalage dans la tile
                 * /*
                 *              tileX = tileX - this.TileWidth;
                 *
                 *              // Ensuite, je ferais la tile de droite - 1 donc je dois décrémenter row
                 *              currentTile--;
                 *
                 *              // Si j'ai fais toute une ligne, j'incrémente sur Y
                 *              if (currentTile == 0)
                 *              {
                 *                  tileX = Settings.SCREEN_WIDTH / Settings.PIXEL_RATIO;
                 *                  tileY = tileY + this.TileHeight;// * Settings.PIXEL_RATIO);
                 *                  // Je remet au max mon compteur de décalage de row
                 *                  startTile = startTile + this.Width;
                 *                  // JE me repositionne sur la bonne tile
                 *                  currentTile = row;
                 *
                 *              }
                 *
                 *
                 *
                 *          }
                 */



                /*
                 *
                 *
                 * int tilePart = 0;
                 * row = (Settings.SCREEN_WIDTH / Settings.PIXEL_RATIO) / this.TileWidth+1;
                 *
                 * while (tileX>-this.TileWidth && tileY < Settings.SCREEN_HEIGHT/ Settings.PIXEL_RATIO)
                 * //for (int i = 0; i < 500; i++)
                 * {
                 *
                 *  Vector2 coords = new Vector2(tileX+viewport.X, tileY+viewport.Y);
                 *  //Console.WriteLine("X: " + tileX.ToString() + " Y: " + tileY.ToString());
                 *
                 *
                 *
                 *
                 *  int index = this.tiles[tilePart].SpriteIndex;
                 *
                 *
                 *  sb.Draw(ss.spriteElements[index].sprite, coords, Color.White);
                 *
                 *  int elem = row-tilePart;
                 *  Vector2 xy = new Vector2(tileX + 5 + viewport.X, tileY + 5 + viewport.Y);
                 *
                 *  sb.DrawString(font, row.ToString(), xy, Color.Black, 0f, Vector2.One, 0.4f, SpriteEffects.None, 0f);
                 *  sb.DrawString(font, row.ToString(), xy, Color.White, 0f, Vector2.One, 0.37f, SpriteEffects.None, 0f);
                 *  xy = new Vector2(tileX + 10 + viewport.X, tileY + 10 + viewport.Y);
                 *  sb.DrawString(font, elem.ToString(), xy, Color.Black, 0f, Vector2.One, 0.4f, SpriteEffects.None, 0f);
                 *  sb.DrawString(font, elem.ToString(), xy, Color.White, 0f, Vector2.One, 0.37f, SpriteEffects.None, 0f);
                 *
                 *  tileX = tileX - this.TileWidth;// * Settings.PIXEL_RATIO);
                 * //row--;
                 *
                 *  if (tileX < -this.TileHeight)
                 *  {
                 *      tileX = Settings.SCREEN_WIDTH / Settings.PIXEL_RATIO;
                 *      tileY = tileY + this.TileHeight;// * Settings.PIXEL_RATIO);
                 *      row = row + row;
                 *  }
                 *  tilePart++;
                 *
                 *
                 * }
                 */
            }
Beispiel #7
0
        public void Draw(SpriteBatch sb, SpritesSheet ss, SpriteFont _font)
        {
            int drawnPeons = 0;
            int elemIndex  = 0;



            if (currentFrame - 1 < spritesFrames.Count())
            {
                //  ******  FRAME RECTANGLE ***

                /*
                 * if (spritesFrames[currentFrame - 1].width > 0 && spritesFrames[currentFrame - 1].height > 0)
                 * {
                 *  Rectangle FrameRect = new Rectangle(0, 0, spritesFrames[currentFrame - 1].width, spritesFrames[currentFrame - 1].height);
                 *
                 *  Color[] data = new Color[spritesFrames[currentFrame - 1].width * spritesFrames[currentFrame - 1].height];
                 *
                 *  for (int i = 0; i < data.Length; i++)//loop through all the colors setting them to whatever values we want
                 *  {
                 *      data[i] = new Color(255, 255, 255, 255); ;
                 *  }
                 *  Texture2D tex = new Texture2D(graphicsDevice, spritesFrames[currentFrame - 1].width, spritesFrames[currentFrame - 1].height);
                 *  tex.SetData(data);
                 *  sb.Draw(tex, new Vector2(Location.X - spritesFrames[currentFrame - 1].width / 2, Location.Y - spritesFrames[currentFrame - 1].height), null, Color.White);
                 * }
                 */

                int j = 1;
                int elementCounter = 1;
                foreach (SpriteElement spriteElement in spritesFrames[currentFrame - 1].spritesElements)
                {
                    elemIndex++;
                    long elem = (spriteElement.sprite / 6);

                    int     xoff = Location.X - (spriteElement.xOffset) / 2;
                    int     yoff = Location.Y - (spriteElement.yOffset) / 2;
                    Vector2 xy   = new Vector2(xoff, yoff);

                    Rectangle rectangle = new Rectangle(1, 1, 1, 1);

                    // Dans l'idée, si le flag est à 128, alors on a un sprite modifiable, c'est à dire un personnage.
                    // On doit remplir une table dans l'animation avec un nombre de personnage à utiliser, c'est la
                    // population de l'attraction puis on l'utilise.

                    // Il faudra quand même revoir l'algo afin que les spectateurs ne soient pas nécessairement tous au même
                    // endroit sur chaque animation. Après c'est peut être pas hyper génant.


                    // En gros l'idée pour les peons standards est d'aller chercher leur sprite index dans la frame dédié (604-605...)
                    // a la position "standard", gueule du serpent en 24, le banzai en 30 etc
                    // Je ne comprend pas pourquoi il y a plusieurs style de frame mais je présume que les animations ne sont pas
                    // les mêmes pour une raison inconnu
                    // En vrai toutes les anims sont différentes, on ne s'en sortira pas sans une indexation frame par frame

                    // The element is a guest.
                    if (spriteElement.xFlipped > 127)
                    {
                        //elem = 2129;

                        #region - Guest Replacement - CURRENTLY NON WORKING NEED TO REDO WITH AN INDEX
                        if (this.replaceGuest)
                        {
                            if (guests.Count == 0)
                            {
                                //nothing
                                elem = 0;
                            }
                            else
                            {
                                if (drawnPeons < guests.Count)
                                {
                                    //en théorie j'affecte le type de peon a elem ici.
                                    //Console.Write("current elem is: " + elem);
                                    //elem =CONST.ADULTGIRL_GREENDRESS_INDEXES[elem - 65];

                                    // okok, c'est pas très simple mais c'est rudement efficace
                                    int newelem;
                                    newelem = Guests.guests.Find(x => x.Index == Guests.currentGuestIndex).animationIndexes.Find(x => x.Index == elem).Sprite;

                                    //newelem = Peons.peons.Find(x => x.Name == "girl green dress").animationIndexes.Find(x => x.Index == elem).Sprite;
                                    //newelem = Peons.peons.Find(x => x.Name == "child guy white shirt").animationIndexes.Find(x => x.Index == elem).Sprite;
                                    //newelem = Peons.peons.Find(x => x.Name == "child girl red pants").animationIndexes.Find(x => x.Index == elem).Sprite;
                                    //newelem = Peons.peons.Find(x => x.Name == "guy yellow pants").animationIndexes.Find(x => x.Index == elem).Sprite;
                                    //newelem = Peons.peons.Find(x => x.Name == "girl purple dress").animationIndexes.Find(x => x.Index == elem).Sprite;
                                    //newelem = Peons.peons.Find(x => x.Name == "child guy blue suits").animationIndexes.Find(x => x.Index == elem).Sprite;
                                    //newelem = Peons.peons.Find(x => x.Name == "child girl white shirt").animationIndexes.Find(x => x.Index == elem).Sprite;



                                    //Console.WriteLine(" new elem is: " + newelem.ToString());

                                    if (newelem != 0)
                                    {
                                        elem = newelem;
                                    }



                                    drawnPeons++;
                                }
                                else
                                {
                                    elem = 0;
                                }
                            }
                        }
                        #endregion
                    }

                    //Console.WriteLine("Current Animation: " + this.animationIndex + " spriteElement: " + elem);

                    // This is a Guest
                    if (elem != 0 && spriteElement.xFlipped > 127)
                    {
                        if (j < this.guests.Count + 1)
                        {
                            //Console.WriteLine(j);
                            j++;
                            if (spriteElement.xFlipped == 129)
                            {
                                // Just a dummy text for the xflipped element
                                //if (this.hilight) col = Color.Red; else col = Color.White;


                                rectangle = new Rectangle(xoff, yoff, ss.spriteElements[(int)elem].sprite.Width, ss.spriteElements[(int)elem].sprite.Height);

                                sb.Draw(ss.spriteElements[(int)elem].sprite, rectangle, null, Color.White, 0f,
                                        Vector2.Zero, SpriteEffects.FlipHorizontally, 0);
                            }
                            else
                            {
                                sb.Draw(ss.spriteElements[(int)elem].sprite, xy, Color.White);
                            }

                            if (drawIndex)
                            {
                                sb.DrawString(_font, elem.ToString() + " / " + spriteElement.xFlipped.ToString(), xy, Color.Black, 0f, Vector2.One, 0.26f, SpriteEffects.None, 0f);
                                sb.DrawString(_font, elem.ToString() + " / " + spriteElement.xFlipped.ToString(), xy, Color.White, 0f, Vector2.One, 0.25f, SpriteEffects.None, 0f);
                            }
                            if (drawElem)
                            {
                                sb.DrawString(_font, elemIndex.ToString() + " / " + spriteElement.xFlipped.ToString(), xy, Color.Black, 0f, Vector2.One, 0.4f, SpriteEffects.None, 0f);
                                sb.DrawString(_font, elemIndex.ToString() + " / " + spriteElement.xFlipped.ToString(), xy, Color.White, 0f, Vector2.One, 0.37f, SpriteEffects.None, 0f);
                            }
                        }
                    }
                    else
                    // This is not a guest, it's an structure element
                    {
                        sb.Draw(ss.spriteElements[(int)elem].sprite, xy, Color.White);

                        if (drawIndex)
                        {
                            sb.DrawString(_font, "[" + elementCounter + "]" + elem.ToString() + " // " + spriteElement.xFlipped.ToString(), xy, Color.Black, 0f, Vector2.One, 0.21f, SpriteEffects.None, 0f);
                            sb.DrawString(_font, "[" + elementCounter + "]" + elem.ToString() + " // " + spriteElement.xFlipped.ToString(), xy, Color.White, 0f, Vector2.One, 0.20f, SpriteEffects.None, 0f);
                        }
                    }

                    elementCounter++;
                }
            }
        }
 public void AddSpritesSheet(SpritesSheet sheet)
 {
     sheets.Add(sheet);
     FillCombo();
     this.SelectedSheet = sheet;
 }
Beispiel #9
0
        public Text(SpritesSheet ss)
        {
            position.X = 0;
            position.Y = 0;
            height     = 5;
            Color      = Color.White;

            spritesSheet = ss;

            #region * FONTDICT (lot of adds) *
            int i = 1;
            fontDict.Add('%', i++);
            fontDict.Add('\'', i++);
            fontDict.Add('"', i++);
            fontDict.Add('0', i++);
            fontDict.Add('1', i++);
            fontDict.Add('2', i++);
            fontDict.Add('3', i++);
            fontDict.Add('4', i++);
            fontDict.Add('5', i++);
            fontDict.Add('6', i++);
            fontDict.Add('7', i++);
            fontDict.Add('8', i++);
            fontDict.Add('9', i++);
            fontDict.Add(':', i++);
            fontDict.Add('A', i++);
            fontDict.Add('B', i++);
            fontDict.Add('C', i++);
            fontDict.Add('D', i++);
            fontDict.Add('E', i++);
            fontDict.Add('F', i++);
            fontDict.Add('G', i++);
            fontDict.Add('H', i++);
            fontDict.Add('I', i++);
            fontDict.Add('J', i++);
            fontDict.Add('K', i++);
            fontDict.Add('L', i++);
            fontDict.Add('M', i++);
            fontDict.Add('N', i++);
            fontDict.Add('O', i++);
            fontDict.Add('P', i++);
            fontDict.Add('Q', i++);
            fontDict.Add('R', i++);
            fontDict.Add('S', i++);
            fontDict.Add('T', i++);
            fontDict.Add('U', i++);
            fontDict.Add('V', i++);
            fontDict.Add('W', i++);
            fontDict.Add('X', i++);
            fontDict.Add('Y', i++);
            fontDict.Add('Z', i++);
            fontDict.Add('.', i++);
            fontDict.Add('`', i++);
            fontDict.Add('(', i++);
            fontDict.Add(')', i++);
            fontDict.Add('/', i++);
            fontDict.Add('Ü', i++);
            fontDict.Add('Ä', i++);
            fontDict.Add('Ö', i++);
            fontDict.Add('§', i++);
            fontDict.Add('$', i++);
            fontDict.Add('ò', i++);
            fontDict.Add('Ì', i++);
            fontDict.Add('È', i++);
            fontDict.Add('À', i++);
            fontDict.Add('Ñ', i++);
            fontDict.Add(' ', i++);
            #endregion
        }