BUTR/Bannerlord.UIExtenderEx

View on GitHub
docs/articles/runtime/PrefabPatching.puml

Summary

Maintainability
Test Coverage
@startuml

actor Game

Game -> SubModule: OnBeforeInitialModuleScreenSetAsRoot()
SubModule -> UIExtender: Register()
UIExtender -> PrefabComponent: Register(Type[] prefabTypes)
PrefabComponent --> UIExtender
UIExtender --> SubModule
SubModule --> Game

...

Game -> WidgetPrefab: LoadFrom()
WidgetPrefab -> WidgetPrefabPatch: Harmony intercepts LoadFrom()
WidgetPrefabPatch -> PrefabComponent: ProcessMovieIfNeeded()
loop All registered Prefab
    PrefabComponent -> Prefab: Apply XML transformation
    Prefab --> PrefabComponent
end
PrefabComponent --> WidgetPrefabPatch
WidgetPrefabPatch --> WidgetPrefab
WidgetPrefab --> Game

@enduml