BUTR/Bannerlord.UIExtenderEx

View on GitHub
docs/articles/runtime/Overview.svg

Summary

Maintainability
Test Coverage
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="539" height="558" contentStyleType="text/css" preserveAspectRatio="none" style="width:539px;height:558px;background:#fff" version="1.1" viewBox="0 0 539 558" zoomAndPan="magnify"><g><g id="elem_UIExtender"><rect id="UIExtender" width="100" height="66.621" x="188" y="7" fill="#F1F1F1" codeLine="2" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="203" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M205.7656,18.875 Q205.9219,18.6563 206.1094,18.5469 Q206.2969,18.4375 206.5156,18.4375 Q206.8906,18.4375 207.125,18.7031 Q207.3594,18.9531 207.3594,19.5625 L207.3594,21.0156 Q207.3594,21.625 207.125,21.8906 Q206.8906,22.1563 206.5156,22.1563 Q206.1719,22.1563 205.9688,21.9531 Q205.7656,21.7656 205.6563,21.25 Q205.6094,20.8906 205.4219,20.7031 Q205.0938,20.3281 204.4844,20.1094 Q203.875,19.8906 203.25,19.8906 Q202.4844,19.8906 201.8438,20.2188 Q201.2188,20.5469 200.7188,21.2969 Q200.2344,22.0469 200.2344,23.0781 L200.2344,24.1719 Q200.2344,25.4063 201.125,26.2344 Q202.0156,27.0469 203.6094,27.0469 Q204.5469,27.0469 205.2031,26.7969 Q205.5938,26.6406 206.0156,26.2031 Q206.2813,25.9375 206.4219,25.8594 Q206.5781,25.7813 206.7813,25.7813 Q207.1094,25.7813 207.3594,26.0469 Q207.625,26.2969 207.625,26.6406 Q207.625,26.9844 207.2813,27.3906 Q206.7813,27.9688 205.9844,28.2969 Q204.9063,28.75 203.6094,28.75 Q202.0938,28.75 200.8906,28.125 Q199.9063,27.625 199.2188,26.5625 Q198.5313,25.4844 198.5313,24.2031 L198.5313,23.0469 Q198.5313,21.7188 199.1406,20.5781 Q199.7656,19.4219 200.8594,18.8125 Q201.9531,18.1875 203.1875,18.1875 Q203.9219,18.1875 204.5625,18.3594 Q205.2188,18.5156 205.7656,18.875 Z"/><text x="217" y="28.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="68">UIExtender</text><line style="stroke:#181818;stroke-width:.5" x1="189" x2="287" y1="39" y2="39"/><rect width="6" height="6" x="196" fill="none" style="stroke:#c82930;stroke-width:1" y="50.81"/><text x="208" y="58.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="55">_runtime</text><line style="stroke:#181818;stroke-width:.5" x1="189" x2="287" y1="65.621" y2="65.621"/></g><g id="elem_UIExtenderRuntime"><rect id="UIExtenderRuntime" width="152" height="66.621" x="162" y="134" fill="#F1F1F1" codeLine="6" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="177" cy="150" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M179.7656,145.875 Q179.9219,145.6563 180.1094,145.5469 Q180.2969,145.4375 180.5156,145.4375 Q180.8906,145.4375 181.125,145.7031 Q181.3594,145.9531 181.3594,146.5625 L181.3594,148.0156 Q181.3594,148.625 181.125,148.8906 Q180.8906,149.1563 180.5156,149.1563 Q180.1719,149.1563 179.9688,148.9531 Q179.7656,148.7656 179.6563,148.25 Q179.6094,147.8906 179.4219,147.7031 Q179.0938,147.3281 178.4844,147.1094 Q177.875,146.8906 177.25,146.8906 Q176.4844,146.8906 175.8438,147.2188 Q175.2188,147.5469 174.7188,148.2969 Q174.2344,149.0469 174.2344,150.0781 L174.2344,151.1719 Q174.2344,152.4063 175.125,153.2344 Q176.0156,154.0469 177.6094,154.0469 Q178.5469,154.0469 179.2031,153.7969 Q179.5938,153.6406 180.0156,153.2031 Q180.2813,152.9375 180.4219,152.8594 Q180.5781,152.7813 180.7813,152.7813 Q181.1094,152.7813 181.3594,153.0469 Q181.625,153.2969 181.625,153.6406 Q181.625,153.9844 181.2813,154.3906 Q180.7813,154.9688 179.9844,155.2969 Q178.9063,155.75 177.6094,155.75 Q176.0938,155.75 174.8906,155.125 Q173.9063,154.625 173.2188,153.5625 Q172.5313,152.4844 172.5313,151.2031 L172.5313,150.0469 Q172.5313,148.7188 173.1406,147.5781 Q173.7656,146.4219 174.8594,145.8125 Q175.9531,145.1875 177.1875,145.1875 Q177.9219,145.1875 178.5625,145.3594 Q179.2188,145.5156 179.7656,145.875 Z"/><text x="191" y="155.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="120">UIExtenderRuntime</text><line style="stroke:#181818;stroke-width:.5" x1="163" x2="313" y1="166" y2="166"/><ellipse cx="173" cy="180.81" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="182" y="185.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="82">ModuleName</text><line style="stroke:#181818;stroke-width:.5" x1="163" x2="313" y1="192.621" y2="192.621"/></g><g id="elem_PrefabComponent"><rect id="PrefabComponent" width="180" height="196.969" x="9" y="307.5" fill="#F1F1F1" codeLine="10" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="38.85" cy="323.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M41.6156,319.375 Q41.7719,319.1563 41.9594,319.0469 Q42.1469,318.9375 42.3656,318.9375 Q42.7406,318.9375 42.975,319.2031 Q43.2094,319.4531 43.2094,320.0625 L43.2094,321.5156 Q43.2094,322.125 42.975,322.3906 Q42.7406,322.6563 42.3656,322.6563 Q42.0219,322.6563 41.8188,322.4531 Q41.6156,322.2656 41.5063,321.75 Q41.4594,321.3906 41.2719,321.2031 Q40.9438,320.8281 40.3344,320.6094 Q39.725,320.3906 39.1,320.3906 Q38.3344,320.3906 37.6938,320.7188 Q37.0688,321.0469 36.5688,321.7969 Q36.0844,322.5469 36.0844,323.5781 L36.0844,324.6719 Q36.0844,325.9063 36.975,326.7344 Q37.8656,327.5469 39.4594,327.5469 Q40.3969,327.5469 41.0531,327.2969 Q41.4438,327.1406 41.8656,326.7031 Q42.1313,326.4375 42.2719,326.3594 Q42.4281,326.2813 42.6313,326.2813 Q42.9594,326.2813 43.2094,326.5469 Q43.475,326.7969 43.475,327.1406 Q43.475,327.4844 43.1313,327.8906 Q42.6313,328.4688 41.8344,328.7969 Q40.7563,329.25 39.4594,329.25 Q37.9438,329.25 36.7406,328.625 Q35.7563,328.125 35.0688,327.0625 Q34.3813,325.9844 34.3813,324.7031 L34.3813,323.5469 Q34.3813,322.2188 34.9906,321.0781 Q35.6156,319.9219 36.7094,319.3125 Q37.8031,318.6875 39.0375,318.6875 Q39.7719,318.6875 40.4125,318.8594 Q41.0688,319.0156 41.6156,319.375 Z"/><text x="56.15" y="329.297" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="115">PrefabComponent</text><line style="stroke:#181818;stroke-width:.5" x1="10" x2="188" y1="339.5" y2="339.5"/><rect width="6" height="6" x="17" fill="none" style="stroke:#c82930;stroke-width:1" y="351.31"/><text x="29" y="358.607" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="90">_moduleName</text><rect width="6" height="6" x="17" fill="none" style="stroke:#c82930;stroke-width:1" y="369.932"/><text x="29" y="377.228" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96">_moviePatches</text><rect width="6" height="6" x="17" fill="none" style="stroke:#c82930;stroke-width:1" y="388.553"/><text x="29" y="395.85" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="110">_enabledPatches</text><line style="stroke:#181818;stroke-width:.5" x1="10" x2="188" y1="403.363" y2="403.363"/><polygon fill="#4177AF" points="20 414.174 16 420.174 24 420.174" style="stroke:#1963a0;stroke-width:1"/><text x="29" y="422.471" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="99">RegisterPatch()</text><polygon fill="#4177AF" points="20 432.795 16 438.795 24 438.795" style="stroke:#1963a0;stroke-width:1"/><text x="29" y="441.092" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76">Deregister()</text><polygon fill="#4177AF" points="20 451.416 16 457.416 24 457.416" style="stroke:#1963a0;stroke-width:1"/><text x="29" y="459.713" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="54">Enable()</text><polygon fill="#4177AF" points="20 470.037 16 476.037 24 476.037" style="stroke:#1963a0;stroke-width:1"/><text x="29" y="478.334" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="57">Disable()</text><polygon fill="#4177AF" points="20 488.658 16 494.658 24 494.658" style="stroke:#1963a0;stroke-width:1"/><text x="29" y="496.955" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="154">ProcessMovieIfNeeded()</text></g><g id="elem_ViewModelComponent"><rect id="ViewModelComponent" width="308" height="290.074" x="224" y="261" fill="#F1F1F1" codeLine="21" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="303.75" cy="277" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M306.5156,272.875 Q306.6719,272.6563 306.8594,272.5469 Q307.0469,272.4375 307.2656,272.4375 Q307.6406,272.4375 307.875,272.7031 Q308.1094,272.9531 308.1094,273.5625 L308.1094,275.0156 Q308.1094,275.625 307.875,275.8906 Q307.6406,276.1563 307.2656,276.1563 Q306.9219,276.1563 306.7188,275.9531 Q306.5156,275.7656 306.4063,275.25 Q306.3594,274.8906 306.1719,274.7031 Q305.8438,274.3281 305.2344,274.1094 Q304.625,273.8906 304,273.8906 Q303.2344,273.8906 302.5938,274.2188 Q301.9688,274.5469 301.4688,275.2969 Q300.9844,276.0469 300.9844,277.0781 L300.9844,278.1719 Q300.9844,279.4063 301.875,280.2344 Q302.7656,281.0469 304.3594,281.0469 Q305.2969,281.0469 305.9531,280.7969 Q306.3438,280.6406 306.7656,280.2031 Q307.0313,279.9375 307.1719,279.8594 Q307.3281,279.7813 307.5313,279.7813 Q307.8594,279.7813 308.1094,280.0469 Q308.375,280.2969 308.375,280.6406 Q308.375,280.9844 308.0313,281.3906 Q307.5313,281.9688 306.7344,282.2969 Q305.6563,282.75 304.3594,282.75 Q302.8438,282.75 301.6406,282.125 Q300.6563,281.625 299.9688,280.5625 Q299.2813,279.4844 299.2813,278.2031 L299.2813,277.0469 Q299.2813,275.7188 299.8906,274.5781 Q300.5156,273.4219 301.6094,272.8125 Q302.7031,272.1875 303.9375,272.1875 Q304.6719,272.1875 305.3125,272.3594 Q305.9688,272.5156 306.5156,272.875 Z"/><text x="324.25" y="282.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="140">ViewModelComponent</text><line style="stroke:#181818;stroke-width:.5" x1="225" x2="531" y1="293" y2="293"/><rect width="6" height="6" x="232" fill="none" style="stroke:#c82930;stroke-width:1" y="304.81"/><text x="244" y="312.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="90">_moduleName</text><rect width="6" height="6" x="232" fill="none" style="stroke:#c82930;stroke-width:1" y="323.432"/><text x="244" y="330.728" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="63">_harmony</text><polygon fill="none" points="235 341.053 231 347.053 239 347.053" style="stroke:#1963a0;stroke-width:1"/><text x="244" y="349.35" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="38">Mixins</text><polygon fill="none" points="235 359.674 231 365.674 239 365.674" style="stroke:#1963a0;stroke-width:1"/><text x="244" y="367.971" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="125">MixinInstanceCache</text><polygon fill="none" points="235 378.295 231 384.295 239 384.295" style="stroke:#1963a0;stroke-width:1"/><text x="244" y="386.592" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="282">MixinInstanceRefreshFromConstructorCache</text><rect width="6" height="6" x="232" fill="none" style="stroke:#c82930;stroke-width:1" y="397.916"/><text x="244" y="405.213" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="123">_mixinTypeEnabled</text><rect width="6" height="6" x="232" fill="none" style="stroke:#c82930;stroke-width:1" y="416.537"/><text x="244" y="423.834" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="166">_mixinTypePropertyCache</text><rect width="6" height="6" x="232" fill="none" style="stroke:#c82930;stroke-width:1" y="435.158"/><text x="244" y="442.455" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="159">_mixinTypeMethodCache</text><line style="stroke:#181818;stroke-width:.5" x1="225" x2="531" y1="449.969" y2="449.969"/><polygon fill="#4177AF" points="235 460.779 231 466.779 239 466.779" style="stroke:#1963a0;stroke-width:1"/><text x="244" y="469.076" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="161">RegisterViewModelMixin()</text><polygon fill="#4177AF" points="235 479.4 231 485.4 239 485.4" style="stroke:#1963a0;stroke-width:1"/><text x="244" y="487.697" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76">Deregister()</text><polygon fill="#4177AF" points="235 498.022 231 504.022 239 504.022" style="stroke:#1963a0;stroke-width:1"/><text x="244" y="506.318" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="54">Enable()</text><polygon fill="#4177AF" points="235 516.643 231 522.643 239 522.643" style="stroke:#1963a0;stroke-width:1"/><text x="244" y="524.939" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="57">Disable()</text><polygon fill="#4177AF" points="235 535.264 231 541.264 239 541.264" style="stroke:#1963a0;stroke-width:1"/><text x="244" y="543.561" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="192">InitializeMixinsForVMInstance()</text></g><g id="link_UIExtender_UIExtenderRuntime"><path id="UIExtender-to-UIExtenderRuntime" fill="none" d="M238,74.02 C238,92.39 238,103.29 238,121.71" codeLine="37" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="238 133.71 242 127.71 238 121.71 234 127.71 238 133.71" style="stroke:#181818;stroke-width:1"/></g><g id="link_UIExtenderRuntime_PrefabComponent"><path id="UIExtenderRuntime-to-PrefabComponent" fill="none" d="M218.67,201.38 C202.52,228.86 184.7086,259.1635 162.5186,296.9335" codeLine="38" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="156.44 307.28 162.928 304.133 162.519 296.933 156.03 300.08 156.44 307.28" style="stroke:#181818;stroke-width:1"/></g><g id="link_UIExtenderRuntime_ViewModelComponent"><path id="UIExtenderRuntime-to-ViewModelComponent" fill="none" d="M257.47,201.38 C267.12,217.69 273.407,228.3138 286.567,250.5438" codeLine="39" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="292.68 260.87 293.065 253.669 286.567 250.544 286.181 257.745 292.68 260.87" style="stroke:#181818;stroke-width:1"/></g></g></svg>