BizHawk/BizHawk.MultiClient/config/MessageConfig.cs

649 lines
17 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BizHawk.MultiClient
{
public partial class MessageConfig : Form
{
int DispFPSx = Global.Config.DispFPSx;
int DispFPSy = Global.Config.DispFPSy;
int DispFrameCx = Global.Config.DispFrameCx;
int DispFrameCy = Global.Config.DispFrameCy;
int DispLagx = Global.Config.DispLagx;
int DispLagy = Global.Config.DispLagy;
int DispInpx = Global.Config.DispInpx;
int DispInpy = Global.Config.DispInpy;
2011-07-01 02:00:11 +00:00
int DispRerecx = Global.Config.DispRecx;
int DispRerecy = Global.Config.DispRecy;
int LastInputColor = Global.Config.LastInputColor;
int DispRecx = Global.Config.DispRecx;
int DispRecy = Global.Config.DispRecy;
int DispMultix = Global.Config.DispMultix;
int DispMultiy = Global.Config.DispMultiy;
int DispMessagex = Global.Config.DispMessagex;
int DispMessagey = Global.Config.DispMessagey;
2012-09-26 23:25:43 +00:00
int DispAutoholdx = Global.Config.DispAutoholdx;
int DispAutoholdy = Global.Config.DispAutoholdy;
int MessageColor = Global.Config.MessagesColor;
int AlertColor = Global.Config.AlertMessageColor;
2011-07-10 03:13:07 +00:00
int MovieInput = Global.Config.MovieInput;
int DispFPSanchor = Global.Config.DispFPSanchor;
int DispFrameanchor = Global.Config.DispFrameanchor;
int DispLaganchor = Global.Config.DispLaganchor;
int DispInputanchor = Global.Config.DispInpanchor;
int DispRecanchor = Global.Config.DispRecanchor;
int DispMultiAnchor = Global.Config.DispMultianchor;
int DispMessageAnchor = Global.Config.DispMessageanchor;
2012-09-26 23:25:43 +00:00
int DispAutoholdAnchor = Global.Config.DispAutoholdanchor;
public Brush brush = Brushes.Black;
int px = 0;
int py = 0;
bool mousedown = false;
public MessageConfig()
{
InitializeComponent();
}
private void MessageConfig_Load(object sender, EventArgs e)
{
SetMaxXY();
MessageColorDialog.Color = Color.FromArgb(MessageColor);
AlertColorDialog.Color = Color.FromArgb(AlertColor);
LInputColorDialog.Color = Color.FromArgb(LastInputColor);
2011-07-10 03:13:07 +00:00
MovieInputColorDialog.Color = Color.FromArgb(MovieInput);
SetColorBox();
SetPositionInfo();
StackMessagesCheckbox.Checked = Global.Config.StackOSDMessages;
}
private void SetMaxXY()
{
XNumeric.Maximum = Global.Emulator.VideoProvider.BufferWidth - 12;
YNumeric.Maximum = Global.Emulator.VideoProvider.BufferHeight - 12;
PositionPanel.Size = new Size(Global.Emulator.VideoProvider.BufferWidth + 2, Global.Emulator.VideoProvider.BufferHeight + 2);
int width;
if (Global.Emulator.VideoProvider.BufferWidth > 128)
width = Global.Emulator.VideoProvider.BufferWidth + 44;
else
width = 128 + 44;
PositionGroupBox.Size = new Size(width, Global.Emulator.VideoProvider.BufferHeight + 52);
}
private void SetColorBox()
{
MessageColor = MessageColorDialog.Color.ToArgb();
ColorPanel.BackColor = MessageColorDialog.Color;
ColorText.Text = String.Format("{0:X8}", MessageColor);
AlertColor = AlertColorDialog.Color.ToArgb();
AlertColorPanel.BackColor = AlertColorDialog.Color;
AlertColorText.Text = String.Format("{0:X8}", AlertColor);
LastInputColor = LInputColorDialog.Color.ToArgb();
LInputColorPanel.BackColor = LInputColorDialog.Color;
LInputText.Text = String.Format("{0:X8}", LastInputColor);
2011-07-10 03:13:07 +00:00
MovieInput = MovieInputColorDialog.Color.ToArgb();
MovieInputColor.BackColor = MovieInputColorDialog.Color;
MovieInputText.Text = String.Format("{0:X8}", MovieInput);
}
private void SetAnchorRadio(int anchor)
{
switch (anchor)
{
default:
case 0:
TL.Checked = true; break;
case 1:
TR.Checked = true; break;
case 2:
BL.Checked = true; break;
case 3:
BR.Checked = true; break;
}
}
private void SetPositionInfo()
{
if (FPSRadio.Checked)
{
XNumeric.Value = DispFPSx;
YNumeric.Value = DispFPSy;
px = DispFPSx;
py = DispFPSy;
SetAnchorRadio(DispFPSanchor);
}
else if (FrameCounterRadio.Checked)
{
XNumeric.Value = DispFrameCx;
YNumeric.Value = DispFrameCy;
px = DispFrameCx;
py = DispFrameCy;
SetAnchorRadio(DispFrameanchor);
}
else if (LagCounterRadio.Checked)
{
XNumeric.Value = DispLagx;
YNumeric.Value = DispLagy;
px = DispLagx;
py = DispLagy;
SetAnchorRadio(DispLaganchor);
}
else if (InputDisplayRadio.Checked)
{
XNumeric.Value = DispInpx;
XNumeric.Value = DispInpy;
px = DispInpx;
py = DispInpy;
SetAnchorRadio(DispInputanchor);
}
else if (MessagesRadio.Checked)
{
XNumeric.Value = DispMessagex;
YNumeric.Value = DispMessagey;
px = DispMessagex;
py = DispMessagey;
SetAnchorRadio(DispMessageAnchor);
}
2011-07-01 02:00:11 +00:00
else if (RerecordsRadio.Checked)
{
XNumeric.Value = DispRecx;
YNumeric.Value = DispRecy;
px = DispRecx;
py = DispRecy;
SetAnchorRadio(DispRecanchor);
}
else if (MultitrackRadio.Checked)
{
XNumeric.Value = DispMultix;
YNumeric.Value = DispMultiy;
px = DispMultix;
py = DispMultiy;
SetAnchorRadio(DispMultiAnchor);
}
2012-09-26 23:25:43 +00:00
else if (AutoholdRadio.Checked)
{
XNumeric.Value = DispAutoholdx;
YNumeric.Value = DispAutoholdy;
px = DispAutoholdx;
py = DispAutoholdy;
SetAnchorRadio(DispAutoholdAnchor);
}
PositionPanel.Refresh();
XNumeric.Refresh();
YNumeric.Refresh();
SetPositionLabels();
}
private void SaveSettings()
{
Global.Config.DispFPSx = DispFPSx;
Global.Config.DispFPSy = DispFPSy;
Global.Config.DispFrameCx = DispFrameCx;
Global.Config.DispFrameCy = DispFrameCy;
Global.Config.DispLagx = DispLagx;
Global.Config.DispLagy = DispLagy;
Global.Config.DispInpx = DispInpx;
Global.Config.DispInpy = DispInpy;
2011-07-01 02:00:11 +00:00
Global.Config.DispRecx = DispRecx;
Global.Config.DispRecy = DispRecy;
Global.Config.DispMultix = DispMultix;
Global.Config.DispMultiy = DispMultiy;
Global.Config.DispMessagex = DispMessagex;
Global.Config.DispMessagey = DispMessagey;
2012-09-26 23:25:43 +00:00
Global.Config.DispAutoholdx = DispAutoholdx;
Global.Config.DispAutoholdy = DispAutoholdy;
Global.Config.MessagesColor = MessageColor;
Global.Config.AlertMessageColor = AlertColor;
Global.Config.LastInputColor = LastInputColor;
2011-07-10 03:13:07 +00:00
Global.Config.MovieInput = MovieInput;
Global.Config.DispFPSanchor = DispFPSanchor;
Global.Config.DispFrameanchor = DispFrameanchor;
Global.Config.DispLaganchor = DispLaganchor;
Global.Config.DispInpanchor = DispInputanchor;
Global.Config.DispRecanchor = DispRecanchor;
Global.Config.DispMultianchor = DispMultiAnchor;
Global.Config.DispMessageanchor = DispMessageAnchor;
2012-09-26 23:25:43 +00:00
Global.Config.DispAutoholdanchor = DispAutoholdAnchor;
Global.Config.StackOSDMessages = StackMessagesCheckbox.Checked;
}
private void OK_Click(object sender, EventArgs e)
{
SaveSettings();
Global.OSD.AddMessage("Message settings saved");
this.Close();
}
private void FPSRadio_CheckedChanged(object sender, EventArgs e)
{
SetPositionInfo();
}
private void FrameCounterRadio_CheckedChanged(object sender, EventArgs e)
{
SetPositionInfo();
}
private void LagCounterRadio_CheckedChanged(object sender, EventArgs e)
{
SetPositionInfo();
}
private void InputDisplayRadio_CheckedChanged(object sender, EventArgs e)
{
SetPositionInfo();
}
private void MessagesRadio_CheckedChanged(object sender, EventArgs e)
{
SetPositionInfo();
}
2011-07-01 02:00:11 +00:00
private void RerecordsRadio_CheckedChanged(object sender, EventArgs e)
{
SetPositionInfo();
}
private void MultitrackRadio_CheckedChanged(object sender, EventArgs e)
{
SetPositionInfo();
}
2012-09-26 23:25:43 +00:00
private void AutoholdRadio_CheckedChanged(object sender, EventArgs e)
{
SetPositionInfo();
}
private void XNumericChange()
{
px = (int)XNumeric.Value;
SetPositionLabels();
PositionPanel.Refresh();
}
private void YNumericChange()
{
py = (int)YNumeric.Value;
SetPositionLabels();
PositionPanel.Refresh();
}
private void Cancel_Click(object sender, EventArgs e)
{
Global.OSD.AddMessage("Message config aborted");
this.Close();
}
private void PositionPanel_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
}
private void PositionPanel_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
private void PositionPanel_Paint(object sender, PaintEventArgs e)
{
int x = 0;
int y = 0;
if (TL.Checked)
{
x = px;
y = py;
}
else if (TR.Checked)
{
x = (int)XNumeric.Maximum - px;
y = py;
}
else if (BL.Checked)
{
x = px;
y = (int)YNumeric.Maximum - py;
}
else if (BR.Checked)
{
x = (int)XNumeric.Maximum - px;
y = (int)YNumeric.Maximum - py;
}
Pen p = new Pen(brush);
e.Graphics.DrawLine(p, new Point(x, y), new Point(x + 8, y + 8));
e.Graphics.DrawLine(p, new Point(x + 8, y), new Point(x, y + 8));
Rectangle rect = new Rectangle(x, y, 8, 8);
2012-09-25 04:11:54 +00:00
e.Graphics.DrawRectangle(p, rect);
}
private void PositionPanel_MouseDown(object sender, MouseEventArgs e)
{
this.Cursor = Cursors.Arrow;
mousedown = true;
SetNewPosition(e.X, e.Y);
}
private void PositionPanel_MouseUp(object sender, MouseEventArgs e)
{
this.Cursor = Cursors.Hand;
mousedown = false;
}
private void SetNewPosition(int mx, int my)
{
if (mx < 0) mx = 0;
if (my < 0) my = 0;
if (mx > XNumeric.Maximum) mx = (int)XNumeric.Maximum;
if (my > YNumeric.Maximum) my = (int)YNumeric.Maximum;
if (TL.Checked)
{
//Do nothing
}
else if (TR.Checked)
{
mx = (int)XNumeric.Maximum - mx;
}
else if (BL.Checked)
{
my = (int)YNumeric.Maximum - my;
}
else if (BR.Checked)
{
mx = (int)XNumeric.Maximum - mx;
my = (int)YNumeric.Maximum - my;
}
XNumeric.Value = mx;
YNumeric.Value = my;
px = mx;
py = my;
PositionPanel.Refresh();
SetPositionLabels();
}
private void PositionPanel_MouseMove(object sender, MouseEventArgs e)
{
if (mousedown)
{
SetNewPosition(e.X, e.Y);
}
}
private void SetPositionLabels()
{
if (FPSRadio.Checked)
{
DispFPSx = px;
DispFPSy = py;
}
else if (FrameCounterRadio.Checked)
{
DispFrameCx = px;
DispFrameCy = py;
}
else if (LagCounterRadio.Checked)
{
DispLagx = px;
DispLagy = py;
}
else if (InputDisplayRadio.Checked)
{
DispInpx = px;
DispInpy = py;
}
2011-07-01 02:00:11 +00:00
else if (RerecordsRadio.Checked)
{
DispRecx = px;
DispRecy = py;
}
else if (MultitrackRadio.Checked)
{
DispMultix = px;
DispMultiy = py;
}
else if (MessagesRadio.Checked)
{
DispMessagex = px;
DispMessagey = py;
}
2012-09-26 23:25:43 +00:00
else if (AutoholdRadio.Checked)
{
DispAutoholdx = px;
DispAutoholdy = py;
}
FpsPosLabel.Text = DispFPSx.ToString() + ", " + DispFPSy.ToString();
FCLabel.Text = DispFrameCx.ToString() + ", " + DispFrameCy.ToString();
LagLabel.Text = DispLagx.ToString() + ", " + DispLagy.ToString();
InpLabel.Text = DispInpx.ToString() + ", " + DispInpy.ToString();
2011-07-01 02:00:11 +00:00
RerecLabel.Text = DispRecx.ToString() + ", " + DispRecy.ToString();
MultitrackLabel.Text = DispMultix.ToString() + ", " + DispMultiy.ToString();
MessLabel.Text = DispMessagex.ToString() + ", " + DispMessagey.ToString();
2012-09-26 23:25:43 +00:00
AutoholdLabel.Text = DispAutoholdx.ToString() + ", " + DispAutoholdy.ToString();
}
private void ResetDefaultsButton_Click(object sender, EventArgs e)
{
Global.Config.DispFPSx = 0;
Global.Config.DispFPSy = 0;
Global.Config.DispFrameCx = 0;
Global.Config.DispFrameCy = 12;
Global.Config.DispLagx = 0;
Global.Config.DispLagy = 36;
Global.Config.DispInpx = 0;
Global.Config.DispInpy = 24;
2011-07-01 02:00:11 +00:00
Global.Config.DispRecx = 0;
Global.Config.DispRecy = 48;
Global.Config.DispMultix = 36;
Global.Config.DispMultiy = 0;
Global.Config.DispMessagex = 3;
Global.Config.DispMessagey = 0;
2012-09-26 23:25:43 +00:00
Global.Config.DispAutoholdx = 0;
Global.Config.DispAutoholdy = 0;
Global.Config.MessagesColor = -1;
Global.Config.AlertMessageColor = -65536;
Global.Config.LastInputColor = -23296;
2011-07-10 03:13:07 +00:00
Global.Config.MovieInput = -8355712;
MessageColor = Global.Config.MessagesColor;
AlertColor = Global.Config.AlertMessageColor;
LastInputColor = Global.Config.LastInputColor;
MovieInput = Global.Config.MovieInput;
MessageColorDialog.Color = Color.FromArgb(MessageColor);
AlertColorDialog.Color = Color.FromArgb(AlertColor);
LInputColorDialog.Color = Color.FromArgb(LastInputColor);
MovieInputColorDialog.Color = Color.FromArgb(MovieInput);
Global.Config.DispFPSanchor = 0;
Global.Config.DispFrameanchor = 0;
Global.Config.DispLaganchor = 0;
Global.Config.DispInpanchor = 0;
Global.Config.DispRecanchor = 0;
Global.Config.DispMultianchor = 0;
Global.Config.DispMessageanchor = 2;
2012-09-26 23:25:43 +00:00
Global.Config.DispAutoholdanchor = 1;
2011-07-10 03:13:07 +00:00
DispFPSx = Global.Config.DispFPSx;
DispFPSy = Global.Config.DispFPSy;
DispFrameCx = Global.Config.DispFrameCx;
DispFrameCy = Global.Config.DispFrameCy;
DispLagx = Global.Config.DispLagx;
DispLagy = Global.Config.DispLagy;
DispInpx = Global.Config.DispInpx;
DispInpy = Global.Config.DispInpy;
2011-07-01 02:00:11 +00:00
DispRecx = Global.Config.DispRecx;
DispRecy = Global.Config.DispRecy;
DispMultix = Global.Config.DispMultix;
DispMultiy = Global.Config.DispMultiy;
DispMessagex = Global.Config.DispMessagex;
DispMessagey = Global.Config.DispMessagey;
2012-09-26 23:25:43 +00:00
DispAutoholdx = Global.Config.DispAutoholdx;
DispAutoholdy = Global.Config.DispAutoholdy;
2011-07-01 02:00:11 +00:00
DispFPSanchor = Global.Config.DispFPSanchor;
DispFrameanchor = Global.Config.DispFrameanchor;
DispLaganchor = Global.Config.DispLaganchor;
DispInputanchor = Global.Config.DispInpanchor;
DispRecanchor = Global.Config.DispRecanchor;
DispMultiAnchor = Global.Config.DispMultianchor;
DispMessageAnchor = Global.Config.DispMessageanchor;
2012-09-26 23:25:43 +00:00
DispAutoholdAnchor = Global.Config.DispAutoholdanchor;
SetMaxXY();
SetColorBox();
SetPositionInfo();
StackMessagesCheckbox.Checked = Global.Config.StackOSDMessages = true;
}
private void SetAnchorValue(int value)
{
if (FPSRadio.Checked)
{
DispFPSanchor = value;
}
else if (FrameCounterRadio.Checked)
{
DispFrameanchor = value;
}
else if (LagCounterRadio.Checked)
{
DispLaganchor = value;
}
else if (InputDisplayRadio.Checked)
{
DispInputanchor = value;
}
else if (MessagesRadio.Checked)
{
DispMessageAnchor = value;
}
else if (RerecordsRadio.Checked)
{
DispRecanchor = value;
}
else if (MultitrackRadio.Checked)
{
DispMultiAnchor = value;
}
2012-09-26 23:25:43 +00:00
else if (AutoholdRadio.Checked)
{
DispAutoholdAnchor = value;
}
}
private void TL_CheckedChanged(object sender, EventArgs e)
{
if (TL.Checked)
{
SetAnchorValue(0);
}
PositionPanel.Refresh();
}
private void TR_CheckedChanged(object sender, EventArgs e)
{
if (TR.Checked)
{
SetAnchorValue(1);
}
PositionPanel.Refresh();
}
private void BL_CheckedChanged(object sender, EventArgs e)
{
if (BL.Checked)
{
SetAnchorValue(2);
}
PositionPanel.Refresh();
}
private void BR_CheckedChanged(object sender, EventArgs e)
{
if (BR.Checked)
{
SetAnchorValue(3);
}
PositionPanel.Refresh();
}
private void XNumeric_Click(object sender, EventArgs e)
{
XNumericChange();
}
private void YNumeric_Click(object sender, EventArgs e)
{
YNumericChange();
}
private void ColorPanel_Click(object sender, EventArgs e)
{
if (MessageColorDialog.ShowDialog() == DialogResult.OK)
{
SetColorBox();
}
}
private void AlertColorPanel_Click(object sender, EventArgs e)
{
if (AlertColorDialog.ShowDialog() == DialogResult.OK)
{
SetColorBox();
}
}
private void LInputColorPanel_Click(object sender, EventArgs e)
{
if (LInputColorDialog.ShowDialog() == DialogResult.OK)
{
SetColorBox();
}
}
private void MovieInputColor_Click(object sender, EventArgs e)
2011-07-10 03:13:07 +00:00
{
if (MovieInputColorDialog.ShowDialog() == DialogResult.OK)
{
SetColorBox();
}
2011-07-10 03:13:07 +00:00
}
private void XNumeric_KeyUp(object sender, KeyEventArgs e)
{
XNumericChange();
}
private void YNumeric_KeyUp(object sender, KeyEventArgs e)
{
YNumericChange();
}
}
}