Mod进阶教程2 监听与处理 - WorldBoxOpenMods/ModLoader GitHub Wiki
监听与处理
在NeoModLoader中引入了一个新的概念:监听与处理。这个概念的引入是为了解决部分常用事件的HarmonyPatch的冲突问题 以及一般的HarmonyPrefix、HarmonyPostfix带来的性能问题。
概览
在NeoModLoader.General.Event中, 提供了AbstractListener和AbstractHandler, 分别做为监听和处理的基类。
Listen和Handle的关系是一对多的关系,一个监听可以有多个处理,一个处理只能属于一个监听。
Listener会通过HarmonyTranspiler来注入依次调用各个处理器的代码。
具体的可以参考此处的代码:NeoModLoader.General.Event/CityCreateListener.cs
NeoModLoader提供的Handler都是抽象类,需要自行继承并实现抽象方法,然后通过对应监听器的RegisterHandler
静态函数注册到监听器中。
NeoModLoader提供的Listener和Handler
Listener | Handler | 说明 |
---|---|---|
CityCreateListener | CityCreateHandler | 城市创建 |
ClanCreateListener | ClanCreateHandler | 家族创建 |
CultureCreateListener | CultureCreateHandler | 文化创建 |
KingdomSetupListener | KingdomSetupHandler | 国家创建 |
PlotStartListener | PlotStartHandler | 事件开始 |
WarStartListener | WarStartHandler | 战争开始 |
WarEndListener | WarEndHandler | 战争结束 |
更多的监听器
- NeoModLoader提供了一个基类
AbstractListener
,可以通过继承这个类来实现自己的监听器。 - 在ISSUE中提出你的需求,会考虑将其加入到NeoModLoader中。
- 在PR中提出你的监听器,经过Review后将其加入到NeoModLoader中。