mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-13 12:14:16 +01:00
Merge branch 'master' into profiles
This commit is contained in:
commit
9b3990e5c7
4 changed files with 46 additions and 40 deletions
|
|
@ -8,7 +8,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Label="Feature">
|
<PropertyGroup Label="Feature">
|
||||||
<DalamudVersion>7.5.0.1</DalamudVersion>
|
<DalamudVersion>7.5.0.2</DalamudVersion>
|
||||||
<Description>XIV Launcher addon framework</Description>
|
<Description>XIV Launcher addon framework</Description>
|
||||||
<AssemblyVersion>$(DalamudVersion)</AssemblyVersion>
|
<AssemblyVersion>$(DalamudVersion)</AssemblyVersion>
|
||||||
<Version>$(DalamudVersion)</Version>
|
<Version>$(DalamudVersion)</Version>
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
using Dalamud.Configuration.Internal;
|
using Dalamud.Configuration.Internal;
|
||||||
using Dalamud.Logging.Internal;
|
using Dalamud.Logging.Internal;
|
||||||
|
using Dalamud.Plugin.Internal;
|
||||||
using Dalamud.Support;
|
using Dalamud.Support;
|
||||||
using Dalamud.Utility;
|
using Dalamud.Utility;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
@ -325,10 +326,29 @@ public sealed class EntryPoint
|
||||||
info = $"{ex.TargetSite.DeclaringType.Assembly.GetName().Name}, {ex.TargetSite.DeclaringType.FullName}::{ex.TargetSite.Name}";
|
info = $"{ex.TargetSite.DeclaringType.Assembly.GetName().Name}, {ex.TargetSite.DeclaringType.FullName}::{ex.TargetSite.Name}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var pluginInfo = string.Empty;
|
||||||
|
var supportText = ", please visit us on Discord for more help.";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var pm = Service<PluginManager>.GetNullable();
|
||||||
|
var plugin = pm?.FindCallingPlugin(new StackTrace(ex));
|
||||||
|
if (plugin != null)
|
||||||
|
{
|
||||||
|
pluginInfo = $"Plugin that caused this:\n{plugin.Name}\n\nClick \"Yes\" and remove it.\n\n";
|
||||||
|
|
||||||
|
if (plugin.Manifest.IsThirdParty)
|
||||||
|
supportText = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignored
|
||||||
|
}
|
||||||
|
|
||||||
const MessageBoxType flags = NativeFunctions.MessageBoxType.YesNo | NativeFunctions.MessageBoxType.IconError | NativeFunctions.MessageBoxType.SystemModal;
|
const MessageBoxType flags = NativeFunctions.MessageBoxType.YesNo | NativeFunctions.MessageBoxType.IconError | NativeFunctions.MessageBoxType.SystemModal;
|
||||||
var result = MessageBoxW(
|
var result = MessageBoxW(
|
||||||
Process.GetCurrentProcess().MainWindowHandle,
|
Process.GetCurrentProcess().MainWindowHandle,
|
||||||
$"An internal error in a Dalamud plugin occurred.\nThe game must close.\n\nType: {ex.GetType().Name}\n{info}\n\nMore information has been recorded separately, please contact us in our Discord or on GitHub.\n\nDo you want to disable all plugins the next time you start the game?",
|
$"An internal error in a Dalamud plugin occurred.\nThe game must close.\n\n{ex.GetType().Name}\n{info}\n\n{pluginInfo}More information has been recorded separately{supportText}.\n\nDo you want to disable all plugins the next time you start the game?",
|
||||||
"Dalamud",
|
"Dalamud",
|
||||||
flags);
|
flags);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,6 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
private bool feedbackModalIncludeException = false;
|
private bool feedbackModalIncludeException = false;
|
||||||
private PluginManifest? feedbackPlugin = null;
|
private PluginManifest? feedbackPlugin = null;
|
||||||
private bool feedbackIsTesting = false;
|
private bool feedbackIsTesting = false;
|
||||||
private bool feedbackIsAnonymous = false;
|
|
||||||
|
|
||||||
private int updatePluginCount = 0;
|
private int updatePluginCount = 0;
|
||||||
private List<PluginUpdateStatus>? updatedPlugins;
|
private List<PluginUpdateStatus>? updatedPlugins;
|
||||||
|
|
@ -789,23 +788,6 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
|
|
||||||
ImGui.Spacing();
|
ImGui.Spacing();
|
||||||
|
|
||||||
if (ImGui.Checkbox(Locs.FeedbackModal_ContactAnonymous, ref this.feedbackIsAnonymous))
|
|
||||||
{
|
|
||||||
if (this.feedbackIsAnonymous)
|
|
||||||
this.feedbackModalContact = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.feedbackIsAnonymous)
|
|
||||||
{
|
|
||||||
ImGui.BeginDisabled();
|
|
||||||
ImGui.InputText(Locs.FeedbackModal_ContactInformation, ref this.feedbackModalContact, 0);
|
|
||||||
ImGui.EndDisabled();
|
|
||||||
ImGui.PushStyleColor(ImGuiCol.Text, ImGuiColors.DalamudRed);
|
|
||||||
ImGui.Text(Locs.FeedbackModal_ContactAnonymousWarning);
|
|
||||||
ImGui.PopStyleColor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ImGui.InputText(Locs.FeedbackModal_ContactInformation, ref this.feedbackModalContact, 100);
|
ImGui.InputText(Locs.FeedbackModal_ContactInformation, ref this.feedbackModalContact, 100);
|
||||||
|
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
|
|
@ -820,10 +802,7 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
|
|
||||||
ImGui.Text(Locs.FeedbackModal_ContactInformationHelp);
|
ImGui.Text(Locs.FeedbackModal_ContactInformationHelp);
|
||||||
|
|
||||||
ImGui.PushStyleColor(ImGuiCol.Text, ImGuiColors.DalamudRed);
|
ImGui.TextColored(ImGuiColors.DalamudRed, Locs.FeedbackModal_ContactInformationWarning);
|
||||||
ImGui.Text(Locs.FeedbackModal_ContactInformationWarning);
|
|
||||||
ImGui.PopStyleColor();
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui.Spacing();
|
ImGui.Spacing();
|
||||||
|
|
||||||
|
|
@ -839,7 +818,7 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
|
|
||||||
if (ImGui.Button(Locs.ErrorModalButton_Ok, new Vector2(buttonWidth, 40)))
|
if (ImGui.Button(Locs.ErrorModalButton_Ok, new Vector2(buttonWidth, 40)))
|
||||||
{
|
{
|
||||||
if (!this.feedbackIsAnonymous && string.IsNullOrWhiteSpace(this.feedbackModalContact))
|
if (string.IsNullOrWhiteSpace(this.feedbackModalContact))
|
||||||
{
|
{
|
||||||
this.ShowErrorModal(Locs.FeedbackModal_ContactInformationRequired)
|
this.ShowErrorModal(Locs.FeedbackModal_ContactInformationRequired)
|
||||||
.ContinueWith(_ =>
|
.ContinueWith(_ =>
|
||||||
|
|
@ -905,7 +884,6 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
this.feedbackModalBody = string.Empty;
|
this.feedbackModalBody = string.Empty;
|
||||||
this.feedbackModalContact = Service<DalamudConfiguration>.Get().LastFeedbackContactDetails;
|
this.feedbackModalContact = Service<DalamudConfiguration>.Get().LastFeedbackContactDetails;
|
||||||
this.feedbackModalIncludeException = false;
|
this.feedbackModalIncludeException = false;
|
||||||
this.feedbackIsAnonymous = false;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -3318,7 +3296,7 @@ internal class PluginInstallerWindow : Window, IDisposable
|
||||||
|
|
||||||
public static string FeedbackModal_ContactInformationWarning => Loc.Localize("InstallerFeedbackContactInfoWarning", "Do not submit in-game character names.");
|
public static string FeedbackModal_ContactInformationWarning => Loc.Localize("InstallerFeedbackContactInfoWarning", "Do not submit in-game character names.");
|
||||||
|
|
||||||
public static string FeedbackModal_ContactInformationRequired => Loc.Localize("InstallerFeedbackContactInfoRequired", "Contact information has not been provided. If you do not want to provide contact information, tick on \"{0}\" above.").Format(FeedbackModal_ContactAnonymous);
|
public static string FeedbackModal_ContactInformationRequired => Loc.Localize("InstallerFeedbackContactInfoRequired", "Contact information has not been provided. We require contact information to respond to questions, or to request additional information to troubleshoot problems.");
|
||||||
|
|
||||||
public static string FeedbackModal_ContactInformationDiscordButton => Loc.Localize("ContactInformationDiscordButton", "Join Goat Place Discord");
|
public static string FeedbackModal_ContactInformationDiscordButton => Loc.Localize("ContactInformationDiscordButton", "Join Goat Place Discord");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1300,14 +1300,14 @@ Thanks and have fun!";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get the plugin that called this method by walking the stack,
|
/// Get the plugin that called this method by walking the provided stack trace,
|
||||||
/// or null, if it cannot be determined.
|
/// or null, if it cannot be determined.
|
||||||
/// At the time, this is naive and shouldn't be used for security-critical checks.
|
/// At the time, this is naive and shouldn't be used for security-critical checks.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="trace">The trace to walk.</param>
|
||||||
/// <returns>The calling plugin, or null.</returns>
|
/// <returns>The calling plugin, or null.</returns>
|
||||||
public LocalPlugin? FindCallingPlugin()
|
public LocalPlugin? FindCallingPlugin(StackTrace trace)
|
||||||
{
|
{
|
||||||
var trace = new StackTrace();
|
|
||||||
foreach (var frame in trace.GetFrames())
|
foreach (var frame in trace.GetFrames())
|
||||||
{
|
{
|
||||||
var declaringType = frame.GetMethod()?.DeclaringType;
|
var declaringType = frame.GetMethod()?.DeclaringType;
|
||||||
|
|
@ -1328,6 +1328,14 @@ Thanks and have fun!";
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the plugin that called this method by walking the stack,
|
||||||
|
/// or null, if it cannot be determined.
|
||||||
|
/// At the time, this is naive and shouldn't be used for security-critical checks.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>The calling plugin, or null.</returns>
|
||||||
|
public LocalPlugin? FindCallingPlugin() => this.FindCallingPlugin(new StackTrace());
|
||||||
|
|
||||||
private void DetectAvailablePluginUpdates()
|
private void DetectAvailablePluginUpdates()
|
||||||
{
|
{
|
||||||
var updatablePlugins = new List<AvailablePluginUpdate>();
|
var updatablePlugins = new List<AvailablePluginUpdate>();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue