diff --git a/BizHawk.MultiClient/Config.cs b/BizHawk.MultiClient/Config.cs index de517e7272..522ebcdd35 100644 --- a/BizHawk.MultiClient/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -156,6 +156,7 @@ namespace BizHawk.MultiClient public string FFMpegPath = "%exe%/ffmpeg.exe"; // General Client Settings + public bool StackOSDMessages = true; public int TargetZoomFactor = 2; public int TargetDisplayFilter = 0; public bool AutoLoadMostRecentRom = false; diff --git a/BizHawk.MultiClient/DisplayManager/DisplayManager.cs b/BizHawk.MultiClient/DisplayManager/DisplayManager.cs index 2d0ce62abe..ba662d5bae 100644 --- a/BizHawk.MultiClient/DisplayManager/DisplayManager.cs +++ b/BizHawk.MultiClient/DisplayManager/DisplayManager.cs @@ -388,22 +388,45 @@ namespace BizHawk.MultiClient { messages.RemoveAll(m => DateTime.Now > m.ExpireAt); int line = 1; - for (int i = messages.Count - 1; i >= 0; i--, line++) + if (Global.Config.StackOSDMessages) { - float x = GetX(g, Global.Config.DispMessagex, Global.Config.DispMessageanchor, MessageFont, messages[i].Message); - float y = GetY(g, Global.Config.DispMessagey, Global.Config.DispMessageanchor, MessageFont, messages[i].Message); - if (Global.Config.DispMessageanchor < 2) + for (int i = messages.Count - 1; i >= 0; i--, line++) { - y += ((line - 1) * 18); + float x = GetX(g, Global.Config.DispMessagex, Global.Config.DispMessageanchor, MessageFont, messages[i].Message); + float y = GetY(g, Global.Config.DispMessagey, Global.Config.DispMessageanchor, MessageFont, messages[i].Message); + if (Global.Config.DispMessageanchor < 2) + { + y += ((line - 1) * 18); + } + else + { + y -= ((line - 1) * 18); + } + g.DrawString(messages[i].Message, MessageFont, Color.Black, x + 2, y + 2); + g.DrawString(messages[i].Message, MessageFont, FixedMessagesColor, x, y); } - else - { - y -= ((line -1) * 18); - } - g.DrawString(messages[i].Message, MessageFont, Color.Black, x + 2, y + 2); - g.DrawString(messages[i].Message, MessageFont, FixedMessagesColor, x, y); } - + else + { + if (messages.Count > 0) + { + int i = messages.Count - 1; + + float x = GetX(g, Global.Config.DispMessagex, Global.Config.DispMessageanchor, MessageFont, messages[i].Message); + float y = GetY(g, Global.Config.DispMessagey, Global.Config.DispMessageanchor, MessageFont, messages[i].Message); + if (Global.Config.DispMessageanchor < 2) + { + y += ((line - 1) * 18); + } + else + { + y -= ((line - 1) * 18); + } + g.DrawString(messages[i].Message, MessageFont, Color.Black, x + 2, y + 2); + g.DrawString(messages[i].Message, MessageFont, FixedMessagesColor, x, y); + } + } + for (int x = 0; x < GUITextList.Count; x++) { try diff --git a/BizHawk.MultiClient/config/MessageConfig.Designer.cs b/BizHawk.MultiClient/config/MessageConfig.Designer.cs index 7e0ca00048..8f2c05d53f 100644 --- a/BizHawk.MultiClient/config/MessageConfig.Designer.cs +++ b/BizHawk.MultiClient/config/MessageConfig.Designer.cs @@ -77,6 +77,7 @@ this.AlertColorDialog = new System.Windows.Forms.ColorDialog(); this.LInputColorDialog = new System.Windows.Forms.ColorDialog(); this.MovieInputColorDialog = new System.Windows.Forms.ColorDialog(); + this.StackMessagesCheckbox = new System.Windows.Forms.CheckBox(); this.MessageTypeBox.SuspendLayout(); this.groupBox2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.XNumeric)).BeginInit(); @@ -617,6 +618,16 @@ // this.MovieInputColorDialog.FullOpen = true; // + // StackMessagesCheckbox + // + this.StackMessagesCheckbox.AutoSize = true; + this.StackMessagesCheckbox.Location = new System.Drawing.Point(195, 411); + this.StackMessagesCheckbox.Name = "StackMessagesCheckbox"; + this.StackMessagesCheckbox.Size = new System.Drawing.Size(105, 17); + this.StackMessagesCheckbox.TabIndex = 7; + this.StackMessagesCheckbox.Text = "Stack Messages"; + this.StackMessagesCheckbox.UseVisualStyleBackColor = true; + // // MessageConfig // this.AcceptButton = this.OK; @@ -624,6 +635,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.Cancel; this.ClientSize = new System.Drawing.Size(612, 469); + this.Controls.Add(this.StackMessagesCheckbox); this.Controls.Add(this.ResetDefaultsButton); this.Controls.Add(this.Cancel); this.Controls.Add(this.groupBox2); @@ -645,6 +657,7 @@ this.PositionGroupBox.ResumeLayout(false); this.PositionGroupBox.PerformLayout(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -699,5 +712,6 @@ private System.Windows.Forms.ColorDialog MovieInputColorDialog; private System.Windows.Forms.Label MultitrackLabel; private System.Windows.Forms.RadioButton MultitrackRadio; + private System.Windows.Forms.CheckBox StackMessagesCheckbox; } } \ No newline at end of file diff --git a/BizHawk.MultiClient/config/MessageConfig.cs b/BizHawk.MultiClient/config/MessageConfig.cs index 85132189ca..7e5efb7472 100644 --- a/BizHawk.MultiClient/config/MessageConfig.cs +++ b/BizHawk.MultiClient/config/MessageConfig.cs @@ -64,6 +64,7 @@ namespace BizHawk.MultiClient MovieInputColorDialog.Color = Color.FromArgb(MovieInput); SetColorBox(); SetPositionInfo(); + StackMessagesCheckbox.Checked = Global.Config.StackOSDMessages; } private void SetMaxXY() @@ -209,6 +210,8 @@ namespace BizHawk.MultiClient Global.Config.DispRecanchor = DispRecanchor; Global.Config.DispMultianchor = DispMultiAnchor; Global.Config.DispMessageanchor = DispMessageAnchor; + + Global.Config.StackOSDMessages = StackMessagesCheckbox.Checked; } private void OK_Click(object sender, EventArgs e) @@ -443,6 +446,8 @@ namespace BizHawk.MultiClient SetMaxXY(); SetColorBox(); SetPositionInfo(); + + StackMessagesCheckbox.Checked = Global.Config.StackOSDMessages = true; } private void SetAnchorValue(int value)