Exemple #1
0
 public LSTRFont(LFont font, bool anti, char[] additionalChars)
 {
     if (displays == null)
     {
         displays = new System.Collections.Generic.Dictionary<string, Loon.Core.Graphics.Opengl.LTextureBatch.GLCache>(totalCharSet);
     }
     else
     {
         displays.Clear();
     }
     this.useCache = true;
     this.font = font;
     this.fontSize = font.GetSize();
     this.ascent = font.GetAscent();
     this.antiAlias = anti;
     if (antiAlias)
     {
         if (trueFont == null)
         {
             trueFont = LFont.GetTrueFont();
         }
         if (additionalChars != null && additionalChars.Length > (textureWidth / trueFont.GetSize()))
         {
             this.textureWidth *= 2;
             this.textureHeight *= 2;
         }
         this.fontScale = (float)fontSize / (float)trueFont.GetSize();
         this.Make(trueFont, additionalChars);
     }
     else
     {
         this.Make(this.font, additionalChars);
     }
 }
Exemple #2
0
 public LInfo(LTexture formImage, int x, int y, int width, int height)
     : base(x, y, width, height)
 {
     fontSize = deffont.GetSize();
     if (formImage == null)
     {
         this.SetBackground(new LTexture(width, height, true));
         this.SetAlpha(0.3F);
     }
     else
     {
         this.SetBackground(formImage);
         if (width == -1)
         {
             width = formImage.GetWidth();
         }
         if (height == -1)
         {
             height = formImage.GetHeight();
         }
     }
     this.message_char_count = 0;
     this.message_x          = new int[messageCountMax];
     this.message_y          = new int[messageCountMax];
     this.locatePoint        = new List <LocatePoint>();
     this.flag            = new FlagImage(this);
     this.customRendering = true;
     this.SetElastic(true);
     this.SetLayer(100);
 }
Exemple #3
0
 public LSTRFont(LFont font, bool anti, char[] additionalChars)
 {
     if (displays == null)
     {
         displays = new System.Collections.Generic.Dictionary <string, Loon.Core.Graphics.Opengl.LTextureBatch.GLCache>(totalCharSet);
     }
     else
     {
         displays.Clear();
     }
     this.useCache  = true;
     this.font      = font;
     this.fontSize  = font.GetSize();
     this.ascent    = font.GetAscent();
     this.antiAlias = anti;
     if (antiAlias)
     {
         if (trueFont == null)
         {
             trueFont = LFont.GetTrueFont();
         }
         if (additionalChars != null && additionalChars.Length > (textureWidth / trueFont.GetSize()))
         {
             this.textureWidth  *= 2;
             this.textureHeight *= 2;
         }
         this.fontScale = (float)fontSize / (float)trueFont.GetSize();
         this.Make(trueFont, additionalChars);
     }
     else
     {
         this.Make(this.font, additionalChars);
     }
 }
Exemple #4
0
 public void SetFont(LFont deffont)
 {
     if (deffont == null)
     {
         return;
     }
     this.deffont  = deffont;
     this.fontSize = deffont.GetSize();
 }
Exemple #5
0
        protected internal override void CreateCustomUI(GLEx g, int x, int y, int w, int h)
        {
            if (!visible)
            {
                return;
            }
            LColor oldColor = g.GetColor();
            LFont  oldFont  = g.GetFont();

            g.SetColor(fontColor);
            g.SetFont(messageFont);
            sizeFont       = messageFont.GetSize();
            doubleSizeFont = sizeFont * 2;
            if (doubleSizeFont == 0)
            {
                doubleSizeFont = 20;
            }
            messageLeft = (x + doubleSizeFont + sizeFont / 2) + tmpOffset + left
                          + doubleSizeFont;
            // g.setAntiAlias(true);
            if (message != null)
            {
                messageTop = y + doubleSizeFont + top + 2;
                g.DrawString(message, messageLeft, messageTop);
            }
            else
            {
                messageTop = y + top + 2;
            }

            nTop = messageTop;
            if (selects != null)
            {
                nLeft = messageLeft - sizeFont / 4;
                for (int i = 0; i < selects.Length; i++)
                {
                    nTop    += 30;
                    type     = i + 1;
                    isSelect = (type == ((selectFlag > 0) ? selectFlag : 1));
                    if ((buoyage != null) && isSelect)
                    {
                        g.SetAlpha(autoAlpha);
                        g.DrawTexture(buoyage, nLeft,
                                      nTop - (int)(buoyage.GetHeight() / 1.5f));
                        g.SetAlpha(1.0F);
                    }
                    g.DrawString(selects[i], messageLeft, nTop);
                    if ((cursor != null) && isSelect)
                    {
                        g.DrawTexture(cursor, nLeft, nTop - cursor.GetHeight() / 2, LColor.white);
                    }
                }
            }
            // g.setAntiAlias(false);
            g.SetColor(oldColor);
            g.SetFont(oldFont);
        }
