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); } }
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); }
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); } }
public void SetFont(LFont deffont) { if (deffont == null) { return; } this.deffont = deffont; this.fontSize = deffont.GetSize(); }
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); }
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()); }
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); } }
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()); }
public void SetFont(LFont font) { this.m_fontsize = font.GetSize(); }
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; } } } }
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); } }
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); } }
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(); } } }
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(); }
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(); }