Add Input.mouse_x(), Input.mouse_y(), Input.mouse_lb(), Input.mouse_rb() to jslibtemple.c

This commit is contained in:
Alec Murphy 2025-06-10 11:28:31 -04:00
parent d8108823b3
commit e6cff10e60

View file

@ -157,6 +157,53 @@ void jsLT_initgr(js_State *J)
js_defglobal(J, "Gr", JS_DONTENUM);
}
/** Input **/
uint64_t get_glbl_var_addr(char* name)
{
// 0x100300 + 0x3d0: adam_task + offset(CTask.hash_table)
// 0x8: HTT_GLBL_VAR
// 0x78: offset(CHashGlblVar.data_addr)
uint64_t addr = os_call_ext_str_4("HashFind", (uint64_t)name, *(uint64_t*)(0x100300 + 0x3d0), 8, 1);
return addr ? *(uint64_t*)(addr + 0x78) : 0;
}
void Input_mouse_x(js_State *J)
{
uint64_t* res = (uint64_t*)get_glbl_var_addr("ms");
js_pushnumber(J, res[0]); // offset(CMsStateGlbls.pos.x)
}
void Input_mouse_y(js_State *J)
{
uint64_t* res = (uint64_t*)get_glbl_var_addr("ms");
js_pushnumber(J, res[1]); // offset(CMsStateGlbls.pos.y)
}
void Input_mouse_lb(js_State *J)
{
uint8_t* res = (uint8_t*)get_glbl_var_addr("ms");
js_pushboolean(J, res[0xa0]); // offset(CMsStateGlbls.lb)
}
void Input_mouse_rb(js_State *J)
{
uint8_t* res = (uint8_t*)get_glbl_var_addr("ms");
js_pushboolean(J, res[0xa1]); // offset(CMsStateGlbls.rb)
}
void jsLT_initinput(js_State *J)
{
js_pushobject(J, jsV_newobject(J, -1, J->Object_prototype));
{
jsB_propf(J, "Input.mouse_x", Input_mouse_x, 0);
jsB_propf(J, "Input.mouse_y", Input_mouse_y, 0);
jsB_propf(J, "Input.mouse_lb", Input_mouse_lb, 0);
jsB_propf(J, "Input.mouse_rb", Input_mouse_rb, 0);
}
js_defglobal(J, "Input", JS_DONTENUM);
}
/** OS **/
// U0 Beep(I8 ona=62,Bool busy=FALSE)
@ -276,5 +323,6 @@ void js_initlibtemple(js_State *J)
{
jsLT_initdc(J);
jsLT_initgr(J);
jsLT_initinput(J);
jsLT_initos(J);
}