Exemple #6
0
 private static string MakeLazyWestKey(LFont font)
 {
     if (lazyKey == null)
     {
         lazyKey = new StringBuilder();
         lazyKey.Append(font.GetFontName().ToLower());
         lazyKey.Append(font.GetStyle());
         lazyKey.Append(font.GetSize());
     }
     else
     {
         lazyKey.Clear();
         lazyKey.Append(font.GetFontName().ToLower());
         lazyKey.Append(font.GetStyle());
         lazyKey.Append(font.GetSize());
     }
     return(lazyKey.ToString());
 }
Exemple #7
0
 public virtual void CreateUI(GLEx g)
 {
     if (visible)
     {
         LFont oldFont  = g.GetFont();
         Color oldColor = g.GetColor();
         g.SetFont(font);
         g.SetColor(color);
         this.width  = font.StringWidth(label);
         this.height = font.GetSize();
         if (alpha > 0 && alpha < 1)
         {
             g.SetAlpha(alpha);
             g.DrawString(label, X(), Y() - font.GetAscent());
             g.SetAlpha(1.0F);
         }
         else
         {
             g.DrawString(label, X(), Y() - font.GetAscent());
         }
         g.SetFont(oldFont);
         g.SetColor(oldColor);
     }
 }
Exemple #8
0
        public static string MakeStringLazyKey(LFont font, string text)
        {
            int hashCode = 0;

            hashCode = LSystem.Unite(hashCode, font.GetSize());
            hashCode = LSystem.Unite(hashCode, font.GetStyle());
            if (lazyKey == null)
            {
                lazyKey = new StringBuilder();
                lazyKey.Append(font.GetFontName().ToLower());
                lazyKey.Append(hashCode);
                lazyKey.Append(split);
                lazyKey.Append(text);
            }
            else
            {
                lazyKey.Clear();
                lazyKey.Append(font.GetFontName().ToLower());
                lazyKey.Append(hashCode);
                lazyKey.Append(split);
                lazyKey.Append(text);
            }
            return(lazyKey.ToString());
        }
Exemple #9
0
 public void SetFont(LFont font)
 {
     this.m_fontsize = font.GetSize();
 }
Exemple #10
0
 public void SetFont(LFont deffont)
 {
     if (deffont == null)
     {
         return;
     }
     this.deffont = deffont;
     this.fontSize = deffont.GetSize();
 }
