public override void Draw(GameTime gameTime)
{
WithZoom(zoom, (b) =>
{
base.Draw(gameTime);
_inputChat.Draw(gameTime);
// Stop drawing
if (ChatLines.Count <= 0)
{
SpriteBatch.End();
return;
}
int count = 0;
_chatLinesFont.Position = _initialLinePos;
// Go to every line
foreach (ChatMessage line in ChatLines)
{
_chatLinesFont.Text = line.Text;
_chatLinesFont.Color = line.Color;
if (count > 0) // Passed the first
{
_chatLinesFont.Alpha = 1.0F;
_chatLinesFont.Position = Positioner.GetSideBy(_chatLinesFont.BoundingBox, _chatLinesFont.BoundingBox, Positioner.SideFrom.Top);
}
else if (count == 0) // The last, the most recent message
{
// Checks do animation again
if (doAnimation)
{
_lastMessage = _lastMessage.Transformer(0.0F, 1.0F, 250, gameTime, (t) => _chatLinesFont.Alpha = t.CurrentValue);
// If last message animation is done, reset and restart
if (_lastMessage.Done)
{
_lastMessage = null;
doAnimation = false;
}
}
}
_chatLinesFont.Draw(gameTime);
count++;
}
SpriteBatch.End();
});
}