|
|
|
@ -131,9 +131,13 @@ void DFHack::Lua::GetVector(lua_State *state, std::vector<std::string> &pvec)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static bool inhibit_l_down = false;
|
|
|
|
|
static bool inhibit_r_down = false;
|
|
|
|
|
static bool inhibit_m_down = false;
|
|
|
|
|
|
|
|
|
|
void DFHack::Lua::PushInterfaceKeys(lua_State *L,
|
|
|
|
|
const std::set<df::interface_key> &keys) {
|
|
|
|
|
lua_createtable(L, 0, keys.size() + 5);
|
|
|
|
|
lua_createtable(L, 0, keys.size() + 7);
|
|
|
|
|
|
|
|
|
|
for (auto &key : keys)
|
|
|
|
|
{
|
|
|
|
@ -154,23 +158,32 @@ void DFHack::Lua::PushInterfaceKeys(lua_State *L,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (df::global::enabler) {
|
|
|
|
|
if (df::global::enabler->mouse_lbut_down) {
|
|
|
|
|
if (!inhibit_l_down && df::global::enabler->mouse_lbut_down) {
|
|
|
|
|
lua_pushboolean(L, true);
|
|
|
|
|
lua_setfield(L, -2, "_MOUSE_L_DOWN");
|
|
|
|
|
inhibit_l_down = true;
|
|
|
|
|
}
|
|
|
|
|
if (df::global::enabler->mouse_rbut_down) {
|
|
|
|
|
if (!inhibit_r_down && df::global::enabler->mouse_rbut_down) {
|
|
|
|
|
lua_pushboolean(L, true);
|
|
|
|
|
lua_setfield(L, -2, "_MOUSE_R_DOWN");
|
|
|
|
|
inhibit_r_down = true;
|
|
|
|
|
}
|
|
|
|
|
if (!inhibit_m_down && df::global::enabler->mouse_mbut_down) {
|
|
|
|
|
lua_pushboolean(L, true);
|
|
|
|
|
lua_setfield(L, -2, "_MOUSE_M_DOWN");
|
|
|
|
|
inhibit_m_down = true;
|
|
|
|
|
}
|
|
|
|
|
if (df::global::enabler->mouse_lbut) {
|
|
|
|
|
lua_pushboolean(L, true);
|
|
|
|
|
lua_setfield(L, -2, "_MOUSE_L");
|
|
|
|
|
df::global::enabler->mouse_lbut_down = 0;
|
|
|
|
|
}
|
|
|
|
|
if (df::global::enabler->mouse_rbut) {
|
|
|
|
|
lua_pushboolean(L, true);
|
|
|
|
|
lua_setfield(L, -2, "_MOUSE_R");
|
|
|
|
|
df::global::enabler->mouse_rbut_down = 0;
|
|
|
|
|
}
|
|
|
|
|
if (df::global::enabler->mouse_mbut) {
|
|
|
|
|
lua_pushboolean(L, true);
|
|
|
|
|
lua_setfield(L, -2, "_MOUSE_M");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -2134,4 +2147,11 @@ void DFHack::Lua::Core::Reset(color_ostream &out, const char *where)
|
|
|
|
|
out.printerr("Common lua context stack top left at %d after %s.\n", top, where);
|
|
|
|
|
lua_settop(State, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!df::global::enabler->mouse_lbut)
|
|
|
|
|
inhibit_l_down = false;
|
|
|
|
|
if (!df::global::enabler->mouse_rbut)
|
|
|
|
|
inhibit_r_down = false;
|
|
|
|
|
if (!df::global::enabler->mouse_mbut)
|
|
|
|
|
inhibit_m_down = false;
|
|
|
|
|
}
|
|
|
|
|