Exemple #11
0
        private void DrawMessage(GLEx gl, LColor old)
        {
            if (!visible)
            {
                return;
            }
            if (!running)
            {
                return;
            }
            if (batch == null)
            {
                return;
            }
            if (strings.GetSize() > 25)
            {
                lock (showMessages)
                {
                    this.size = showMessages.Length;

                    this.fontSize = (isEnglish) ? strings.GetSize() / 2 : gl.GetFont()
                                    .GetSize();
                    this.fontHeight = strings.GetHeight();
                    this.tmp_left   = (isLeft) ? 0 : (width - (fontSize * messageLength))
                                      / 2 - (int)(fontSize * 1.5f);
                    this.left           = tmp_left;
                    this.index          = offset = font = tmp_font = 0;
                    this.fontSizeDouble = fontSize * 2;

                    batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, gl.View);

                    fontColor = old;

                    for (int i = 0; i < size; i++)
                    {
                        text = showMessages[i];
                        if (text == '\0')
                        {
                            continue;
                        }

                        if (interceptCount < interceptMaxString)
                        {
                            interceptCount++;
                            continue;
                        }
                        else
                        {
                            interceptMaxString = 0;
                            interceptCount     = 0;
                        }
                        if (showMessages[i] == 'n' &&
                            showMessages[(i > 0) ? i - 1 : 0] == '\\')
                        {
                            index = 0;
                            left  = tmp_left;
                            offset++;
                            continue;
                        }
                        else if (text == '\n')
                        {
                            index = 0;
                            left  = tmp_left;
                            offset++;
                            continue;
                        }
                        else if (text == '<')
                        {
                            LColor color = GetColor(showMessages[(i < size - 1) ? i + 1
                                    : i]);
                            if (color != null)
                            {
                                interceptMaxString = 1;
                                fontColor          = color;
                            }
                            continue;
                        }
                        else if (showMessages[(i > 0) ? i - 1 : i] == '<' &&
                                 GetColor(text) != null)
                        {
                            continue;
                        }
                        else if (text == '/')
                        {
                            if (showMessages[(i < size - 1) ? i + 1 : i] == '>')
                            {
                                interceptMaxString = 1;
                                fontColor          = old;
                            }
                            continue;
                        }
                        else if (index > messageLength)
                        {
                            index = 0;
                            left  = tmp_left;
                            offset++;
                            newLine = false;
                        }
                        else if (text == '\\')
                        {
                            continue;
                        }
                        tmp_font = strings.CharWidth(text);
                        if (System.Char.IsLetter(text))
                        {
                            if (tmp_font < fontSize)
                            {
                                font = fontSize;
                            }
                            else
                            {
                                font = tmp_font;
                            }
                        }
                        else
                        {
                            font = fontSize;
                        }
                        left += font;
                        if (font <= 10 && StringUtils.IsSingle(text))
                        {
                            left += 12;
                        }
                        if (i != size - 1)
                        {
                            pos.X = vector.x + left + leftOffset;
                            pos.Y = (offset * fontHeight) + vector.y + fontSizeDouble
                                    + topOffset;
                            batch.DrawString(strings.Font, Convert.ToString(text), pos, fontColor.Color);
                        }
                        else if (!newLine)
                        {
                            pos.X = vector.x + left + leftOffset + iconWidth;
                            pos.Y = (offset * fontHeight) + vector.y + fontSize
                                    + topOffset + strings.GetAscent();
                            batch.Draw(creeseIcon.Texture, pos, Microsoft.Xna.Framework.Color.White);
                        }
                        index++;
                    }

                    batch.End();

                    if (messageCount == next)
                    {
                        onComplete = true;
                    }
                }
            }
            else
            {
                lock (showMessages)
                {
                    this.size = showMessages.Length;

                    this.fontSize = (isEnglish) ? ((int)(strings.GetSize() * 1.4f)) / 2 : (int)(gl.GetFont()
                                                                                                .GetSize() * 1.4f);
                    this.fontHeight = strings.GetHeight() + 10;
                    this.tmp_left   = isLeft ? 0 : (int)(((width - (fontSize * messageLength))
                                                          / 2 + (int)(fontSize * 4)));
                    this.left           = tmp_left;
                    this.index          = offset = font = tmp_font = 0;
                    this.fontSizeDouble = (int)(fontSize * 2 * 1.2f);

                    batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);

                    fontColor = old;

                    for (int i = 0; i < size; i++)
                    {
                        text = showMessages[i];

                        if (text == '\0')
                        {
                            continue;
                        }

                        if (interceptCount < interceptMaxString)
                        {
                            interceptCount++;
                            continue;
                        }
                        else
                        {
                            interceptMaxString = 0;
                            interceptCount     = 0;
                        }
                        if (showMessages[i] == 'n' &&
                            showMessages[(i > 0) ? i - 1 : 0] == '\\')
                        {
                            index = 0;
                            left  = tmp_left;
                            offset++;
                            continue;
                        }
                        else if (text == '\n')
                        {
                            index = 0;
                            left  = tmp_left;
                            offset++;
                            continue;
                        }
                        else if (text == '<')
                        {
                            LColor color = GetColor(showMessages[(i < size - 1) ? i + 1
                                    : i]);
                            if (color != null)
                            {
                                interceptMaxString = 1;
                                fontColor          = color;
                            }
                            continue;
                        }
                        else if (showMessages[(i > 0) ? i - 1 : i] == '<' &&
                                 GetColor(text) != null)
                        {
                            continue;
                        }
                        else if (text == '/')
                        {
                            if (showMessages[(i < size - 1) ? i + 1 : i] == '>')
                            {
                                interceptMaxString = 1;
                                fontColor          = old;
                            }
                            continue;
                        }
                        else if (index > messageLength)
                        {
                            index = 0;
                            left  = tmp_left;
                            offset++;
                            newLine = false;
                        }
                        else if (text == '\\')
                        {
                            continue;
                        }
                        tmp_font = strings.CharWidth(text);
                        font     = tmp_font;
                        if (System.Char.IsLetter(text))
                        {
                            if (tmp_font < fontSize)
                            {
                                font = fontSize;
                            }
                            else
                            {
                                font = tmp_font;
                            }
                        }
                        else
                        {
                            font = fontSize;
                        }
                        left += font;
                        if (font <= 10 && StringUtils.IsSingle(text))
                        {
                            left += 12;
                        }
                        if (i != size - 1)
                        {
                            pos.X = vector.x + left + leftOffset;
                            pos.Y = ((offset * fontHeight) + vector.y + fontSizeDouble
                                     + topOffset + strings.GetAscent() * 2.2f);
                            batch.DrawString(strings.Font, Convert.ToString(text), pos, fontColor.Color);
                        }
                        else if (!newLine)
                        {
                            pos.X = vector.x + left + leftOffset + iconWidth;
                            pos.Y = (offset * fontHeight) + vector.y + fontSize
                                    + topOffset + (strings.GetAscent() * 2.2f) + iconWidth;
                            batch.Draw(creeseIcon.Texture, pos, Microsoft.Xna.Framework.Color.White);
                        }
                        index++;
                    }

                    batch.End();

                    if (messageCount == next)
                    {
                        onComplete = true;
                    }
                }
            }
        }
