SlashNephy / Dalamud.Divination.Common

Repository moved -> https://github.com/SlashNephy/Divination
MIT License
0 stars 0 forks source link

設定周りがやばい #5

Closed SlashNephy closed 2 years ago

SlashNephy commented 2 years ago
SlashNephy commented 2 years ago

https://github.com/horoscope-dev/Dalamud.Divination.Common/commit/87cd3936cc1fb828715f3e6f9070187b928d62e1 でなおったかも

a1hena commented 2 years ago

試します

a1hena commented 2 years ago

↑の修正だと ConfigManagerIDivinationPluginApi<TConfiguration, TDefinition> を渡す際に as で TDefinition を無理矢理 EmptyDefinitionContainer に変換しようとしてて、そこでNREが発生してた。 ( DefinitionContainer の派生型は EmptyDefinitionContainer から派生しているわけではないので変換が行えず、 ConfigManager に null が渡ってたと考えられる) (意訳)

対応内容

https://github.com/horoscope-dev/Dalamud.Divination.Common/commit/1488b4a4b4eeffdb5b40c4ff19fd7055bc75724b でCommon側を修正、プラグイン側に以下の感じの対応をすることで正常にConfigまわりが動作した

public class TestPlugin: DivinationPlugin<TestPlugin, PluginConfig>
{
    public override PluginConfig Config { get; } = null!;

    public TestPlugin(DalamudPluginInterface pluginInterface) : base(pluginInterface)
    {
      Config = pluginInterface.GetPluginConfig() as PluginConfig ?? new PluginConfig();
    }

    protected override void ReleaseManaged()
    {
        base.ReleaseManaged();
        Instance.Dalamud.PluginInterface.SavePluginConfig(Config);
    }
}

PluginConfigWindows は Save() が消失したので、

-Save()
+TestPlugin.Instance.Dalamud.PluginInterface.SavePluginConfig(Config);

で対応。

/cmd config HogeConfigKey fuga

等のコマンド実行でconfig.jsonに保存はされないのでConfigWindowsをひらいてSaveする必要あり。困ったら考える程度のレベル。

a1hena commented 2 years ago

完全解決です感謝します