From 92a3925797d76206513c48293308850d4db9ff12 Mon Sep 17 00:00:00 2001 From: VDm Date: Thu, 24 Apr 2025 00:42:23 +0400 Subject: [PATCH] feat(ui): implement Script_GetMovieResolution method --- src/ui/CSimpleMovieFrame.cpp | 6 +++--- src/ui/CSimpleMovieFrame.hpp | 3 +++ src/ui/ScriptFunctionsGlueScriptEvents.cpp | 11 ++++++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/ui/CSimpleMovieFrame.cpp b/src/ui/CSimpleMovieFrame.cpp index 2c41fd6..f610efc 100644 --- a/src/ui/CSimpleMovieFrame.cpp +++ b/src/ui/CSimpleMovieFrame.cpp @@ -31,16 +31,16 @@ FrameScript_Object::ScriptIx* CSimpleMovieFrame::GetScriptByName(const char* nam } if (!SStrCmpI(name, "OnMovieFinished", STORM_MAX_STR)) { - //return (int)this + 948; + return &this->m_onMovieFinished; } if (!SStrCmpI(name, "OnMovieShowSubtitle", STORM_MAX_STR)) { data.wrapper = "return function(self,text) %s end"; - //return (int)this + 956; + return &this->m_onMovieShowSubtitle; } if (!SStrCmpI(name, "OnMovieHideSubtitle", STORM_MAX_STR)) { - //return (int)this + 964; + return &this->m_onMovieHideSubtitle; } return nullptr; diff --git a/src/ui/CSimpleMovieFrame.hpp b/src/ui/CSimpleMovieFrame.hpp index 0f9318f..0830b4e 100644 --- a/src/ui/CSimpleMovieFrame.hpp +++ b/src/ui/CSimpleMovieFrame.hpp @@ -19,6 +19,9 @@ class CSimpleMovieFrame : public CSimpleFrame { static void RegisterScriptMethods(lua_State* L); // Member variables + ScriptIx m_onMovieFinished; + ScriptIx m_onMovieShowSubtitle; + ScriptIx m_onMovieHideSubtitle; // Virtual member functions virtual ScriptIx* GetScriptByName(const char* name, ScriptData& data); diff --git a/src/ui/ScriptFunctionsGlueScriptEvents.cpp b/src/ui/ScriptFunctionsGlueScriptEvents.cpp index 7ba0834..ed0c659 100644 --- a/src/ui/ScriptFunctionsGlueScriptEvents.cpp +++ b/src/ui/ScriptFunctionsGlueScriptEvents.cpp @@ -118,7 +118,16 @@ int32_t Script_StopGlueMusic(lua_State* L) { } int32_t Script_GetMovieResolution(lua_State* L) { - WHOA_UNIMPLEMENTED(0); + auto gxResolution = CVar::Lookup("gxResolution"); + STORM_ASSERT(gxResolution); + auto resolution = gxResolution->GetString(); + STORM_ASSERT(resolution); + + int32_t width = 0; + int32_t height = 0; + sscanf(resolution, "%dx%d", &width, &height); + lua_pushnumber(L, width); + return 1; } int32_t Script_GetScreenWidth(lua_State* L) {