Exemple #12
0
        private void Make(LFont font, char[] customCharsArray)
        {
            if (charArray == null)
            {
                charArray = new IntObject[totalCharSet];
            }
            if (customCharsArray != null && customCharsArray.Length > totalCharSet)
            {
                textureWidth *= 2;
            }
            try
            {
                LImage    imgTemp = LImage.CreateImage(textureWidth, textureHeight, true);
                LGraphics g       = imgTemp.GetLGraphics();
                g.SetFont(font);
                int rowHeight         = 0;
                int positionX         = 0;
                int positionY         = 0;
                int customCharsLength = (customCharsArray != null) ? customCharsArray.Length
                        : 0;
                this.totalCharSet = customCharsLength == 0 ? totalCharSet : 0;
                StringBuilder sbr = new StringBuilder(totalCharSet);
                for (int i = 0; i < totalCharSet + customCharsLength; i++)
                {
                    char ch = (i < totalCharSet) ? (char)i : customCharsArray[i
                                                                              - totalCharSet];

                    int charwidth = font.CharWidth(ch);
                    if (charwidth <= 0)
                    {
                        charwidth = 1;
                    }
                    int charheight = font.GetHeight();
                    if (charheight <= 0)
                    {
                        charheight = font.GetSize();
                    }

                    IntObject newIntObject = new IntObject();

                    newIntObject.width  = charwidth;
                    newIntObject.height = charheight;

                    if (positionX + newIntObject.width >= textureWidth)
                    {
                        g.DrawString(sbr.ToString(), 0, positionY);
                        sbr.Clear();
                        positionX  = 0;
                        positionY += rowHeight;
                        rowHeight  = 0;
                    }

                    newIntObject.storedX = positionX;
                    newIntObject.storedY = positionY;

                    if (newIntObject.height > fontHeight)
                    {
                        fontHeight = newIntObject.height;
                    }

                    if (newIntObject.height > rowHeight)
                    {
                        rowHeight = newIntObject.height;
                    }

                    sbr.Append(ch);

                    positionX += newIntObject.width;

                    if (i < totalCharSet)
                    {
                        charArray[i] = newIntObject;
                    }
                    else
                    {
                        CollectionUtils.Put(customChars, ch, newIntObject);
                    }
                }
                if (sbr.Length > 0)
                {
                    g.DrawString(sbr.ToString(), 0, positionY);
                    sbr = null;
                }
                g.Dispose();
                g = null;

                fontBatch = new LTextureBatch(imgTemp.GetTexture());
            }
            catch (Exception ex)
            {
                Loon.Utils.Debugging.Log.Exception(ex);
            }
        }
