This commit is contained in:
goat 2021-08-22 23:14:24 +02:00
commit 764f9614ab
No known key found for this signature in database
GPG key ID: F18F057873895461
9 changed files with 40 additions and 13 deletions

View file

@ -143,7 +143,7 @@ namespace Dalamud
Service<NetworkHandlers>.Set(); Service<NetworkHandlers>.Set();
Log.Information("[T2] NH OK!"); Log.Information("[T2] NH OK!");
Service<ClientState>.Set(); var clientState = Service<ClientState>.Set();
Log.Information("[T2] CS OK!"); Log.Information("[T2] CS OK!");
var localization = Service<Localization>.Set(new Localization(Path.Combine(this.AssetDirectory.FullName, "UIRes", "loc", "dalamud"), "dalamud_")); var localization = Service<Localization>.Set(new Localization(Path.Combine(this.AssetDirectory.FullName, "UIRes", "loc", "dalamud"), "dalamud_"));
@ -210,7 +210,7 @@ namespace Dalamud
Log.Information("[T2] CH OK!"); Log.Information("[T2] CH OK!");
Service<ClientState>.Set().Enable(); clientState.Enable();
Log.Information("[T2] CS ENABLE!"); Log.Information("[T2] CS ENABLE!");
Service<DalamudSystemMenu>.Set().Enable(); Service<DalamudSystemMenu>.Set().Enable();

View file

@ -88,6 +88,11 @@ namespace Dalamud.Game.ClientState.Objects.Types
/// </summary> /// </summary>
public override uint TargetObjectId => this.Struct->GameObject.TargetObjectID; public override uint TargetObjectId => this.Struct->GameObject.TargetObjectID;
/// <summary>
/// Gets the name ID of the character.
/// </summary>
public uint NameId => this.Struct->NameID;
/// <summary> /// <summary>
/// Gets the status flags. /// Gets the status flags.
/// </summary> /// </summary>

View file

@ -91,7 +91,7 @@ namespace Dalamud.Game.ClientState.Objects.Types
/// <summary> /// <summary>
/// Gets the name of this <see cref="GameObject" />. /// Gets the name of this <see cref="GameObject" />.
/// </summary> /// </summary>
public SeString Name => MemoryHelper.ReadSeString((IntPtr)this.Struct->Name, 32); public SeString Name => MemoryHelper.ReadSeString((IntPtr)this.Struct->Name, 64);
/// <summary> /// <summary>
/// Gets the object ID of this <see cref="GameObject" />. /// Gets the object ID of this <see cref="GameObject" />.

View file

@ -107,7 +107,6 @@ namespace Dalamud.Game.Gui.FlyText
/// </summary> /// </summary>
public void Dispose() public void Dispose()
{ {
this.createFlyTextHook.Disable();
this.createFlyTextHook.Dispose(); this.createFlyTextHook.Dispose();
} }

View file

@ -227,7 +227,7 @@ namespace Dalamud.Hooking
{ {
if (this.IsDisposed) if (this.IsDisposed)
{ {
throw new ObjectDisposedException("Hook is already disposed."); throw new ObjectDisposedException(message: "Hook is already disposed", null);
} }
} }
} }

View file

@ -52,7 +52,7 @@ namespace Dalamud.IoC.Internal
return (parameterType, requiredVersion); return (parameterType, requiredVersion);
}); });
var versionCheck = parameters.Any(p => var versionCheck = parameters.All(p =>
{ {
// if there's no required version, ignore it // if there's no required version, ignore it
if (p.requiredVersion == null) if (p.requiredVersion == null)

View file

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -123,6 +124,16 @@ namespace Dalamud.Plugin
/// </summary> /// </summary>
public XivChatType GeneralChatType { get; private set; } public XivChatType GeneralChatType { get; private set; }
/// <summary>
/// Gets a list of installed plugin names.
/// </summary>
public List<string> PluginNames => Service<PluginManager>.Get().InstalledPlugins.Select(p => p.Manifest.Name).ToList();
/// <summary>
/// Gets a list of installed plugin internal names.
/// </summary>
public List<string> PluginInternalNames => Service<PluginManager>.Get().InstalledPlugins.Select(p => p.Manifest.InternalName).ToList();
#region Configuration #region Configuration
/// <summary> /// <summary>
@ -210,7 +221,8 @@ namespace Dalamud.Plugin
#endregion #endregion
/// <summary> /// <summary>
/// Unregister your plugin and dispose all references. You have to call this when your IDalamudPlugin is disposed. /// Unregister your plugin and dispose all references.
/// You have to call this when your IDalamudPlugin is disposed.
/// </summary> /// </summary>
public void Dispose() public void Dispose()
{ {

View file

@ -55,11 +55,6 @@ namespace Dalamud.Plugin.Internal
{ {
// BadImageFormatException // BadImageFormatException
this.pluginAssembly = this.loader.LoadDefaultAssembly(); this.pluginAssembly = this.loader.LoadDefaultAssembly();
// InvalidOperationException
this.pluginType = this.pluginAssembly.GetTypes().First(type => type.IsAssignableTo(typeof(IDalamudPlugin)));
assemblyVersion = this.pluginAssembly.GetName().Version;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -67,10 +62,23 @@ namespace Dalamud.Plugin.Internal
this.pluginType = null; this.pluginType = null;
this.loader.Dispose(); this.loader.Dispose();
Log.Error(ex, $"Not a plugin: {this.DllFile.Name}"); Log.Error(ex, $"Not a plugin: {this.DllFile.FullName}");
throw new InvalidPluginException(this.DllFile); throw new InvalidPluginException(this.DllFile);
} }
this.pluginType = this.pluginAssembly.GetTypes().FirstOrDefault(type => type.IsAssignableTo(typeof(IDalamudPlugin)));
if (this.pluginType == default)
{
this.pluginAssembly = null;
this.pluginType = null;
this.loader.Dispose();
Log.Error($"Nothing inherits from IDalamudPlugin: {this.DllFile.FullName}");
throw new InvalidPluginException(this.DllFile);
}
assemblyVersion = this.pluginAssembly.GetName().Version;
// Files that may or may not exist // Files that may or may not exist
this.manifestFile = LocalPluginManifest.GetManifestFile(this.DllFile); this.manifestFile = LocalPluginManifest.GetManifestFile(this.DllFile);
this.disabledFile = LocalPluginManifest.GetDisabledFile(this.DllFile); this.disabledFile = LocalPluginManifest.GetDisabledFile(this.DllFile);

View file

@ -42,6 +42,9 @@ namespace Dalamud
/// <returns>The set object.</returns> /// <returns>The set object.</returns>
public static T Set() public static T Set()
{ {
if (instance != null)
throw new Exception($"Service {typeof(T).FullName} was set twice");
var obj = (T?)Activator.CreateInstance(typeof(T), true); var obj = (T?)Activator.CreateInstance(typeof(T), true);
SetInstanceObject(obj); SetInstanceObject(obj);