Changed GUIMessageBox.MessageBoxes from a queue to a list to make it easier to remove messageboxes that aren't currently visible, fixed clients creating multiple "permissions changed" messageboxes if there's another messagebox on the screen
This commit is contained in:
@@ -191,15 +191,11 @@ namespace Launcher2
|
|||||||
|
|
||||||
PlayerInput.Update(deltaTime);
|
PlayerInput.Update(deltaTime);
|
||||||
|
|
||||||
if (GUIMessageBox.MessageBoxes.Count > 0)
|
if (GUIMessageBox.VisibleBox != null)
|
||||||
{
|
{
|
||||||
var messageBox = GUIMessageBox.MessageBoxes.Peek();
|
GUIComponent.ForceMouseOn(GUIMessageBox.VisibleBox);
|
||||||
if (messageBox != null)
|
GUIMessageBox.VisibleBox.Update(deltaTime);
|
||||||
{
|
return;
|
||||||
GUIComponent.ForceMouseOn(messageBox);
|
|
||||||
messageBox.Update(deltaTime);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GUIComponent.ClearUpdateList();
|
GUIComponent.ClearUpdateList();
|
||||||
@@ -224,11 +220,7 @@ namespace Launcher2
|
|||||||
|
|
||||||
guiRoot.Draw(spriteBatch);
|
guiRoot.Draw(spriteBatch);
|
||||||
|
|
||||||
if (GUIMessageBox.MessageBoxes.Count > 0)
|
if (GUIMessageBox.VisibleBox != null) GUIMessageBox.VisibleBox.Draw(spriteBatch);
|
||||||
{
|
|
||||||
var messageBox = GUIMessageBox.MessageBoxes.Peek();
|
|
||||||
if (messageBox != null) messageBox.Draw(spriteBatch);
|
|
||||||
}
|
|
||||||
|
|
||||||
spriteBatch.End();
|
spriteBatch.End();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -480,10 +480,9 @@ namespace Barotrauma
|
|||||||
|
|
||||||
DrawMessages(spriteBatch, (float)deltaTime);
|
DrawMessages(spriteBatch, (float)deltaTime);
|
||||||
|
|
||||||
if (GUIMessageBox.MessageBoxes.Count>0)
|
if (GUIMessageBox.VisibleBox != null)
|
||||||
{
|
{
|
||||||
var messageBox = GUIMessageBox.MessageBoxes.Peek();
|
GUIMessageBox.VisibleBox.Draw(spriteBatch);
|
||||||
if (messageBox != null) messageBox.Draw(spriteBatch);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pauseMenuOpen)
|
if (pauseMenuOpen)
|
||||||
@@ -516,13 +515,9 @@ namespace Barotrauma
|
|||||||
GameMain.Config.SettingsFrame.AddToGUIUpdateList();
|
GameMain.Config.SettingsFrame.AddToGUIUpdateList();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GUIMessageBox.MessageBoxes.Count > 0)
|
if (GUIMessageBox.VisibleBox != null)
|
||||||
{
|
{
|
||||||
var messageBox = GUIMessageBox.MessageBoxes.Peek();
|
GUIMessageBox.VisibleBox.AddToGUIUpdateList();
|
||||||
if (messageBox != null)
|
|
||||||
{
|
|
||||||
messageBox.AddToGUIUpdateList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -538,13 +533,9 @@ namespace Barotrauma
|
|||||||
GameMain.Config.SettingsFrame.Update(deltaTime);
|
GameMain.Config.SettingsFrame.Update(deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GUIMessageBox.MessageBoxes.Count > 0)
|
if (GUIMessageBox.VisibleBox != null)
|
||||||
{
|
{
|
||||||
var messageBox = GUIMessageBox.MessageBoxes.Peek();
|
GUIMessageBox.VisibleBox.Update(deltaTime);
|
||||||
if (messageBox != null)
|
|
||||||
{
|
|
||||||
messageBox.Update(deltaTime);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
public class GUIMessageBox : GUIFrame
|
public class GUIMessageBox : GUIFrame
|
||||||
{
|
{
|
||||||
public static Queue<GUIComponent> MessageBoxes = new Queue<GUIComponent>();
|
public static List<GUIComponent> MessageBoxes = new List<GUIComponent>();
|
||||||
|
|
||||||
const int DefaultWidth=400, DefaultHeight=250;
|
const int DefaultWidth=400, DefaultHeight=250;
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public static GUIComponent VisibleBox
|
public static GUIComponent VisibleBox
|
||||||
{
|
{
|
||||||
get { return MessageBoxes.Count==0 ? null : MessageBoxes.Peek(); }
|
get { return MessageBoxes.Count == 0 ? null : MessageBoxes[0]; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Text
|
public string Text
|
||||||
@@ -60,7 +60,7 @@ namespace Barotrauma
|
|||||||
x += this.Buttons[i].Rect.Width + 20;
|
x += this.Buttons[i].Rect.Width + 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageBoxes.Enqueue(this);
|
MessageBoxes.Add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ namespace Barotrauma
|
|||||||
public bool Close(GUIButton button, object obj)
|
public bool Close(GUIButton button, object obj)
|
||||||
{
|
{
|
||||||
if (parent != null) parent.RemoveChild(this);
|
if (parent != null) parent.RemoveChild(this);
|
||||||
if (MessageBoxes.Contains(this)) MessageBoxes.Dequeue();
|
if (MessageBoxes.Contains(this)) MessageBoxes.Remove(this);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (!success)
|
if (!success)
|
||||||
{
|
{
|
||||||
var summaryScreen = GUIMessageBox.MessageBoxes.Peek();
|
var summaryScreen = GUIMessageBox.VisibleBox;
|
||||||
|
|
||||||
if (summaryScreen != null)
|
if (summaryScreen != null)
|
||||||
{
|
{
|
||||||
@@ -303,11 +303,11 @@ namespace Barotrauma
|
|||||||
|
|
||||||
var okButton = new GUIButton(new Rectangle(-120, 0, 100, 30), "Load game", Alignment.BottomRight, GUI.Style, summaryScreen);
|
var okButton = new GUIButton(new Rectangle(-120, 0, 100, 30), "Load game", Alignment.BottomRight, GUI.Style, summaryScreen);
|
||||||
okButton.OnClicked += GameMain.GameSession.LoadPrevious;
|
okButton.OnClicked += GameMain.GameSession.LoadPrevious;
|
||||||
okButton.OnClicked += (GUIButton button, object obj) => { GUIMessageBox.MessageBoxes.Dequeue(); return true; };
|
okButton.OnClicked += (GUIButton button, object obj) => { GUIMessageBox.MessageBoxes.Remove(GUIMessageBox.VisibleBox); return true; };
|
||||||
|
|
||||||
var quitButton = new GUIButton(new Rectangle(0, 0, 100, 30), "Quit", Alignment.BottomRight, GUI.Style, summaryScreen);
|
var quitButton = new GUIButton(new Rectangle(0, 0, 100, 30), "Quit", Alignment.BottomRight, GUI.Style, summaryScreen);
|
||||||
quitButton.OnClicked += GameMain.LobbyScreen.QuitToMainMenu;
|
quitButton.OnClicked += GameMain.LobbyScreen.QuitToMainMenu;
|
||||||
quitButton.OnClicked += (GUIButton button, object obj) => { GUIMessageBox.MessageBoxes.Dequeue(); return true; };
|
quitButton.OnClicked += (GUIButton button, object obj) => { GUIMessageBox.MessageBoxes.Remove(GUIMessageBox.VisibleBox); return true; };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -246,9 +246,9 @@ namespace Barotrauma
|
|||||||
if (shiftSummary != null)
|
if (shiftSummary != null)
|
||||||
{
|
{
|
||||||
GUIFrame summaryFrame = shiftSummary.CreateSummaryFrame(endMessage);
|
GUIFrame summaryFrame = shiftSummary.CreateSummaryFrame(endMessage);
|
||||||
GUIMessageBox.MessageBoxes.Enqueue(summaryFrame);
|
GUIMessageBox.MessageBoxes.Add(summaryFrame);
|
||||||
var okButton = new GUIButton(new Rectangle(0, 0, 100, 30), "Ok", Alignment.BottomRight, GUI.Style, summaryFrame.children[0]);
|
var okButton = new GUIButton(new Rectangle(0, 0, 100, 30), "Ok", Alignment.BottomRight, GUI.Style, summaryFrame.children[0]);
|
||||||
okButton.OnClicked = (GUIButton button, object obj) => { GUIMessageBox.MessageBoxes.Dequeue(); return true; };
|
okButton.OnClicked = (GUIButton button, object obj) => { GUIMessageBox.MessageBoxes.Remove(summaryFrame); return true; };
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskManager.EndShift();
|
TaskManager.EndShift();
|
||||||
|
|||||||
@@ -587,14 +587,7 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
private void SetPermissions(ClientPermissions newPermissions)
|
private void SetPermissions(ClientPermissions newPermissions)
|
||||||
{
|
{
|
||||||
if (GUIMessageBox.MessageBoxes.Count > 0)
|
GUIMessageBox.MessageBoxes.RemoveAll(mb => mb.UserData as string == "permissions");
|
||||||
{
|
|
||||||
var existingMsgBox = GUIMessageBox.MessageBoxes.Peek();
|
|
||||||
if (existingMsgBox.UserData as string == "permissions")
|
|
||||||
{
|
|
||||||
GUIMessageBox.MessageBoxes.Dequeue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
string msg = "";
|
string msg = "";
|
||||||
if (newPermissions == ClientPermissions.None)
|
if (newPermissions == ClientPermissions.None)
|
||||||
|
|||||||
@@ -1226,7 +1226,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (GUIMessageBox.MessageBoxes.Count>0)
|
if (GUIMessageBox.MessageBoxes.Count>0)
|
||||||
{
|
{
|
||||||
var currentMessageBox = GUIMessageBox.MessageBoxes.Peek();
|
var currentMessageBox = GUIMessageBox.VisibleBox;
|
||||||
if (currentMessageBox != null && currentMessageBox.UserData as string == subName)
|
if (currentMessageBox != null && currentMessageBox.UserData as string == subName)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user