Exemple #13
0
        private void Make(LFont font, char[] customCharsArray)
        {
            if (charArray == null)
            {
                charArray = new IntObject[totalCharSet];
            }
            if (customCharsArray != null && customCharsArray.Length > totalCharSet)
            {
                textureWidth *= 2;
            }
            try
            {
                LImage imgTemp = LImage.CreateImage(textureWidth, textureHeight, true);
                LGraphics g = imgTemp.GetLGraphics();
                g.SetFont(font);
                int rowHeight = 0;
                int positionX = 0;
                int positionY = 0;
                int customCharsLength = (customCharsArray != null) ? customCharsArray.Length
                        : 0;
                this.totalCharSet = customCharsLength == 0 ? totalCharSet : 0;
                StringBuilder sbr = new StringBuilder(totalCharSet);
                for (int i = 0; i < totalCharSet + customCharsLength; i++)
                {
                    char ch = (i < totalCharSet) ? (char)i : customCharsArray[i
                            - totalCharSet];

                    int charwidth = font.CharWidth(ch);
                    if (charwidth <= 0)
                    {
                        charwidth = 1;
                    }
                    int charheight = font.GetHeight();
                    if (charheight <= 0)
                    {
                        charheight = font.GetSize();
                    }

                    IntObject newIntObject = new IntObject();

                    newIntObject.width = charwidth;
                    newIntObject.height = charheight;

                    if (positionX + newIntObject.width >= textureWidth)
                    {
                        g.DrawString(sbr.ToString(), 0, positionY);
                        sbr.Clear();
                        positionX = 0;
                        positionY += rowHeight;
                        rowHeight = 0;
                    }

                    newIntObject.storedX = positionX;
                    newIntObject.storedY = positionY;

                    if (newIntObject.height > fontHeight)
                    {
                        fontHeight = newIntObject.height;

                    }

                    if (newIntObject.height > rowHeight)
                    {
                        rowHeight = newIntObject.height;
                    }

                    sbr.Append(ch);

                    positionX += newIntObject.width;

                    if (i < totalCharSet)
                    {
                        charArray[i] = newIntObject;

                    }
                    else
                    {

                        CollectionUtils.Put(customChars, ch, newIntObject);
                    }

                }
                if (sbr.Length > 0)
                {
                    g.DrawString(sbr.ToString(), 0, positionY);
                    sbr = null;
                }
                g.Dispose();
                g = null;

                fontBatch = new LTextureBatch(imgTemp.GetTexture());

            }
            catch (Exception ex)
            {
                Loon.Utils.Debug.Log.Exception(ex);
            }
        }
