有关self.db = E.db.WindTools所引起的一系列通病
someblu opened this issue · 3 comments
我记得我第一次在GitHub merge的branch就是为了解决self.db = E.db.WindTools
缓存数据无法在配置文件更新后更新内存地址的问题。当时是去掉了缓存,直接调用绝对路径。
刚刚有发现ElvUI在切换配置文件的时候会触发三个事件,或者说AceDB这个库在更新配置文件的时候会触发三个事件OnProfileChanged和OnProfileCopied以及OnProfileReset
因此一个通用的解决方案就是在core.lua中注册三个事件,批量更新各个模块的数据缓存的地址。
在最近的几次commit中,已经成功的让插件部分支持热更新。
这里提到的部分支持,指的是只支持在切换配置文件后,模块开关没有变动的情况。
暂时不支持模块开关由开转为关以及由关变开的切换。
完整的支持热更新远比想象中的要麻烦的多,似乎提示用户在必要的时候重载UI是个更简单易行的方案。
为了支持开关切换,需要做资源回收,包括hook/unhook,register/unregister,就需要抛弃wow自带函数转而使用AceHook,AceEvent,又是一个大工程。。。