feat(ui): add CSimpleMessageScrollFrame script methods

This commit is contained in:
VDm 2025-08-08 00:24:50 +04:00
parent 148285ad01
commit 78f1d095d6
7 changed files with 326 additions and 12 deletions

View File

@ -40,10 +40,16 @@ void CSimpleHyperlinkButton::SetHyperlink(CSimpleFontString* string, const GXUFO
}
void CSimpleHyperlinkButton::OnLayerCursorEnter(int32_t a2) {
auto frame = static_cast<CSimpleHyperlinkedFrame*>(this->m_parent);
frame->OnHyperlinkEnter(this->m_hyperlink, this->m_hyperlink);
}
void CSimpleHyperlinkButton::OnLayerCursorExit(int32_t a2, int32_t a3) {
auto frame = static_cast<CSimpleHyperlinkedFrame*>(this->m_parent);
frame->OnHyperlinkLeave(this->m_hyperlink, this->m_hyperlink);
}
void CSimpleHyperlinkButton::OnClick(const char* btn, int32_t a3) {
auto frame = static_cast<CSimpleHyperlinkedFrame*>(this->m_parent);
frame->OnHyperlinkClick(this->m_hyperlink, this->m_hyperlink, btn);
}

View File

@ -28,31 +28,32 @@ FrameScript_Object::ScriptIx* CSimpleHyperlinkedFrame::GetScriptByName(const cha
return nullptr;
}
void CSimpleHyperlinkedFrame::OnHyperlinkClick(const char* a2, const char* a3, const char* a4) {
void CSimpleHyperlinkedFrame::OnHyperlinkClick(const char* link, const char* text, const char* button) {
if (this->m_onHyperlinkClick.luaRef) {
auto L = FrameScript_GetContext();
lua_pushstring(L, a2);
lua_pushstring(L, a3);
lua_pushstring(L, link);
lua_pushstring(L, text);
lua_pushstring(L, button);
this->RunScript(this->m_onHyperlinkClick, 2, 0);
this->RunScript(this->m_onHyperlinkClick, 3, 0);
}
}
void CSimpleHyperlinkedFrame::OnHyperlinkLeave(const char* a2, const char* a3) {
void CSimpleHyperlinkedFrame::OnHyperlinkLeave(const char* link, const char* text) {
if (this->m_onHyperlinkLeave.luaRef) {
auto L = FrameScript_GetContext();
lua_pushstring(L, a2);
lua_pushstring(L, a3);
lua_pushstring(L, link);
lua_pushstring(L, text);
this->RunScript(this->m_onHyperlinkLeave, 2, 0);
}
}
void CSimpleHyperlinkedFrame::OnHyperlinkEnter(const char* a2, const char* a3) {
void CSimpleHyperlinkedFrame::OnHyperlinkEnter(const char* link, const char* text) {
if (this->m_onHyperlinkEnter.luaRef) {
auto L = FrameScript_GetContext();
lua_pushstring(L, a2);
lua_pushstring(L, a3);
lua_pushstring(L, link);
lua_pushstring(L, text);
this->RunScript(this->m_onHyperlinkEnter, 2, 0);
}

View File

@ -1,4 +1,39 @@
#include "ui/CSimpleMessageScrollFrame.hpp"
#include "ui/CSimpleMessageScrollFrameScript.hpp"
CSimpleMessageScrollFrame::CSimpleMessageScrollFrame(CSimpleFrame* parent) : CSimpleHyperlinkedFrame(parent) {
int32_t CSimpleMessageScrollFrame::s_metatable = 0;
int32_t CSimpleMessageScrollFrame::s_objectType = 0;
void CSimpleMessageScrollFrame::CreateScriptMetaTable() {
lua_State* L = FrameScript_GetContext();
int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CSimpleMessageScrollFrame::RegisterScriptMethods);
CSimpleMessageScrollFrame::s_metatable = ref;
}
int32_t CSimpleMessageScrollFrame::GetObjectType() {
if (!CSimpleMessageScrollFrame::s_objectType) {
CSimpleMessageScrollFrame::s_objectType = ++FrameScript_Object::s_objectTypes;
}
return CSimpleMessageScrollFrame::s_objectType;
}
void CSimpleMessageScrollFrame::RegisterScriptMethods(lua_State* L) {
CSimpleFrame::RegisterScriptMethods(L);
FrameScript_Object::FillScriptMethodTable(L, SimpleMessageScrollFrameMethods, NUM_SIMPLE_MESSAGE_SCROLL_FRAME_SCRIPT_METHODS);
}
CSimpleMessageScrollFrame::CSimpleMessageScrollFrame(CSimpleFrame* parent)
: CSimpleHyperlinkedFrame(parent) {
}
bool CSimpleMessageScrollFrame::IsA(int32_t type) {
return type == CSimpleMessageScrollFrame::s_objectType
|| type == CSimpleFrame::s_objectType
|| type == CScriptRegion::s_objectType
|| type == CScriptObject::s_objectType;
}
int32_t CSimpleMessageScrollFrame::GetScriptMetaTable() {
return CSimpleMessageScrollFrame::s_metatable;
}

View File

@ -5,8 +5,21 @@
class CSimpleMessageScrollFrame : public CSimpleHyperlinkedFrame {
public:
// Static variables
static int32_t s_metatable;
static int32_t s_objectType;
// Static functions
static void CreateScriptMetaTable();
static int32_t GetObjectType();
static void RegisterScriptMethods(lua_State* L);
// Member functions
CSimpleMessageScrollFrame(CSimpleFrame* parent);
// Virtual member functions
virtual bool IsA(int32_t type);
virtual int32_t GetScriptMetaTable();
};
#endif

View File

@ -0,0 +1,248 @@
#include "ui/CSimpleMessageScrollFrameScript.hpp"
#include "ui/CSimpleMessageScrollFrame.hpp"
#include "util/Lua.hpp"
#include "util/Unimplemented.hpp"
static int32_t Script_SetFontObject(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetFontObject(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetFont(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetFont(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTextColor(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetTextColor(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetShadowColor(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetShadowColor(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetShadowOffset(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetShadowOffset(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetSpacing(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetSpacing(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetJustifyH(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetJustifyH(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetJustifyV(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetJustifyV(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_AddMessage(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetMessageInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_RemoveMessagesByAccessID(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_ScrollUp(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_ScrollDown(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_PageUp(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_PageDown(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_ScrollToTop(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_ScrollToBottom(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetScrollOffset(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_AtTop(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_AtBottom(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_UpdateColorByID(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetNumMessages(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetNumLinesDisplayed(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetCurrentScroll(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetCurrentLine(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetMaxLines(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetMaxLines(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetFading(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetFading(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTimeVisible(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetTimeVisible(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetFadeDuration(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetFadeDuration(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_Clear(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetInsertMode(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetInsertMode(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetIndentedWordWrap(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetIndentedWordWrap(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetHyperlinksEnabled(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetHyperlinksEnabled(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
FrameScript_Method SimpleMessageScrollFrameMethods[NUM_SIMPLE_MESSAGE_SCROLL_FRAME_SCRIPT_METHODS] = {
{ "SetFontObject", &Script_SetFontObject },
{ "GetFontObject", &Script_GetFontObject },
{ "SetFont", &Script_SetFont },
{ "GetFont", &Script_GetFont },
{ "SetTextColor", &Script_SetTextColor },
{ "GetTextColor", &Script_GetTextColor },
{ "SetShadowColor", &Script_SetShadowColor },
{ "GetShadowColor", &Script_GetShadowColor },
{ "SetShadowOffset", &Script_SetShadowOffset },
{ "GetShadowOffset", &Script_GetShadowOffset },
{ "SetSpacing", &Script_SetSpacing },
{ "GetSpacing", &Script_GetSpacing },
{ "SetJustifyH", &Script_SetJustifyH },
{ "GetJustifyH", &Script_GetJustifyH },
{ "SetJustifyV", &Script_SetJustifyV },
{ "GetJustifyV", &Script_GetJustifyV },
{ "AddMessage", &Script_AddMessage },
{ "GetMessageInfo", &Script_GetMessageInfo },
{ "RemoveMessagesByAccessID", &Script_RemoveMessagesByAccessID },
{ "ScrollUp", &Script_ScrollUp },
{ "ScrollDown", &Script_ScrollDown },
{ "PageUp", &Script_PageUp },
{ "PageDown", &Script_PageDown },
{ "ScrollToTop", &Script_ScrollToTop },
{ "ScrollToBottom", &Script_ScrollToBottom },
{ "SetScrollOffset", &Script_SetScrollOffset },
{ "AtTop", &Script_AtTop },
{ "AtBottom", &Script_AtBottom },
{ "UpdateColorByID", &Script_UpdateColorByID },
{ "GetNumMessages", &Script_GetNumMessages },
{ "GetNumLinesDisplayed", &Script_GetNumLinesDisplayed },
{ "GetCurrentScroll", &Script_GetCurrentScroll },
{ "GetCurrentLine", &Script_GetCurrentLine },
{ "GetMaxLines", &Script_GetMaxLines },
{ "SetMaxLines", &Script_SetMaxLines },
{ "SetFading", &Script_SetFading },
{ "GetFading", &Script_GetFading },
{ "SetTimeVisible", &Script_SetTimeVisible },
{ "GetTimeVisible", &Script_GetTimeVisible },
{ "SetFadeDuration", &Script_SetFadeDuration },
{ "GetFadeDuration", &Script_GetFadeDuration },
{ "Clear", &Script_Clear },
{ "SetInsertMode", &Script_SetInsertMode },
{ "GetInsertMode", &Script_GetInsertMode },
{ "SetIndentedWordWrap", &Script_SetIndentedWordWrap },
{ "GetIndentedWordWrap", &Script_GetIndentedWordWrap },
{ "SetHyperlinksEnabled", &Script_SetHyperlinksEnabled },
{ "GetHyperlinksEnabled", &Script_GetHyperlinksEnabled }
};

View File

@ -0,0 +1,10 @@
#ifndef UI_C_SIMPLE_MESSAGE_SCROLL_FRAME_SCRIPT_HPP
#define UI_C_SIMPLE_MESSAGE_SCROLL_FRAME_SCRIPT_HPP
#include "ui/FrameScript.hpp"
#define NUM_SIMPLE_MESSAGE_SCROLL_FRAME_SCRIPT_METHODS 48
extern FrameScript_Method SimpleMessageScrollFrameMethods[NUM_SIMPLE_MESSAGE_SCROLL_FRAME_SCRIPT_METHODS];
#endif

View File

@ -12,6 +12,7 @@
#include "ui/CSimpleScrollFrame.hpp"
#include "ui/CSimpleSlider.hpp"
#include "ui/CSimpleTexture.hpp"
#include "ui/CSimpleMessageScrollFrame.hpp"
#include "ui/FrameScript.hpp"
void CharacterCreateRegisterScriptFunctions() {
@ -79,7 +80,7 @@ void RegisterSimpleFrameScriptMethods() {
// TODO
// CSimpleMessageFrame::CreateScriptMetaTable();
// CSimpleMessageScrollFrame::CreateScriptMetaTable();
CSimpleMessageScrollFrame::CreateScriptMetaTable();
CSimpleModel::CreateScriptMetaTable();
CSimpleModelFFX::CreateScriptMetaTable();