mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-12-26 02:09:24 +01:00
39 lines
No EOL
1.5 KiB
C#
39 lines
No EOL
1.5 KiB
C#
using System;
|
|
using System.Text.RegularExpressions;
|
|
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
using MLEM.Font;
|
|
|
|
namespace MLEM.Formatting.Codes {
|
|
/// <inheritdoc />
|
|
public class WobblyCode : AnimatedCode {
|
|
|
|
private readonly float modifier;
|
|
private readonly float heightModifier;
|
|
/// <summary>
|
|
/// The time that this wobbly animation has been running for.
|
|
/// To reset its animation progress, reset this value.
|
|
/// </summary>
|
|
public TimeSpan TimeIntoAnimation;
|
|
|
|
/// <inheritdoc />
|
|
public WobblyCode(Match match, Regex regex, float modifier, float heightModifier) : base(match, regex) {
|
|
this.modifier = modifier;
|
|
this.heightModifier = heightModifier;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override void Update(GameTime time) {
|
|
this.TimeIntoAnimation += time.ElapsedGameTime;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override bool DrawCharacter(GameTime time, SpriteBatch batch, char c, string cString, int indexInToken, ref Vector2 pos, GenericFont font, ref Color color, ref float scale, float depth) {
|
|
var offset = new Vector2(0, (float) Math.Sin(this.Token.Index + indexInToken + this.TimeIntoAnimation.TotalSeconds * this.modifier) * font.LineHeight * this.heightModifier * scale);
|
|
pos += offset;
|
|
// we return false since we still want regular drawing to occur, we just changed the position
|
|
return false;
|
|
}
|
|
|
|
}
|
|
} |