added http and settings
This commit is contained in:
parent
3c4bfbe772
commit
0f404019b6
6 changed files with 327 additions and 2 deletions
|
|
@ -19,7 +19,10 @@ namespace MosswartMassacre
|
|||
internal static double killsPerHour = 0;
|
||||
internal static DateTime statsStartTime = DateTime.Now;
|
||||
internal static Timer updateTimer;
|
||||
public static bool RareMetaEnabled { get; private set; } = true;
|
||||
public static bool RareMetaEnabled { get; set; } = true;
|
||||
public static bool RemoteCommandsEnabled { get; set; } = false;
|
||||
public static bool HttpServerEnabled { get; set; } = false;
|
||||
public static string CharTag { get; set; } = "";
|
||||
private static Queue<string> rareMessageQueue = new Queue<string>();
|
||||
private static DateTime _lastSent = DateTime.MinValue;
|
||||
private static readonly Queue<string> _chatQueue = new Queue<string>();
|
||||
|
|
@ -29,11 +32,13 @@ namespace MosswartMassacre
|
|||
try
|
||||
{
|
||||
MyHost = Host;
|
||||
|
||||
WriteToChat("Mosswart Massacre has started!");
|
||||
|
||||
// Subscribe to chat message event
|
||||
CoreManager.Current.ChatBoxMessage += new EventHandler<ChatTextInterceptEventArgs>(OnChatText);
|
||||
CoreManager.Current.CommandLineText += OnChatCommand;
|
||||
CoreManager.Current.CharacterFilter.LoginComplete += CharacterFilter_LoginComplete;
|
||||
|
||||
// Initialize the timer
|
||||
updateTimer = new Timer(1000); // Update every second
|
||||
|
|
@ -53,6 +58,7 @@ namespace MosswartMassacre
|
|||
{
|
||||
try
|
||||
{
|
||||
PluginSettings.Save();
|
||||
WriteToChat("Mosswart Massacre is shutting down...");
|
||||
|
||||
// Unsubscribe from chat message event
|
||||
|
|
@ -76,6 +82,20 @@ namespace MosswartMassacre
|
|||
WriteToChat("Error during shutdown: " + ex.Message);
|
||||
}
|
||||
}
|
||||
private void CharacterFilter_LoginComplete(object sender, EventArgs e)
|
||||
{
|
||||
CoreManager.Current.CharacterFilter.LoginComplete -= CharacterFilter_LoginComplete;
|
||||
|
||||
PluginSettings.Initialize(); // Safe to call now
|
||||
|
||||
// Apply the values
|
||||
RareMetaEnabled = PluginSettings.Instance.RareMetaEnabled;
|
||||
RemoteCommandsEnabled = PluginSettings.Instance.RemoteCommandsEnabled;
|
||||
HttpServerEnabled = PluginSettings.Instance.HttpServerEnabled;
|
||||
MainView.SetRareMetaToggleState(RareMetaEnabled);
|
||||
|
||||
WriteToChat("Settings loaded.");
|
||||
}
|
||||
|
||||
private void OnChatText(object sender, ChatTextInterceptEventArgs e)
|
||||
{
|
||||
|
|
@ -133,6 +153,39 @@ namespace MosswartMassacre
|
|||
WriteToChat($"[Mosswart Massacre] Reporting to allegiance: {reportMessage}");
|
||||
MyHost.Actions.InvokeChatParser($"/a {reportMessage}");
|
||||
}
|
||||
if (RemoteCommandsEnabled && e.Color == 18)
|
||||
{
|
||||
string characterName = Regex.Escape(CoreManager.Current.CharacterFilter.Name);
|
||||
string pattern = $@"^\[Allegiance\].*Dunking Rares.*say[s]?, \""!do {characterName} (?<command>.+)\""$";
|
||||
string tag = Regex.Escape(PluginCore.CharTag);
|
||||
string patterntag = $@"^\[Allegiance\].*Dunking Rares.*say[s]?, \""!dot {tag} (?<command>.+)\""$";
|
||||
|
||||
|
||||
var match = Regex.Match(e.Text, pattern);
|
||||
var matchtag = Regex.Match(e.Text, patterntag);
|
||||
|
||||
if (match.Success)
|
||||
{
|
||||
string command = match.Groups["command"].Value;
|
||||
DispatchChatToBoxWithPluginIntercept(command);
|
||||
DelayedCommandManager.AddDelayedCommand($"/a [Remote] Executing: {command}", 2000);
|
||||
}
|
||||
else if (matchtag.Success)
|
||||
{
|
||||
string command = matchtag.Groups["command"].Value;
|
||||
DispatchChatToBoxWithPluginIntercept(command);
|
||||
DelayedCommandManager.AddDelayedCommand($"/a [Remote] Executing: {command}", 2000);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
@ -268,7 +321,8 @@ namespace MosswartMassacre
|
|||
}
|
||||
public static void ToggleRareMeta()
|
||||
{
|
||||
RareMetaEnabled = !RareMetaEnabled;
|
||||
PluginSettings.Instance.RareMetaEnabled = !PluginSettings.Instance.RareMetaEnabled;
|
||||
RareMetaEnabled = PluginSettings.Instance.RareMetaEnabled;
|
||||
MainView.SetRareMetaToggleState(RareMetaEnabled);
|
||||
}
|
||||
|
||||
|
|
@ -314,6 +368,8 @@ namespace MosswartMassacre
|
|||
WriteToChat("/mm report - Show current stats");
|
||||
WriteToChat("/mm reset - Reset all counters");
|
||||
WriteToChat("/mm meta - Toggle rare meta state");
|
||||
WriteToChat("/mm http - http server enable|disable");
|
||||
WriteToChat("/mm remotecommand - Listen to remote commands enable|disable");
|
||||
break;
|
||||
|
||||
case "report":
|
||||
|
|
@ -331,6 +387,58 @@ namespace MosswartMassacre
|
|||
WriteToChat($"Rare meta state is now {(RareMetaEnabled ? "ON" : "OFF")}");
|
||||
MainView.SetRareMetaToggleState(RareMetaEnabled); // <-- sync the UI
|
||||
break;
|
||||
|
||||
case "http":
|
||||
if (args.Length > 1)
|
||||
{
|
||||
if (args[1].Equals("enable", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
PluginSettings.Instance.HttpServerEnabled = true;
|
||||
HttpServerEnabled = true;
|
||||
HttpCommandServer.Start();
|
||||
}
|
||||
else if (args[1].Equals("disable", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
PluginSettings.Instance.HttpServerEnabled = false;
|
||||
HttpServerEnabled = false;
|
||||
HttpCommandServer.Stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteToChat("Usage: /mm http <enable|disable>");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteToChat("Usage: /mm http <enable|disable>");
|
||||
}
|
||||
break;
|
||||
|
||||
case "remotecommands":
|
||||
if (args.Length > 1)
|
||||
{
|
||||
if (args[1].Equals("enable", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
PluginSettings.Instance.RemoteCommandsEnabled = true;
|
||||
RemoteCommandsEnabled = true;
|
||||
WriteToChat("Remote command listening is now ENABLED.");
|
||||
}
|
||||
else if (args[1].Equals("disable", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
PluginSettings.Instance.RemoteCommandsEnabled = false;
|
||||
RemoteCommandsEnabled = false;
|
||||
WriteToChat("Remote command listening is now DISABLED.");
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteToChat("Invalid remotecommands argument. Use 'enable' or 'disable'.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteToChat("Usage: /mm remotecommands <enable|disable>");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
WriteToChat($"Unknown /mm command: {subCommand}. Try /mm help");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue