Add Input.mouse_x(), Input.mouse_y(), Input.mouse_lb(), Input.mouse_rb() to jslibtemple.c
This commit is contained in:
parent
d8108823b3
commit
e6cff10e60
1 changed files with 48 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue