simplify onscreen message drawing logic, fix MessageConfig dialog result when Ok is pressed

This commit is contained in:
adelikat 2019-12-21 15:48:50 -06:00
parent f5f22e78d8
commit 7cfbd1cead
2 changed files with 33 additions and 41 deletions

View File

@ -24,18 +24,18 @@ namespace BizHawk.Client.EmuHawk
Rectangle ClipBounds { get; set; } Rectangle ClipBounds { get; set; }
} }
class UIMessage public class UIMessage
{ {
public string Message; public string Message { get; set; }
public DateTime ExpireAt; public DateTime ExpireAt { get; set; }
} }
class UIDisplay public class UIDisplay
{ {
public string Message; public string Message { get; set; }
public MessagePosition Position; public MessagePosition Position { get; set; }
public Color ForeColor; public Color ForeColor { get; set; }
public Color BackGround; public Color BackGround { get; set; }
} }
public class OSDManager public class OSDManager
@ -122,6 +122,13 @@ namespace BizHawk.Client.EmuHawk
_guiTextList.Clear(); _guiTextList.Clear();
} }
private void DrawMessage(IBlitter g, UIMessage message, int yOffset)
{
var point = GetCoordinates(g, Global.Config.Messages, message.Message);
var y = point.Y + yOffset; // TODO: clean me up
g.DrawString(message.Message, MessageFont, FixedMessagesColor, point.X, y);
}
public void DrawMessages(IBlitter g) public void DrawMessages(IBlitter g)
{ {
if (!Global.Config.DisplayMessages) if (!Global.Config.DisplayMessages)
@ -130,42 +137,27 @@ namespace BizHawk.Client.EmuHawk
} }
_messages.RemoveAll(m => DateTime.Now > m.ExpireAt); _messages.RemoveAll(m => DateTime.Now > m.ExpireAt);
int line = 1;
if (Global.Config.StackOSDMessages)
{
for (int i = _messages.Count - 1; i >= 0; i--, line++)
{
var point = GetCoordinates(g, Global.Config.Messages, _messages[i].Message);
var y = point.Y; // TODO: clean me up
if (Global.Config.Messages.Anchor.IsTop())
{
y += (line - 1) * 18;
}
else
{
y -= (line - 1) * 18;
}
g.DrawString(_messages[i].Message, MessageFont, FixedMessagesColor, point.X, y);
}
}
else
{
if (_messages.Any()) if (_messages.Any())
{ {
var message = _messages.Last(); if (Global.Config.StackOSDMessages)
var point = GetCoordinates(g, Global.Config.Messages, message.Message);
var y = point.Y;
if (Global.Config.Messages.Anchor.IsTop())
{ {
y += (line - 1) * 18; int line = 1;
for (int i = _messages.Count - 1; i >= 0; i--, line++)
{
int yOffset = (line - 1) * 18;
if (!Global.Config.Messages.Anchor.IsTop())
{
yOffset = 0 - yOffset;
}
DrawMessage(g, _messages[i], yOffset);
}
} }
else else
{ {
y -= (line - 1) * 18; var message = _messages.Last();
} DrawMessage(g, message, 0);
g.DrawString(message.Message, MessageFont, FixedMessagesColor, point.X, y);
} }
} }

View File

@ -188,7 +188,7 @@ namespace BizHawk.Client.EmuHawk
_config.MovieInput = _movieInput; _config.MovieInput = _movieInput;
_config.StackOSDMessages = StackMessagesCheckbox.Checked; _config.StackOSDMessages = StackMessagesCheckbox.Checked;
DialogResult = DialogResult.OK;
Close(); Close();
} }