ElvUI WindTools

ElvUI WindTools

3M Downloads

有关self.db = E.db.WindTools所引起的一系列通病

someblu opened this issue · 3 comments

commented

我记得我第一次在GitHub merge的branch就是为了解决self.db = E.db.WindTools缓存数据无法在配置文件更新后更新内存地址的问题。当时是去掉了缓存,直接调用绝对路径。
刚刚有发现ElvUI在切换配置文件的时候会触发三个事件,或者说AceDB这个库在更新配置文件的时候会触发三个事件OnProfileChangedOnProfileCopied以及OnProfileReset
因此一个通用的解决方案就是在core.lua中注册三个事件,批量更新各个模块的数据缓存的地址。

commented

在最近的几次commit中,已经成功的让插件部分支持热更新。
这里提到的部分支持,指的是只支持在切换配置文件后,模块开关没有变动的情况。
暂时不支持模块开关由开转为关以及由关变开的切换。
完整的支持热更新远比想象中的要麻烦的多,似乎提示用户在必要的时候重载UI是个更简单易行的方案。

commented

为了支持开关切换,需要做资源回收,包括hook/unhook,register/unregister,就需要抛弃wow自带函数转而使用AceHook,AceEvent,又是一个大工程。。。

commented

如果完整的支持了热更新,那么设置界面切换开关后的重载也就没有了必要,应该算是一大利好了。