public DialogParams Transform(DialogParams par, TextCursorPosition pos) { par = TransformShow(par, pos, ShowSlider.GetSlide(pos)); par = TransformHighlight(par, pos, HighlightSlider.GetSlide(pos)); par = TransformHide(par, pos, HideSlider.GetSlide(pos)); return(par); }
public DialogParams(DialogParams param) { Color = param.Color; Border = param.Border; Offset = param.Offset; Scale = param.Scale; Angle = param.Angle; }
private static DialogParams TransformHide(DialogParams param, TextCursorPosition pos, float slide) { if (slide >= 1) { param.Color = Color.Transparent; param.Border = Color.Transparent; } return(param); }
private static DialogParams Transform(DialogParams param, TextCursorPosition pos, float slide) { if (slide <= 0) { param.Color = Color.Transparent; param.Border = Color.Transparent; } param.Scale = Vector2.Lerp(new Vector2(3, 3), Vector2.One, slide); return(param); }
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); }
private static DialogParams Transform(DialogParams param, TextCursorPosition pos, float slide) { if (slide <= 0) { param.Color = Color.Transparent; param.Border = Color.Transparent; } else { float angle = Util.RandomNoise(pos.GlobalCharacter) * MathHelper.TwoPi; param.Offset = Vector2.Lerp(Util.AngleToVector(angle) * 20, Vector2.Zero, MathHelper.Clamp(slide * 2, 0, 1)); param.Scale = Vector2.Lerp(new Vector2(3, 3), Vector2.One, MathHelper.Clamp(slide * 2, 0, 1)); param.Border = Color.Lerp(Color.Orange.RotateHue(pos.GlobalCharacter / 20f), Color.Black, slide); } return(param); }
private DialogParams TransformShow(DialogParams param, TextCursorPosition pos, float slide) { if (slide <= 0) { //param.Color = Color.Transparent; //param.Border = Color.Transparent; } else { float angle = Util.RandomNoise(pos.GlobalCharacter) * MathHelper.TwoPi; //param.Offset = Vector2.Lerp(Util.AngleToVector(angle) * 20, Vector2.Zero, MathHelper.Clamp(slide * 2, 0, 1)); //param.Scale = Vector2.Lerp(new Vector2(3, 3), Vector2.One, MathHelper.Clamp(slide * 2, 0, 1)); var colorSlide = (float)LerpHelper.ForwardReverse(1, 0, slide); param.Border = Color.Lerp(Color.Gold, Color.Black, colorSlide); } param.Offset = Vector2.Lerp(-pos.Position, Vector2.Zero, (float)LerpHelper.QuadraticOut(0, 1, AppearSlide.Slide)); return(param); }
public override void DrawIcon(Scene scene, Vector2 pos, DialogParams parameters, float slide) { int amount = (int)Math.Round(slide * Sprite.Height); if (amount < 0) { amount = 0; } if (amount > Sprite.Height) { amount = Sprite.Height; } if (amount <= 0 && slide > 0) { amount = 1; } scene.SpriteBatch.Draw(Sprite.Texture, pos, new Rectangle(Sprite.Width * 1, 0, Sprite.Width, Sprite.Height), Color.White); scene.SpriteBatch.Draw(Sprite.Texture, pos + new Vector2(0, Sprite.Height - amount), new Rectangle(Sprite.Width * 0, Sprite.Height - amount, Sprite.Width, amount), Color.White); }
public static DialogParams TransformIdentity(DialogParams param, TextCursorPosition pos, float slide) => param;
public override void DrawIcon(Scene scene, Vector2 pos, DialogParams parameters, float slide) { scene.DrawSpriteExt(Sprite, 0, pos, Sprite.Middle, 0, Vector2.One, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, parameters.Color, 0); }
public virtual void DrawIcon(Scene scene, Vector2 pos, DialogParams parameters, float slide) { scene.DrawSprite(Sprite, 0, pos, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, 0); }