using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace MrAG { public partial class Gui { public class MessageBox : Base { private string Title; private string Text; private MrAG.Gui.Frame Frame; private MrAG.Gui.Label Label; public MrAG.Gui.Button[] Buttons; private Action[] ButtonActions_ArgLeftMouseClick; private Action[] ButtonActions_ArgLeftMousePress; private Action[] ButtonActions_ArgLeftMouseRelease; private Action[] ButtonActions_ArgRightMouseClick; private Action[] ButtonActions_ArgRightMousePress; private Action[] ButtonActions_ArgRightMouseRelease; private Action[] ButtonActions_ArgMiddleMouseClick; private Action[] ButtonActions_ArgMiddleMousePress; private Action[] ButtonActions_ArgMiddleMouseRelease; public void SetTitle(string text){ this.Frame.Text = text; Vector2 textsize = MrAG.Draw.GetTextSize(text); if (textsize.X > this.Frame.Width){ this.Frame.SetSize((int)textsize.X + 20, this.Frame.Height); this.Frame.Center(); } } public void SetText(string text){ this.Label.Text = text; Vector2 textsize = MrAG.Draw.GetTextSize(text); if (textsize.X > this.Frame.Width){ this.Frame.SetSize((int)textsize.X + 20, this.Frame.Height); this.Frame.Center(); } this.Label.CenterX(); } public MessageBox(string title, string text) { this.Title = title; this.Text = text; this.Setup(); } public MessageBox(string title, string text, MrAG.Gui.Button[] bts) { this.Title = title; this.Text = text; this.Buttons = bts; this.Setup(); } public override void Remove() { this.Frame.Remove(); base.Remove(); } private void Setup() { Vector2 titlesize = MrAG.Draw.GetTextSize(this.Title); Vector2 textsize = MrAG.Draw.GetTextSize(this.Text); this.Frame = new MrAG.Gui.Frame(); this.Frame.SetSize((int)textsize.X + 20, (int)textsize.Y + 42); this.Frame.Text = this.Title; this.Label = new MrAG.Gui.Label(); this.Label.Text = this.Text; this.Label.SetParent(this.Frame); this.Label.SetY(0); this.Label.AlignmentX = MrAG.Draw.TextAlignmentX.Center; this.SetParent(this.Frame); if (this.Buttons == null) { MrAG.Gui.Button okbtn = new Button(); okbtn.SetParent(this.Frame); okbtn.SetSize(100, 20); okbtn.CenterX(); okbtn.SetY(this.Frame.Height - 20); okbtn.Text = "Ok"; okbtn.OnLeftMouseClick = new Action(delegate { this.Frame.Remove(); }); this.Buttons = new Button[] { okbtn }; } else { int curx = 10; this.ButtonActions_ArgLeftMouseClick = new Action[this.Buttons.Length]; this.ButtonActions_ArgLeftMousePress = new Action[this.Buttons.Length]; this.ButtonActions_ArgLeftMouseRelease = new Action[this.Buttons.Length]; this.ButtonActions_ArgRightMouseClick = new Action[this.Buttons.Length]; this.ButtonActions_ArgRightMousePress = new Action[this.Buttons.Length]; this.ButtonActions_ArgRightMouseRelease = new Action[this.Buttons.Length]; this.ButtonActions_ArgMiddleMouseClick = new Action[this.Buttons.Length]; this.ButtonActions_ArgMiddleMousePress = new Action[this.Buttons.Length]; this.ButtonActions_ArgMiddleMouseRelease = new Action[this.Buttons.Length]; for (int i = 0; i < this.Buttons.Length; i++) { this.Buttons[i].SetParent(this.Frame); this.Buttons[i].SetY(this.Frame.Height - 22); this.Buttons[i].SetX(curx); this.Buttons[i].SetSize(100, 20); this.ButtonActions_ArgLeftMouseClick[i] = this.Buttons[i].OnArgumentedLeftMouseClick; this.ButtonActions_ArgLeftMousePress[i] = this.Buttons[i].OnArgumentedLeftMousePress; this.ButtonActions_ArgLeftMouseRelease[i] = this.Buttons[i].OnArgumentedLeftMouseRelease; this.ButtonActions_ArgRightMouseClick[i] = this.Buttons[i].OnArgumentedRightMouseClick; this.ButtonActions_ArgRightMousePress[i] = this.Buttons[i].OnArgumentedRightMousePress; this.ButtonActions_ArgRightMouseRelease[i] = this.Buttons[i].OnArgumentedRightMouseRelease; this.ButtonActions_ArgMiddleMouseClick[i] = this.Buttons[i].OnArgumentedMiddleMouseClick; this.ButtonActions_ArgMiddleMousePress[i] = this.Buttons[i].OnArgumentedMiddleMousePress; this.ButtonActions_ArgMiddleMouseRelease[i] = this.Buttons[i].OnArgumentedMiddleMouseRelease; this.Buttons[i].OnArgumentedLeftMouseClick = new Action(this.btn_ArgLeftMouseClick); this.Buttons[i].OnArgumentedLeftMousePress = new Action(this.btn_ArgLeftMousePress); this.Buttons[i].OnArgumentedLeftMouseRelease = new Action(this.btn_ArgLeftMouseRelease); this.Buttons[i].OnArgumentedRightMouseClick = new Action(this.btn_ArgRightMouseClick); this.Buttons[i].OnArgumentedRightMousePress = new Action(this.btn_ArgRightMousePress); this.Buttons[i].OnArgumentedRightMouseRelease = new Action(this.btn_ArgRightMouseRelease); this.Buttons[i].OnArgumentedMiddleMouseClick = new Action(this.btn_ArgMiddleMouseClick); this.Buttons[i].OnArgumentedMiddleMousePress = new Action(this.btn_ArgMiddleMousePress); this.Buttons[i].OnArgumentedMiddleMouseRelease = new Action(this.btn_ArgMiddleMouseRelease); this.Buttons[i].Tag = i; curx += this.Buttons[i].Width + 10; } if (curx > this.Frame.Width) { this.Frame.SetWidth(curx); } } this.Frame.Center(); this.Label.CenterX(); } private void btn_action(Action act, object sender) { if (act != null){ act.Invoke(sender); this.Frame.Remove(); } } private void btn_ArgLeftMouseClick(object sender) { this.btn_action(this.ButtonActions_ArgLeftMouseClick[(int)(sender as MrAG.Gui.Base).Tag], sender); } private void btn_ArgLeftMousePress(object sender) { this.btn_action(this.ButtonActions_ArgLeftMousePress[(int)(sender as MrAG.Gui.Base).Tag], sender); } private void btn_ArgLeftMouseRelease(object sender) { this.btn_action(this.ButtonActions_ArgLeftMouseRelease[(int)(sender as MrAG.Gui.Base).Tag], sender); } private void btn_ArgRightMouseClick(object sender) { this.btn_action(this.ButtonActions_ArgRightMouseClick[(int)(sender as MrAG.Gui.Base).Tag], sender); } private void btn_ArgRightMousePress(object sender) { this.btn_action(this.ButtonActions_ArgRightMousePress[(int)(sender as MrAG.Gui.Base).Tag], sender); } private void btn_ArgRightMouseRelease(object sender) { this.btn_action(this.ButtonActions_ArgRightMouseRelease[(int)(sender as MrAG.Gui.Base).Tag], sender); } private void btn_ArgMiddleMouseClick(object sender) { this.btn_action(this.ButtonActions_ArgMiddleMouseClick[(int)(sender as MrAG.Gui.Base).Tag], sender); } private void btn_ArgMiddleMousePress(object sender) { this.btn_action(this.ButtonActions_ArgMiddleMousePress[(int)(sender as MrAG.Gui.Base).Tag], sender); } private void btn_ArgMiddleMouseRelease(object sender) { this.btn_action(this.ButtonActions_ArgMiddleMouseRelease[(int)(sender as MrAG.Gui.Base).Tag], sender); } } } }