public void AppendSymbol(Symbol symbol, TextFormatting format = null, DialogFormatting dialogFormat = null) { format = format ?? DefaultFormat; dialogFormat = dialogFormat ?? DefaultDialog; AppendElement(new TextElementSymbol(symbol, format, dialogFormat)); }
public void AppendSpace(int width, TextFormatting format = null, DialogFormatting dialogFormat = null) { format = format ?? DefaultFormat; dialogFormat = dialogFormat ?? DefaultDialog; AppendElement(new TextElementSpace(width, format, dialogFormat)); }
public TextBuilder(float width, float height, TextFormatting defaultFormat = null, DialogFormatting defaultDialog = null) { Root = new TextElementContainer(width, height); ContainerStack.Push(Root); DefaultFormat = defaultFormat ?? new TextFormatting(); DefaultDialog = defaultDialog ?? new DialogFormattingIdentity(); }
public TextElementDynamic(Func <string> value, float width, TextFormatting format, DialogFormatting dialogFormat) { Value = value; Width = width; Format = format; DialogFormat = dialogFormat; }
public TextElementCounter(Func <int> value, int digits, TextFormatting formatFront, TextFormatting formatBack, DialogFormatting dialogFormat) { Value = value; Digits = digits; FormatFront = formatFront; FormatBack = formatBack; DialogFormat = dialogFormat; }
public static void AppendAsKey(this TextBuilder builder, string str, Color color, DialogFormatting dialog = null) { TextFormatting formatting = new TextFormatting() { Bold = true, GetParams = (pos) => new DialogParams() { Color = color, Border = Color.Black, Scale = Vector2.One, } }; builder.AppendText(str, formatting, dialog); }
public void DrawChar(char chr, Vector2 drawpos, TextFormatting format, DialogParams param) { Texture2D tex = Game.FontSprites[chr / FontUtil.CharsPerPage].Texture; int index = chr % FontUtil.CharsPerPage; int offset = FontUtil.GetCharOffset(chr); int width = FontUtil.GetCharWidth(chr); var color = param.Color; var border = param.Border; var charOffset = param.Offset; var charScale = param.Scale; var charAngle = param.Angle; var bold = format.Bold; var scriptOffset = 0; //DrawCharLine(drawpos + charOffset + new Vector2(0, 15), width + 1 + (bold ? 1 : 0), color, border); //DrawCharLine(drawpos + charOffset + new Vector2(0, 2), width + 1 + (bold ? 1 : 0), color, border); var rect = FontUtil.GetCharRect(index); var middle = FontUtil.GetCharMiddle(index); if (border.A > 0) { //Only draw outline if it's actually non-transparent Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset - 1, scriptOffset + 0) + middle, rect, border, charAngle, middle, charScale, SpriteEffects.None, 0); Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset, scriptOffset + 1) + middle, rect, border, charAngle, middle, charScale, SpriteEffects.None, 0); Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset, scriptOffset - 1) + middle, rect, border, charAngle, middle, charScale, SpriteEffects.None, 0); if (bold) { Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset + 2, scriptOffset + 0) + middle, rect, border, charAngle, middle, charScale, SpriteEffects.None, 0); Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset + 1, scriptOffset + 1) + middle, rect, border, charAngle, middle, charScale, SpriteEffects.None, 0); Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset + 1, scriptOffset - 1) + middle, rect, border, charAngle, middle, charScale, SpriteEffects.None, 0); } else { Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset + 1, scriptOffset) + middle, rect, border, charAngle, middle, charScale, SpriteEffects.None, 0); } } Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset, scriptOffset) + middle, rect, color, charAngle, middle, charScale, SpriteEffects.None, 0); if (bold) { Scene.SpriteBatch.Draw(tex, drawpos + charOffset + new Vector2(-offset + 1, scriptOffset) + middle, rect, color, charAngle, middle, charScale, SpriteEffects.None, 0); } //if(charOffset == Vector2.Zero) // DrawCharLine(drawpos + charOffset + new Vector2(-1, 8), width + 2 + (bold ? 1 : 0), color, border); }
public static void AppendDescribe(this TextBuilder builder, Symbol symbol, string str, Color color, DialogFormatting dialog = null) { TextFormatting formatting = new TextFormatting() { Bold = true, GetParams = (pos) => new DialogParams() { Color = color, Border = Color.Black, Scale = Vector2.One, } }; builder.StartNoBreak(); builder.AppendText(str, formatting, dialog); builder.AppendSymbol(symbol, formatting, dialog); builder.EndNoBreak(); }
public void AppendText(string str, TextFormatting format = null, DialogFormatting dialogFormat = null) { format = format ?? DefaultFormat; dialogFormat = dialogFormat ?? DefaultDialog; StringBuilder builder = new StringBuilder(); void pushString() { if (builder.Length > 0) { AppendElement(new TextElementWord(builder.ToString(), format, dialogFormat)); } builder.Clear(); } for (int i = 0; i < str.Length; i++) { char chr = str[i]; switch (chr) { case (' '): pushString(); AppendElement(new TextElementSpace(4, format, dialogFormat)); break; case ('\n'): pushString(); NewLine(); break; default: builder.Append(chr); break; } } pushString(); }
public void DrawChars(IEnumerable <char> chars, float width, float height, TextFormatting format, TextDialog dialog, Matrix transform, TextCursorPosition cursorPos) { float offset = 0; var skew = new Matrix( 1, 0, 0, 0, format.Italic ? -4f / 16 : 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); var skewCenter = Matrix.CreateTranslation(-width / 2, -height / 2, 0) * skew * Matrix.CreateTranslation(width / 2, height / 2, 0); Scene.PushSpriteBatch(transform: skewCenter * transform); DrawAreaDebug(Vector2.Zero, new Vector2(width, height)); foreach (var chr in chars) { var par = format.GetParams(cursorPos + new Vector2(offset, 0)); DrawChar(chr, new Vector2(offset, 0), format, dialog.Transform(par, cursorPos + new Vector2(offset, 0))); cursorPos.AddCharacters(1); offset += format.GetCharWidth(chr) + 1; } Scene.PopSpriteBatch(); }
public TextElementSymbol(Symbol symbol, TextFormatting format, DialogFormatting dialogFormat) { Symbol = symbol; Format = format; DialogFormat = dialogFormat; }
public TextElementSpace(float width, TextFormatting format, DialogFormatting dialogFormat) { Width = width; Format = format; DialogFormat = dialogFormat; }
public TextElementWord(string text, TextFormatting format, DialogFormatting dialogFormat) { Text = text; Format = format; DialogFormat = dialogFormat; }
public TextElementIcon(IDrawableIcon icon, TextFormatting format, DialogFormatting dialogFormat) { Icon = icon; Format = format; DialogFormat = dialogFormat; }
public static void AppendSymbol(this TextBuilder builder, Symbol symbol, TextFormatting format = null, DialogFormatting dialogFormat = null) { builder.AppendSymbol(symbol, format, dialogFormat); }
public static void AppendText(this TextBuilder builder, string str, TextFormatting format = null, DialogFormatting dialogFormat = null) { builder.AppendText(str, format, dialogFormat); }