Skip to content

Commit

Permalink
Merge pull request #31 from perappu/dev/7.0
Browse files Browse the repository at this point in the history
Dev/7.0
  • Loading branch information
perappu authored Jul 24, 2024
2 parents 886c225 + e9b8d76 commit be834a9
Show file tree
Hide file tree
Showing 14 changed files with 139 additions and 158 deletions.
4 changes: 2 additions & 2 deletions WhoSaidWhatNow/Configuration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,9 @@ public class Configuration : IPluginConfiguration

// the below exist just to make saving less cumbersome
[NonSerialized]
private DalamudPluginInterface? PluginInterface;
private IDalamudPluginInterface? PluginInterface;

public void Initialize(DalamudPluginInterface pluginInterface)
public void Initialize(IDalamudPluginInterface pluginInterface)
{
PluginInterface = pluginInterface;
}
Expand Down
23 changes: 7 additions & 16 deletions WhoSaidWhatNow/Objects/ChatEntry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,13 @@
namespace WhoSaidWhatNow.Objects
{
//ChatEntry object
public class ChatEntry
public class ChatEntry(int senderId, Player sender, string message, XivChatType type, DateTime time)
{
public uint SenderID { get; set; }
public Player Sender { get; init; }
public string Message { get; init; }
public XivChatType Type { get; init; }
public DateTime Time { get; init; }

public ChatEntry(uint senderId, Player sender, string message, XivChatType type, DateTime time)
{
SenderID = senderId;
Sender = sender;
Type = type;
Time = time;
Message = message;
}
public int SenderID { get; set; } = senderId;
public Player Sender { get; init; } = sender;
public string Message { get; init; } = message;
public XivChatType Type { get; init; } = type;
public DateTime Time { get; init; } = time;

public string CreateMessage(string tag)
{
Expand All @@ -39,7 +30,7 @@ public string CreateMessage(string tag)
msg = String.Join(' ', this.Message.Split(' ').Skip(2).ToArray());
}

return (Plugin.Config.ShowTimestamp ? $"[{time}]" : String.Empty) + String.Format(tag, sender, msg).Trim();
return (Plugin.Config.ShowTimestamp ? $"[{time}]" : string.Empty) + string.Format(tag, sender, msg).Trim();
}

}
Expand Down
32 changes: 8 additions & 24 deletions WhoSaidWhatNow/Objects/Player.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Logging;
using FFXIVClientStructs.FFXIV.Common.Math;
using System;
using WhoSaidWhatNow.Services;
using WhoSaidWhatNow.Utils;

