Extended the Log to filter through the displayed responced using console
This commit is contained in:
parent
8e4c603cad
commit
92eebc7de1
4 changed files with 203 additions and 37 deletions
|
@ -10,6 +10,7 @@ cheat allgadgets
|
||||||
Unlocks all of the gagets in the game
|
Unlocks all of the gagets in the game
|
||||||
|
|
||||||
cheat spawn [id] ([amount])
|
cheat spawn [id] ([amount])
|
||||||
|
spawns given item for the given ammount
|
||||||
|
|
||||||
tp [DestinationPlayer]
|
tp [DestinationPlayer]
|
||||||
Teleports the player that entered in the commant to the player entered
|
Teleports the player that entered in the commant to the player entered
|
||||||
|
@ -17,4 +18,9 @@ listplayers
|
||||||
Prints the list of current players to the console
|
Prints the list of current players to the console
|
||||||
|
|
||||||
sleep [Hours]
|
sleep [Hours]
|
||||||
Sleep command followed by the time in in game hours to "sleep"". Fast forwards the game the alotted hours.
|
Sleep command followed by the time in in game hours to "sleep"". Fast forwards the game the alotted hours.
|
||||||
|
|
||||||
|
console [enable/disable] [logtype]
|
||||||
|
Sets whether a specific log type should be displaying in the console.
|
||||||
|
All type default to enabled.
|
||||||
|
Log Types: Error, Assert, Warning, Log, Exception
|
|
@ -9,7 +9,7 @@ namespace SRMultiplayer
|
||||||
{
|
{
|
||||||
public string inputString = "";
|
public string inputString = "";
|
||||||
public event Action<string> OnInputText;
|
public event Action<string> OnInputText;
|
||||||
|
|
||||||
public void ClearLine()
|
public void ClearLine()
|
||||||
{
|
{
|
||||||
Console.CursorLeft = 0;
|
Console.CursorLeft = 0;
|
||||||
|
@ -17,7 +17,7 @@ namespace SRMultiplayer
|
||||||
Console.CursorTop--;
|
Console.CursorTop--;
|
||||||
Console.CursorLeft = 0;
|
Console.CursorLeft = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RedrawInputLine()
|
public void RedrawInputLine()
|
||||||
{
|
{
|
||||||
bool flag = Console.CursorLeft > 0;
|
bool flag = Console.CursorLeft > 0;
|
||||||
|
@ -29,7 +29,7 @@ namespace SRMultiplayer
|
||||||
Console.Write("> ");
|
Console.Write("> ");
|
||||||
Console.Write(this.inputString);
|
Console.Write(this.inputString);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void OnBackspace()
|
internal void OnBackspace()
|
||||||
{
|
{
|
||||||
bool flag = this.inputString.Length <= 0;
|
bool flag = this.inputString.Length <= 0;
|
||||||
|
@ -39,14 +39,14 @@ namespace SRMultiplayer
|
||||||
this.RedrawInputLine();
|
this.RedrawInputLine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void OnEscape()
|
internal void OnEscape()
|
||||||
{
|
{
|
||||||
this.ClearLine();
|
this.ClearLine();
|
||||||
this.inputString = "";
|
this.inputString = "";
|
||||||
this.RedrawInputLine();
|
this.RedrawInputLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void OnEnter()
|
internal void OnEnter()
|
||||||
{
|
{
|
||||||
this.ClearLine();
|
this.ClearLine();
|
||||||
|
@ -57,10 +57,45 @@ namespace SRMultiplayer
|
||||||
bool flag = this.OnInputText != null;
|
bool flag = this.OnInputText != null;
|
||||||
if (flag)
|
if (flag)
|
||||||
{
|
{
|
||||||
|
//on text inputed reset the search loc and cycle the search tree
|
||||||
|
searchLoc = -1; //searchLoc set to -1 to always go to place 0 on first arrow
|
||||||
|
AddToCommandTree(obj);
|
||||||
|
|
||||||
this.OnInputText(obj);
|
this.OnInputText(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<string> cmdTree = new List<string>();
|
||||||
|
internal void AddToCommandTree(string cmdText)
|
||||||
|
{
|
||||||
|
cmdTree.Insert(0,cmdText);
|
||||||
|
|
||||||
|
//if tree gets larger than 10 remove the 11th item
|
||||||
|
if (cmdTree.Count > 10) { cmdTree.RemoveAt(10); };
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//handle internal cycling of last 10 commands
|
||||||
|
int searchLoc = -1;
|
||||||
|
internal void GetCommand(int diff)
|
||||||
|
{
|
||||||
|
if (cmdTree.Count > 0)
|
||||||
|
{
|
||||||
|
searchLoc = searchLoc + diff;
|
||||||
|
//prevent below 0 or over max position
|
||||||
|
if (searchLoc > (cmdTree.Count - 1)) searchLoc = (cmdTree.Count - 1);
|
||||||
|
if (searchLoc < 0) searchLoc = 0;
|
||||||
|
|
||||||
|
//if a new location is found enter the search text in the input and redraw it.
|
||||||
|
this.inputString = cmdTree[searchLoc];
|
||||||
|
this.RedrawInputLine();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("cmdTree is empty");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
bool flag = !Console.KeyAvailable;
|
bool flag = !Console.KeyAvailable;
|
||||||
|
@ -94,6 +129,24 @@ namespace SRMultiplayer
|
||||||
this.inputString += consoleKeyInfo.KeyChar.ToString();
|
this.inputString += consoleKeyInfo.KeyChar.ToString();
|
||||||
this.RedrawInputLine();
|
this.RedrawInputLine();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//handle up pressed to get previous lines
|
||||||
|
bool flag6 = consoleKeyInfo.Key == ConsoleKey.UpArrow;
|
||||||
|
if (flag6)
|
||||||
|
{
|
||||||
|
this.GetCommand(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//handle down pressed to get next lines
|
||||||
|
bool flag7 = consoleKeyInfo.Key == ConsoleKey.DownArrow;
|
||||||
|
if (flag7)
|
||||||
|
{
|
||||||
|
this.GetCommand(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using MonomiPark.SlimeRancher.Regions;
|
using JetBrains.Annotations;
|
||||||
|
using MonomiPark.SlimeRancher.Regions;
|
||||||
using SRMultiplayer.Networking;
|
using SRMultiplayer.Networking;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -30,27 +31,98 @@ namespace SRMultiplayer
|
||||||
SRMP.Log("Console Started");
|
SRMP.Log("Console Started");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//used to prevent duplicate messages displaying and list what number duplicate it is
|
||||||
|
string LastMessage = "";
|
||||||
|
int duplicateCount = 0;
|
||||||
|
|
||||||
|
//types of console types that can be enabled/disabled
|
||||||
|
//server automatically starts with all active
|
||||||
|
List<LogType> blockMessages = new List<LogType>(); //keeps a list of message types that have been disabled
|
||||||
private void Application_logMessageReceived(string condition, string stackTrace, LogType type)
|
private void Application_logMessageReceived(string condition, string stackTrace, LogType type)
|
||||||
{
|
{
|
||||||
if (type == LogType.Warning)
|
|
||||||
Console.ForegroundColor = ConsoleColor.Yellow;
|
|
||||||
else if (type == LogType.Error)
|
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
|
||||||
else
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
|
|
||||||
// We're half way through typing something, so clear this line ..
|
// We're half way through typing something, so clear this line ..
|
||||||
if (Console.CursorLeft != 0)
|
if (Console.CursorLeft != 0)
|
||||||
input.ClearLine();
|
input.ClearLine();
|
||||||
|
|
||||||
Console.WriteLine(condition);
|
//construct message
|
||||||
|
string message = condition;
|
||||||
if (!string.IsNullOrEmpty(stackTrace))
|
if (!string.IsNullOrEmpty(stackTrace))
|
||||||
Console.WriteLine(stackTrace);
|
{
|
||||||
|
//add stack strace if included
|
||||||
|
message += Environment.NewLine + stackTrace;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message == LastMessage)
|
||||||
|
{
|
||||||
|
//do not process duplicate marks if the last item was not written
|
||||||
|
if(duplicateCount >0) duplicateCount++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//add write line for duplicate notices if necessary
|
||||||
|
if (duplicateCount > 0)
|
||||||
|
{
|
||||||
|
Console.ForegroundColor = ConsoleColor.Gray;
|
||||||
|
Console.WriteLine("Output Duplicated: " + duplicateCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
//format color for message
|
||||||
|
if (type == LogType.Warning)
|
||||||
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
||||||
|
else if (type == LogType.Error)
|
||||||
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
|
else
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
|
|
||||||
|
// mark new message
|
||||||
|
LastMessage = message;
|
||||||
|
|
||||||
|
//check data for inner types
|
||||||
|
string data = condition;
|
||||||
|
|
||||||
|
//remove the srmp tag and the time to check inner tags
|
||||||
|
if (type == LogType.Log) data = data.Substring(17);
|
||||||
|
|
||||||
|
//only write the message type if its not blocked
|
||||||
|
//always allow console replay to display
|
||||||
|
if (!blockMessages.Contains(type) || data.StartsWith("[Console]"))
|
||||||
|
{
|
||||||
|
//write the new line if not blocked
|
||||||
|
duplicateCount = 0;
|
||||||
|
Console.WriteLine(message);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//for testing log disabled display
|
||||||
|
//Console.ForegroundColor = ConsoleColor.Magenta;
|
||||||
|
Console.WriteLine(type.ToString() + " Dismissed");
|
||||||
|
|
||||||
|
//mark dupilcate count to -1
|
||||||
|
//prevent duplicate count for supressed messages from displaying
|
||||||
|
duplicateCount = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// If we were typing something re-add it.
|
// If we were typing something re-add it.
|
||||||
input.RedrawInputLine();
|
input.RedrawInputLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void ClearCurrentConsoleLine()
|
||||||
|
{
|
||||||
|
int currentLineCursor = Console.CursorTop;
|
||||||
|
Console.SetCursorPosition(0, Console.CursorTop);
|
||||||
|
Console.Write(new string(' ', Console.BufferWidth));
|
||||||
|
Console.SetCursorPosition(0, currentLineCursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
//create a log call that marks all console sent replys
|
||||||
|
void ConsoleLog(string message)
|
||||||
|
{
|
||||||
|
SRMP.Log(message, "Console");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -74,17 +146,17 @@ namespace SRMultiplayer
|
||||||
{
|
{
|
||||||
if (args.Length != 2 || !int.TryParse(args[1], out int money))
|
if (args.Length != 2 || !int.TryParse(args[1], out int money))
|
||||||
{
|
{
|
||||||
SRMP.Log("Usage: cheat money <amount>");
|
ConsoleLog("Usage: cheat money <amount>");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(money > 0)
|
if (money > 0)
|
||||||
SRSingleton<SceneContext>.Instance.PlayerState.AddCurrency(money);
|
SRSingleton<SceneContext>.Instance.PlayerState.AddCurrency(money);
|
||||||
else
|
else
|
||||||
SRSingleton<SceneContext>.Instance.PlayerState.SpendCurrency(money);
|
SRSingleton<SceneContext>.Instance.PlayerState.SpendCurrency(money);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(args[0].Equals("enable"))
|
else if (args[0].Equals("enable"))
|
||||||
{
|
{
|
||||||
//TestUI.Instance.cheat = !TestUI.Instance.cheat;
|
//TestUI.Instance.cheat = !TestUI.Instance.cheat;
|
||||||
}
|
}
|
||||||
|
@ -92,7 +164,7 @@ namespace SRMultiplayer
|
||||||
{
|
{
|
||||||
if (args.Length != 2 || !int.TryParse(args[1], out int value))
|
if (args.Length != 2 || !int.TryParse(args[1], out int value))
|
||||||
{
|
{
|
||||||
SRMP.Log("Usage: cheat keys <amount>");
|
ConsoleLog("Usage: cheat keys <amount>");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -123,7 +195,7 @@ namespace SRMultiplayer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SRMP.Log(id + " can not be spawned");
|
ConsoleLog(id + " can not be spawned");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -132,7 +204,7 @@ namespace SRMultiplayer
|
||||||
SRMP.Log(args[1] + " not found. " + (data.Count() > 0 ? " Did you mean one of these?" : ""));
|
SRMP.Log(args[1] + " not found. " + (data.Count() > 0 ? " Did you mean one of these?" : ""));
|
||||||
foreach (var name in data)
|
foreach (var name in data)
|
||||||
{
|
{
|
||||||
SRMP.Log(name);
|
ConsoleLog(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -156,26 +228,26 @@ namespace SRMultiplayer
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var data = Enum.GetNames(typeof(Identifiable.Id)).Where(n => n.ToLower().Contains(args[1].ToLower()));
|
var data = Enum.GetNames(typeof(Identifiable.Id)).Where(n => n.ToLower().Contains(args[1].ToLower()));
|
||||||
SRMP.Log(args[1] + " not found. " + (data.Count() > 0 ? " Did you mean one of these?" : ""));
|
ConsoleLog(args[1] + " not found. " + (data.Count() > 0 ? " Did you mean one of these?" : ""));
|
||||||
foreach (var name in data)
|
foreach (var name in data)
|
||||||
{
|
{
|
||||||
SRMP.Log(name);
|
ConsoleLog(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SRMP.Log("Usage: cheat spawn <id> (<amount>)");
|
ConsoleLog("Usage: cheat spawn <id> (<amount>)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SRMP.Log("Available sub commands:");
|
ConsoleLog("Available sub commands:");
|
||||||
SRMP.Log("cheat money <amount>");
|
ConsoleLog("cheat money <amount>");
|
||||||
SRMP.Log("cheat keys <amount>");
|
ConsoleLog("cheat keys <amount>");
|
||||||
SRMP.Log("cheat spawn <id> (<amount>)");
|
ConsoleLog("cheat spawn <id> (<amount>)");
|
||||||
SRMP.Log("cheat allgadgets");
|
ConsoleLog("cheat allgadgets");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -190,18 +262,18 @@ namespace SRMultiplayer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SRMP.Log("Player not found");
|
ConsoleLog("Player not found");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SRMP.Log("Usage: tp <username>");
|
ConsoleLog("Usage: tp <username>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "listplayers":
|
case "listplayers":
|
||||||
{
|
{
|
||||||
SRMP.Log("Players:");
|
ConsoleLog("Players:");
|
||||||
foreach (var player in Globals.Players.Values)
|
foreach (var player in Globals.Players.Values)
|
||||||
{
|
{
|
||||||
SRMP.Log(player.Username);
|
SRMP.Log(player.Username);
|
||||||
|
@ -213,10 +285,45 @@ namespace SRMultiplayer
|
||||||
if (args.Length == 1)
|
if (args.Length == 1)
|
||||||
{
|
{
|
||||||
SRSingleton<SceneContext>.Instance.TimeDirector.FastForwardTo(SRSingleton<SceneContext>.Instance.TimeDirector.HoursFromNow(float.Parse(args[0])));
|
SRSingleton<SceneContext>.Instance.TimeDirector.FastForwardTo(SRSingleton<SceneContext>.Instance.TimeDirector.HoursFromNow(float.Parse(args[0])));
|
||||||
|
ConsoleLog("Sleeoing for " + args[0] + " hours");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ConsoleLog("Usage: sleep <hours>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "console": //add toggle option for turning on and off logging types
|
||||||
|
|
||||||
|
if (args.Length > 1 && (args[0] == "enable"|| args[0] == "disable"))
|
||||||
|
{
|
||||||
|
bool enable = args[0] == "enable";
|
||||||
|
//double check type
|
||||||
|
if (LogType.TryParse(args[1], true, out LogType logType))
|
||||||
|
{
|
||||||
|
if (enable)
|
||||||
|
{
|
||||||
|
if (!blockMessages.Contains(logType)) blockMessages.Remove(logType);
|
||||||
|
ConsoleLog(logType.ToString() + " Messages Enabled");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (blockMessages.Contains(logType)) blockMessages.Add(logType);
|
||||||
|
ConsoleLog("[Console] " + logType.ToString() + " Messages Disabled");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ConsoleLog("Invalid Feed back Type");
|
||||||
|
ConsoleLog("Suggestions: " + string.Join(", ", logType));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ConsoleLog("Usage: console <enable/disable> <feedbackType>");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -133,14 +133,14 @@ public class MultiplayerUI : SRSingleton<MultiplayerUI>
|
||||||
}
|
}
|
||||||
private void FunctionKeys()
|
private void FunctionKeys()
|
||||||
{
|
{
|
||||||
GUILayout.Label("Press Button or Corresponding Key To Change Menu");
|
GUILayout.Label("Press Button or Key To Change Style");
|
||||||
GUILayout.BeginHorizontal();
|
GUILayout.BeginHorizontal();
|
||||||
if (GUILayout.Button(menuOpen == 1 ? "F3 - Full" : "F3 - Mini"))
|
if (GUILayout.Button(menuOpen == 1 ? "F3 - Full" : "F3 - Mini"))
|
||||||
{
|
{
|
||||||
menuOpen = menuOpen == 1 ? 2 : 1;
|
menuOpen = menuOpen == 1 ? 2 : 1;
|
||||||
}
|
}
|
||||||
GUILayout.FlexibleSpace();
|
GUILayout.FlexibleSpace();
|
||||||
if (GUILayout.Button(menuOpen == 0 ? "F4 - Full" : "F4 - Closed"))
|
if (GUILayout.Button(menuOpen == 0 ? "F4 - Full" : "F4 - Colapsed"))
|
||||||
{
|
{
|
||||||
menuOpen = menuOpen == 0 ? 2 : 0;
|
menuOpen = menuOpen == 0 ? 2 : 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue