public override SKSurface Draw(GameState currentState, long frame) { Clear(); if (IsEnabled()) { var logFrameRect = SKRect.Create(SKPoint.Empty, Size.AsSKSize()); Canvas.DrawRoundRect(logFrameRect, 15, 20, Styles.LogBorder); logFrameRect.Inflate(-2, -2); Canvas.DrawRoundRect(logFrameRect, 15, 20, Styles.LogFill); Canvas.DrawText(CurrentMessage.MessageText, new SKPoint(Size.Width / 2, 6 + Size.Height / 2), Styles.LargeTextPaintCentered); CurrentMessage.Duration -= 1; if (CurrentMessage.Duration <= 0) { CurrentMessage = null; if (Queue.Count > 0) { CurrentMessage = Queue.Dequeue(); } } } else { Surface.Canvas.Clear(); } return(Surface); }