simplify onscreen message drawing logic, fix MessageConfig dialog result when Ok is pressed
This commit is contained in:
parent
f5f22e78d8
commit
7cfbd1cead
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue