diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f36c27185..3a24e747e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,5 +1,5 @@ name: Build Dalamud -on: [push] +on: [push, pull_request] jobs: build: diff --git a/Dalamud.Injector/Dalamud.Injector.csproj b/Dalamud.Injector/Dalamud.Injector.csproj index 514b9681d..40a9f6d19 100644 --- a/Dalamud.Injector/Dalamud.Injector.csproj +++ b/Dalamud.Injector/Dalamud.Injector.csproj @@ -14,10 +14,10 @@ true - 4.7.22.0 - 4.7.22.0 + 4.8.0.0 + 4.8.0.0 XIVLauncher addon injection - 4.7.22.0 + 4.8.0.0 diff --git a/Dalamud/Dalamud.csproj b/Dalamud/Dalamud.csproj index e4466d4d5..376b8a8d3 100644 --- a/Dalamud/Dalamud.csproj +++ b/Dalamud/Dalamud.csproj @@ -14,9 +14,9 @@ true - 4.7.22.0 - 4.7.22.0 - 4.7.22.0 + 4.8.0.0 + 4.8.0 + 4.8.0.0 diff --git a/Dalamud/Game/ClientState/Actors/ActorTable.cs b/Dalamud/Game/ClientState/Actors/ActorTable.cs index 061f1b63b..65b874a00 100644 --- a/Dalamud/Game/ClientState/Actors/ActorTable.cs +++ b/Dalamud/Game/ClientState/Actors/ActorTable.cs @@ -1,9 +1,7 @@ using System; using System.Collections; using System.Diagnostics; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using System.Windows.Forms; using Dalamud.Game.ClientState.Actors.Types; using Dalamud.Game.ClientState.Actors.Types.NonPlayer; using Dalamud.Hooking; @@ -76,20 +74,20 @@ namespace Dalamud.Game.ClientState.Actors { if (!this.isReady) return null; - if (this.someActorTableAccessHook != null) { + if (this.someActorTableAccessHook != null) + { this.someActorTableAccessHook.Dispose(); this.someActorTableAccessHook = null; } if (index >= Length) return null; - - //Log.Information("Trying to get actor at {0}", index); + var tblIndex = this.realActorTablePtr + 8 + index * 8; var offset = Marshal.ReadIntPtr(tblIndex); - //Log.Information("Actor at {0}", offset.ToString()); + Log.Verbose("Actor at {0} for {1}", offset.ToInt64().ToString("X"), index); if (offset == IntPtr.Zero) return null; diff --git a/Dalamud/Plugin/PluginInstallerWindow.cs b/Dalamud/Plugin/PluginInstallerWindow.cs index 7931345ee..0c4d7474e 100644 --- a/Dalamud/Plugin/PluginInstallerWindow.cs +++ b/Dalamud/Plugin/PluginInstallerWindow.cs @@ -77,7 +77,10 @@ namespace Dalamud.Plugin ImGui.PushID(pluginDefinition.InternalName + pluginDefinition.AssemblyVersion); - if (ImGui.CollapsingHeader(pluginDefinition.Name)) { + var isInstalled = this.manager.Plugins.Where(x => x.Definition != null).Any( + x => x.Definition.InternalName == pluginDefinition.InternalName); + + if (ImGui.CollapsingHeader(pluginDefinition.Name + (isInstalled ? " (installed)" : string.Empty))) { ImGui.Indent(); ImGui.Text(pluginDefinition.Name); @@ -86,9 +89,6 @@ namespace Dalamud.Plugin ImGui.Text(pluginDefinition.Description); - var isInstalled = this.manager.Plugins.Where(x => x.Definition != null).Any( - x => x.Definition.InternalName == pluginDefinition.InternalName); - if (!isInstalled) { if (this.installStatus == PluginInstallStatus.InProgress) { ImGui.Button("Install in progress..."); diff --git a/Dalamud/Plugin/PluginRepository.cs b/Dalamud/Plugin/PluginRepository.cs index 0f386b1d1..af8ff3326 100644 --- a/Dalamud/Plugin/PluginRepository.cs +++ b/Dalamud/Plugin/PluginRepository.cs @@ -142,11 +142,6 @@ namespace Dalamud.Plugin // DisablePlugin() below immediately creates a .disabled file anyway, but will fail // with an exception if we try to do it twice in row like this - // TODO: not sure if doing this for all versions is really necessary, since the - // others really needed to be disabled before anyway - //foreach (var sortedVersion in sortedVersions) { - // File.Create(Path.Combine(sortedVersion.FullName, ".disabled")); - //} if (!dryRun) { @@ -161,6 +156,18 @@ namespace Dalamud.Plugin hasError = true; } + try { + // Just to be safe + foreach (var sortedVersion in sortedVersions) + { + var disabledFile = new FileInfo(Path.Combine(sortedVersion.FullName, ".disabled")); + if (!disabledFile.Exists) + disabledFile.Create(); + } + } catch (Exception ex) { + Log.Error(ex, "Plugin disable failed"); + } + var installSuccess = InstallPlugin(remoteInfo); if (installSuccess)