Fixed incorrect positioning of debug console question prompts. The ShowQuestionPrompt method used to take the last textblock in the console and consider that as the question prompt text, even though the text had only been queued and the actual GUITexblock hadn't been instantiated yet.

This commit is contained in:
Joonas Rikkonen
2017-12-20 18:57:42 +02:00
parent 0204bc2c49
commit 3e4d2c5a8a
3 changed files with 20 additions and 19 deletions

View File

@@ -15,6 +15,8 @@ namespace Barotrauma
private static Queue<ColoredText> queuedMessages = new Queue<ColoredText>();
private static GUITextBlock activeQuestionText;
public static bool IsOpen
{
get
@@ -69,6 +71,13 @@ namespace Barotrauma
}
}
if (activeQuestionText != null &&
(listBox.children.Count == 0 || listBox.children[listBox.children.Count - 1] != activeQuestionText))
{
listBox.children.Remove(activeQuestionText);
listBox.children.Add(activeQuestionText);
}
if (PlayerInput.KeyHit(Keys.F3))
{
isOpen = !isOpen;
@@ -177,13 +186,6 @@ namespace Barotrauma
}
selectedIndex = Messages.Count;
if (activeQuestionText != null)
{
//make sure the active question stays at the bottom of the list
listBox.children.Remove(activeQuestionText);
listBox.children.Add(activeQuestionText);
}
}
private static void InitProjectSpecific()

View File

@@ -2,7 +2,6 @@
using Microsoft.Xna.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Barotrauma
{

View File

@@ -106,9 +106,6 @@ namespace Barotrauma
public delegate void QuestionCallback(string answer);
private static QuestionCallback activeQuestionCallback;
#if CLIENT
private static GUIComponent activeQuestionText;
#endif
private static List<Command> commands = new List<Command>();
public static List<Command> Commands
@@ -1127,8 +1124,8 @@ namespace Barotrauma
{
NewMessage(command, Color.White);
}
#if !DEBUG && CLIENT
#if CLIENT
if (GameMain.Client != null)
{
if (GameMain.Client.HasConsoleCommandPermission(splitCommand[0].ToLowerInvariant()))
@@ -1148,11 +1145,13 @@ namespace Barotrauma
NewMessage("Server command: " + command, Color.White);
return;
}
#if !DEBUG
if (!IsCommandPermitted(splitCommand[0].ToLowerInvariant(), GameMain.Client))
{
ThrowError("You're not permitted to use the command \"" + splitCommand[0].ToLowerInvariant() + "\"!");
return;
}
#endif
}
#endif
@@ -1427,14 +1426,15 @@ namespace Barotrauma
public static void ShowQuestionPrompt(string question, QuestionCallback onAnswered)
{
NewMessage(" >>" + question, Color.Cyan);
activeQuestionCallback += onAnswered;
#if CLIENT
if (listBox != null && listBox.children.Count > 0)
{
activeQuestionText = listBox.children[listBox.children.Count - 1];
}
activeQuestionText = new GUITextBlock(new Rectangle(0, 0, listBox.Rect.Width, 30), " >>" + question, "", Alignment.TopLeft, Alignment.Left, null, true, GUI.SmallFont);
activeQuestionText.CanBeFocused = false;
activeQuestionText.TextColor = Color.Cyan;
#else
NewMessage(" >>" + question, Color.Cyan);
#endif
activeQuestionCallback += onAnswered;
}
private static bool TryParseTimeSpan(string s, out TimeSpan timeSpan)