namespace WhoSaidWhatNow.Objects
{

/// <summary>
/// Player object
/// ID is the ObjectID from Dalamud, which is an uint
Expand Down Expand Up @@ -45,46 +42,33 @@ public Player(string name, string server, Vector4 nameColor, bool removeDisabled
NameColor = nameColor;
}

public Player(GameObject gameObject, bool removeDisabled = false)
public Player(IGameObject gameObject, bool removeDisabled = false)
{
ID = gameObject.ObjectId;
ID = gameObject.EntityId;
Name = gameObject.Name.ToString();
var player = PlayerUtils.CastPlayer(gameObject);
RemoveDisabled = removeDisabled;
TimeAdded = DateTime.UtcNow;

if (player != null)
{
Server = player.HomeWorld.GameData!.Name.ToString();
}
else
{
Server = "ServerNotFound";
}
Server = player != null ? player.HomeWorld.GameData!.Name.ToString() : "ServerNotFound";

NameColor = PlayerUtils.SetNameColor(Name);
}

public Player(PlayerCharacter playerCharacter, bool removeDisabled = false)
public Player(IPlayerCharacter playerCharacter, bool removeDisabled = false)
{
ID = playerCharacter.ObjectId;
ID = playerCharacter.EntityId;
Name = playerCharacter.Name.ToString();
RemoveDisabled = removeDisabled;
TimeAdded = DateTime.UtcNow;

if (playerCharacter != null)
{
Server = playerCharacter.HomeWorld.GameData!.Name.ToString();
}
else
{
Server = "ServerNotFound";
}
Server = playerCharacter.HomeWorld.GameData!.Name.ToString();
NameColor = PlayerUtils.SetNameColor(Name);
}

public string GetNameTag()
{
return Name + (Plugin.Config.ShowServer ? "" + Server : String.Empty);
return Name + (Plugin.Config.ShowServer ? "" + Server : string.Empty);
}
}
}
73 changes: 38 additions & 35 deletions WhoSaidWhatNow/Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,57 +18,54 @@ namespace WhoSaidWhatNow
{
public sealed class Plugin : IDalamudPlugin
{

public string Name => "Who Said What Now";
private const string COMMAND = "/whowhat";
public static Configuration Config = null!;
public static ConfigurationUtils ConfigHelper = null!;

public static Player? SelectedPlayer = null;
public static Player? CurrentPlayer = null;
public static List<Player> Players = new();
public static string FilterPlayers = "";
public static string FilterSearch = "";
public static Dictionary<String, (String NAME, Dictionary<Player, Boolean> PLAYERS)> Groups = new() { { "1", ("Group 1", Players.ToDictionary(p => p, p => false)) } };

public static Dictionary<String, (String NAME, Dictionary<Player, Boolean> PLAYERS)> Groups = new()
{ { "1", ("Group 1", Players.ToDictionary(p => p, p => false)) } };

public static SortedList<DateTime, ChatEntry> ChatEntries = new();

private WindowSystem WindowSystem { get; set; }
public MainWindow MainWindow { get; }
public ConfigWindow ConfigWindow { get; }

[PluginService]
[RequiredVersion("1.0")]
public static DalamudPluginInterface PluginInterface { get; private set; } = null!;
public static IDalamudPluginInterface PluginInterface { get; private set; } = null!;

[PluginService]
[RequiredVersion("1.0")]
public static ICommandManager CommandManager { get; private set; } = null!;

[PluginService]
[RequiredVersion("1.0")]
public static IDataManager DataManager { get; private set; } = null!;

[PluginService]
[RequiredVersion("1.0")]
public static ITargetManager TargetManager { get; private set; } = null!;

[PluginService]
[RequiredVersion("1.0")]
public static IClientState ClientState { get; private set; } = null!;

[PluginService]
[RequiredVersion("1.0")]
public static IChatGui ChatGui { get; private set; } = null!;

[PluginService]
[RequiredVersion("1.0")]
public static IObjectTable ObjectTable { get; private set; } = null!;

[PluginService]
[RequiredVersion("1.0")]
internal static IFramework Framework { get; private set; } = null!;

[PluginService]
public static IGameConfig GameConfig { get; private set; } = null!;

[PluginService]
[RequiredVersion("1.0")]
public static IPluginLog Logger { get; private set; } = null!;

public static FileDialogManager FileDialogManager { get; set; } = new FileDialogManager();
Expand All @@ -79,7 +76,6 @@ public sealed class Plugin : IDalamudPlugin

public Plugin()
{

// initiatize our configuration
try
{
Expand All @@ -90,7 +86,7 @@ public Plugin()
catch (Exception ex)
{
Logger.Error("Failed to load config so creating new one.", ex);
ChatGuiExtensions.PluginPrint(ChatGui, "Error loading config file. New one made.");
ChatGui.PluginPrint("Error loading config file. New one made.");
Config = new Configuration();
Config.Save();
Config.Initialize(PluginInterface);
Expand All @@ -107,14 +103,16 @@ public Plugin()
WindowSystem.AddWindow(MainWindow);

PluginInterface.UiBuilder.Draw += DrawUI;
PluginInterface.UiBuilder.OpenConfigUi += DrawConfigUI;
PluginInterface.UiBuilder.OpenConfigUi += ToggleConfigUI;
PluginInterface.UiBuilder.OpenMainUi += ToggleMainUI;
PluginInterface.UiBuilder.Draw += FileDialogManager.Draw;

// add events/listeners
ClientState.Login += OnLogin;
ClientState.Logout += OnLogout;
ChatListener = new ChatService(ChatGui);
PlayerService = new PlayerUtils();
Framework.Update += OnFrameworkUpdate;

// commands
CommandManager.AddHandler(COMMAND, new CommandInfo(OnCommand)
Expand All @@ -128,33 +126,39 @@ public Plugin()
{
Players.Clear();
Config.CurrentPlayer = string.Empty;
PlayerUtils.SetCurrentPlayer();
// PlayerUtils.SetCurrentPlayer();
PlayerUtils.CheckTrackedPlayers();
}
}
catch
{
Logger.Error("Plugin loaded and thought there was a character logged in, but there wasn't.");
}

}

//TODO: make sure we're disposing of everything we need to appropriately
public void Dispose()
{
ChatListener.Dispose();

PluginInterface.UiBuilder.Draw -= DrawUI;
PluginInterface.UiBuilder.OpenConfigUi -= DrawConfigUI;
PluginInterface.UiBuilder.OpenConfigUi -= ToggleConfigUI;
PluginInterface.UiBuilder.OpenMainUi -= ToggleMainUI;
PluginInterface.UiBuilder.Draw -= FileDialogManager.Draw;

WindowSystem.RemoveAllWindows();
ConfigWindow.Dispose();
MainWindow.Dispose();

CommandManager.RemoveHandler(COMMAND);

ClientState.Login -= OnLogin;
ClientState.Logout -= OnLogout;
Framework.Update -= OnFrameworkUpdate;
}

private void OnCommand(string command, string args)
{

if (args.Equals("on"))
{
ChatGui.Print("WhoWhat is ON.", "WhoWhat");
Expand All @@ -181,14 +185,13 @@ private void OnCommand(string command, string args)
ConfigWindow.IsOpen = true;
ChatGui.Print("WhoWhat refreshed. Most settings reset.", "WhoWhat");
}

else if (args.Equals("config"))
{
ConfigWindow.IsOpen = !ConfigWindow.IsOpen;
ConfigWindow.Toggle();
}
else
{
MainWindow.IsOpen = !MainWindow.IsOpen;
MainWindow.Toggle();
}
}

Expand All @@ -197,7 +200,6 @@ private void OnLogin()
{
Players.Clear();
Config.CurrentPlayer = string.Empty;
PlayerUtils.SetCurrentPlayer();
PlayerUtils.CheckTrackedPlayers();
}

Expand All @@ -209,20 +211,21 @@ private void OnLogout()
Players.Clear();
}

private void DrawUI()
{
WindowSystem.Draw();
}

public void DrawConfigUI()
{
ConfigWindow.IsOpen = true;
}
private void DrawUI() => WindowSystem.Draw();
public void ToggleConfigUI() => ConfigWindow.Toggle();
public void ToggleMainUI() => MainWindow.Toggle();

public void ToggleConfigUI()
private async void OnFrameworkUpdate(IFramework framework)
{
ConfigWindow.IsOpen = !ConfigWindow.IsOpen;
if (ClientState.LocalPlayer != null)
{
if (!ClientState.LocalPlayer.Name.ToString().Equals(Config.CurrentPlayer))
{
Config.CurrentPlayer = await framework.RunOnTick(() => ClientState.LocalPlayer?.Name.ToString()) ??
Config.CurrentPlayer;
CurrentPlayer = new Player(ClientState.LocalPlayer, true);
}
}
}

}
}
10 changes: 4 additions & 6 deletions WhoSaidWhatNow/Services/ChatService.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
using Dalamud.Game.Gui;
using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Logging;
using Dalamud.Plugin.Services;
using System;
using WhoSaidWhatNow.Objects;
using WhoSaidWhatNow.Utils;

namespace WhoSaidWhatNow.Services
{
Expand All @@ -32,14 +30,14 @@ public void Dispose()
gui!.ChatMessage -= OnChatMessage;
}

private void OnChatMessage(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled)
private void OnChatMessage(XivChatType type, int senderId, ref SeString sender, ref SeString message, ref bool isHandled)
{
if (Plugin.Config.Enabled == true)
{
var senderName = sender.ToString();
//The basic ToString here includes any friends list icons and the server name, so we have to do Contains() for now
//this would be gross if it was messages but it should be okay given a person will probably only have 4-5 players tracked a time
var result = Plugin.Players.Find(x => senderName.Contains(x.Name));
//this would be gross if it was messages but it should be okay given a person will probably only have 4-5 players tracked a time <- written by a past idiot
var result = PlayerUtils.GetCurrentAndPlayers().Find(x => senderName.Contains(x.Name));
//PluginLog.Debug("onchat message triggered" + senderName);

if (result != null)
Expand Down
2 changes: 1 addition & 1 deletion WhoSaidWhatNow/Utils/ChatUtils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public static void ShowMessage(KeyValuePair<DateTime, ChatEntry> c)
}
catch (Exception e)
{
PluginLog.LogError($"{e.Message} Unable to display message.");
Plugin.Logger.Error($"{e.Message} Unable to display message.");
}

}
Expand Down
4 changes: 2 additions & 2 deletions WhoSaidWhatNow/Utils/ConfigurationUtils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public static void refresh()
Plugin.Logger.Debug("refresh called");
Plugin.Players.Clear();
Plugin.Config.CurrentPlayer = string.Empty;
PlayerUtils.SetCurrentPlayer();
// PlayerUtils.SetCurrentPlayer();
PlayerUtils.CheckTrackedPlayers();
}

Expand All @@ -26,7 +26,7 @@ public static void reset()
Plugin.Players.Clear();
Plugin.ChatEntries.Clear();
Plugin.Config.CurrentPlayer = string.Empty;
PlayerUtils.SetCurrentPlayer();
// PlayerUtils.SetCurrentPlayer();
PlayerUtils.CheckTrackedPlayers();
}

Expand Down
Loading

0 comments on commit be834a9

Please sign in to comment.