Exemple #14
0
        protected override void CreateCustomUI(GLEx g, int x, int y, int w, int h)
        {
            if (!visible)
            {
                return;
            }
            if (batch == null)
            {
                return;
            }
            sizeFont = messageFont.GetSize();
            if (sizeFont > 25)
            {
                sizeFont       = messageFont.GetSize();
                doubleSizeFont = sizeFont * 2;
                if (doubleSizeFont == 0)
                {
                    doubleSizeFont = 20;
                }
                messageLeft = (x + doubleSizeFont + sizeFont / 2) + tmpOffset + left
                              + doubleSizeFont;

                batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, GLEx.Device.RasterizerState, null, GLEx.cemera.viewMatrix);

                if (message != null)
                {
                    messageTop = y + doubleSizeFont + top - 10;
                    batch.DrawString(messageFont.Font, message, new Vector2(messageLeft, messageTop), fontColor.Color);
                }
                else
                {
                    messageTop = y + top;
                }
                nTop = messageTop;
                if (selects != null)
                {
                    nLeft = messageLeft - sizeFont / 4;

                    for (int i = 0; i < selects.Length; i++)
                    {
                        nTop    += messageFont.GetHeight();
                        type     = i + 1;
                        isSelect = (type == ((selectFlag > 0) ? selectFlag : 1));
                        if ((buoyage != null) && isSelect)
                        {
                            g.SetAlpha(autoAlpha);
                            g.DrawTexture(buoyage, nLeft,
                                          nTop - (int)(buoyage.GetHeight() / 1.5f));
                            g.SetAlpha(1.0F);
                        }
                        batch.DrawString(messageFont.Font, selects[i], new Vector2(messageLeft, nTop), fontColor.Color);
                        if ((cursor != null) && isSelect)
                        {
                            batch.Draw(cursor.Texture, new Vector2(nLeft, nTop - cursor.GetHeight() / 4), Color.White);
                        }
                    }
                    batch.End();
                }
            }
            else
            {
                doubleSizeFont = (int)(sizeFont * 1.4f * 2);
                if (doubleSizeFont == 0)
                {
                    doubleSizeFont = 20;
                }
                messageLeft = (x + doubleSizeFont + sizeFont / 2) + tmpOffset + left
                              + doubleSizeFont;
                batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);

                if (message != null)
                {
                    messageTop = y + doubleSizeFont + top + (int)(messageFont.GetAscent() * 2) + 10;
                    batch.DrawString(messageFont.Font, message, new Vector2(messageLeft, messageTop), fontColor.Color);
                }
                else
                {
                    messageTop = y + top + (int)(messageFont.GetAscent() * 2) + 10;
                }
                nTop = messageTop;
                if (selects != null)
                {
                    nLeft = messageLeft - sizeFont / 4;

                    for (int i = 0; i < selects.Length; i++)
                    {
                        nTop    += (int)((messageFont.GetHeight() + messageFont.GetAscent()) * 1.2f);
                        type     = i + 1;
                        isSelect = (type == ((selectFlag > 0) ? selectFlag : 1));
                        if ((buoyage != null) && isSelect)
                        {
                            g.SetAlpha(autoAlpha);
                            g.DrawTexture(buoyage, nLeft,
                                          nTop - (int)(buoyage.GetHeight() / 1.5f));
                            g.SetAlpha(1.0F);
                        }
                        batch.DrawString(messageFont.Font, selects[i], new Vector2(messageLeft, nTop), fontColor.Color);
                        if ((cursor != null) && isSelect)
                        {
                            batch.Draw(cursor.Texture, new Vector2(nLeft, (nTop - cursor.GetHeight() / 4)), Color.White);
                        }
                    }
                    batch.End();
                }
            }
        }
Exemple #15
0
 private static string MakeLazyWestKey(LFont font)
 {
     if (lazyKey == null)
     {
         lazyKey = new StringBuilder();
         lazyKey.Append(font.GetFontName().ToLower());
         lazyKey.Append(font.GetStyle());
         lazyKey.Append(font.GetSize());
     }
     else
     {
         lazyKey.Clear();
         lazyKey.Append(font.GetFontName().ToLower());
         lazyKey.Append(font.GetStyle());
         lazyKey.Append(font.GetSize());
     }
     return lazyKey.ToString();
 }
Exemple #16
0
 public static string MakeStringLazyKey(LFont font, string text)
 {
     int hashCode = 0;
     hashCode = LSystem.Unite(hashCode, font.GetSize());
     hashCode = LSystem.Unite(hashCode, font.GetStyle());
     if (lazyKey == null)
     {
         lazyKey = new StringBuilder();
         lazyKey.Append(font.GetFontName().ToLower());
         lazyKey.Append(hashCode);
         lazyKey.Append(split);
         lazyKey.Append(text);
     }
     else
     {
         lazyKey.Clear();
         lazyKey.Append(font.GetFontName().ToLower());
         lazyKey.Append(hashCode);
         lazyKey.Append(split);
         lazyKey.Append(text);
     }
     return lazyKey.ToString();
 }