diff --git a/EEex/EEex.tp2 b/EEex/EEex.tp2 index a6d04e7..792c1ce 100644 --- a/EEex/EEex.tp2 +++ b/EEex/EEex.tp2 @@ -1,6 +1,6 @@ BACKUP ~EEex/backup~ AUTHOR ~Bubb~ -VERSION ~v0.10.1-alpha~ +VERSION ~v0.10.1.1-alpha~ README ~EEex/readme-EEex.html~ BEGIN ~EEex~ LABEL ~B3-EEex-Main~ diff --git a/EEex/copy/B3Scale.lua b/EEex/copy/B3Scale.lua index c35e69c..27c3f47 100644 --- a/EEex/copy/B3Scale.lua +++ b/EEex/copy/B3Scale.lua @@ -22,7 +22,13 @@ function B3Scale_PokeEngine() EEex_EngineGlobal_CBaldurChitin:OnResizeWindow(w, h) end -function B3Scale_Hook_DoSizeChange() +--[[ ++-----------------------------------------------------------------------------+ +| Tweak the UI scale whenever the window is resized (called directly by EEex) | ++-----------------------------------------------------------------------------+ +--]] + +function B3Scale_DoSizeChange() if B3Scale_Percentage == -1 then return @@ -43,29 +49,3 @@ function B3Scale_Hook_DoSizeChange() CVidMode.SCREENWIDTH = math.floor(scaledH * ratio) CVidMode.SCREENHEIGHT = math.floor(scaledH) end - -(function() - - EEex_DisableCodeProtection() - - --[[ - +---------------------------------------------------+ - | Tweak the UI scale whenever the window is resized | - +---------------------------------------------------+ - | [Lua] B3Scale_Hook_DoSizeChange() | - +---------------------------------------------------+ - --]] - - EEex_HookAfterCallWithLabels(EEex_Label("Hook-CChitin::OnResizeWindow()-B3Scale"), { - {"hook_integrity_watchdog_ignore_registers", {EEex_HookIntegrityWatchdogRegister.RAX}}}, - EEex_FlattenTable({[[ - #MAKE_SHADOW_SPACE(32) - ]], EEex_GenLuaCall("B3Scale_Hook_DoSizeChange"), [[ - call_error: - #DESTROY_SHADOW_SPACE - ]]}) - ) - - EEex_EnableCodeProtection() - -end)() diff --git a/EEex/copy/EEex_Menu.lua b/EEex/copy/EEex_Menu.lua index 62d9df6..fbc02d8 100644 --- a/EEex/copy/EEex_Menu.lua +++ b/EEex/copy/EEex_Menu.lua @@ -222,12 +222,6 @@ function EEex_Menu_SetForceScrollbarRender(itemName, value) EEex_Menu_ScrollbarForced[itemName] = value end -EEex_Menu_BeforeUIItemRenderListeners = {} - -function EEex_Menu_AddBeforeUIItemRenderListener(itemName, func) - EEex_Menu_BeforeUIItemRenderListeners[itemName] = func -end - --------------- -- Listeners -- --------------- @@ -261,6 +255,18 @@ function EEex_Menu_AddBeforeListRendersItemListener(listName, listener) table.insert(listListeners, listener) end +EEex_Menu_BeforeUIItemRenderListeners = {} + +function EEex_Menu_AddBeforeUIItemRenderListener(itemName, listener) + EEex_Menu_BeforeUIItemRenderListeners[itemName] = listener +end + +EEex_Menu_WindowSizeChangedListeners = {} + +function EEex_Menu_AddWindowSizeChangedListener(listener) + table.insert(EEex_Menu_WindowSizeChangedListeners, listener) +end + ----------- -- Hooks -- ----------- @@ -327,3 +333,17 @@ function EEex_Menu_Hook_OnBeforeUIItemRender(item) listener(item) end end + +function EEex_Menu_Hook_OnWindowSizeChanged() + + if EEex_Modules["B3Scale"] then + B3Scale_DoSizeChange() + end + + local width = CVidMode.SCREENWIDTH + local height = CVidMode.SCREENHEIGHT + + for _, listener in ipairs(EEex_Menu_WindowSizeChangedListeners) do + listener(width, height) + end +end diff --git a/EEex/copy/EEex_Menu_Patch.lua b/EEex/copy/EEex_Menu_Patch.lua index 33163a1..d9ef533 100644 --- a/EEex/copy/EEex_Menu_Patch.lua +++ b/EEex/copy/EEex_Menu_Patch.lua @@ -376,6 +376,24 @@ }) ) + --[[ + +---------------------------------------------------------+ + | Call a hook whenever the engine changes the window size | + +---------------------------------------------------------+ + | [Lua] EEex_Menu_Hook_OnWindowSizeChanged() | + +---------------------------------------------------------+ + --]] + + EEex_HookAfterCallWithLabels(EEex_Label("Hook-CChitin::OnResizeWindow()-B3Scale"), { + {"hook_integrity_watchdog_ignore_registers", {EEex_HookIntegrityWatchdogRegister.RAX}}}, + EEex_FlattenTable({[[ + #MAKE_SHADOW_SPACE(32) + ]], EEex_GenLuaCall("EEex_Menu_Hook_OnWindowSizeChanged"), [[ + call_error: + #DESTROY_SHADOW_SPACE + ]]}) + ) + EEex_EnableCodeProtection() diff --git a/package_mod.bat b/package_mod.bat index 9b3428b..cfe3f2e 100644 --- a/package_mod.bat +++ b/package_mod.bat @@ -6,7 +6,7 @@ call "%~dp0..\ModPackaging\utilities\ie_games.bat" REM /* MODIFY: set the values of the 3 variables below to reflect the current mod version */ set "mod_name=EEex" -set "mod_version=v0.10.1-alpha" +set "mod_version=v0.10.1.1-alpha" set mod_folder=EEex REM /* MODIFY: list here which IE games the mod is compatible with, from this list of possibilities: */