From 70d3c07cdb3d9ada0fc10fbdfdcecba7b6877cee Mon Sep 17 00:00:00 2001 From: lethosor Date: Fri, 7 Oct 2016 23:51:58 -0400 Subject: [PATCH] Initial lua getDwarfmodeViewDims rewrite --- library/LuaApi.cpp | 27 ++++++++++++++++++++++++++- library/include/modules/Gui.h | 2 +- library/modules/Gui.cpp | 4 ++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/library/LuaApi.cpp b/library/LuaApi.cpp index 18b4ab270..20b1bc0e4 100644 --- a/library/LuaApi.cpp +++ b/library/LuaApi.cpp @@ -1428,6 +1428,26 @@ static const LuaWrapper::FunctionReg dfhack_module[] = { /***** Gui module *****/ +static int gui_getDwarfmodeViewDims(lua_State *state) +{ + auto dims = Gui::getDwarfmodeViewDims(); + lua_newtable(state); + Lua::TableInsert(state, "map_x1", dims.map_x1); + Lua::TableInsert(state, "map_x2", dims.map_x2); + Lua::TableInsert(state, "menu_x1", dims.menu_x1); + Lua::TableInsert(state, "menu_x2", dims.menu_x2); + Lua::TableInsert(state, "area_x1", dims.area_x1); + Lua::TableInsert(state, "area_x2", dims.area_x2); + Lua::TableInsert(state, "y1", dims.y1); + Lua::TableInsert(state, "y2", dims.y2); + Lua::TableInsert(state, "map_y1", dims.map_y1); + Lua::TableInsert(state, "map_y2", dims.map_y2); + Lua::TableInsert(state, "menu_on", dims.menu_on); + Lua::TableInsert(state, "area_on", dims.area_on); + Lua::TableInsert(state, "menu_forced", dims.menu_forced); + return 1; +} + static const LuaWrapper::FunctionReg dfhack_gui_module[] = { WRAPM(Gui, getCurViewscreen), WRAPM(Gui, getFocusString), @@ -1448,6 +1468,11 @@ static const LuaWrapper::FunctionReg dfhack_gui_module[] = { { NULL, NULL } }; +static const luaL_Reg dfhack_gui_funcs[] = { + { "getDwarfmodeViewDims", gui_getDwarfmodeViewDims }, + { NULL, NULL } +}; + /***** Job module *****/ static bool jobEqual(df::job *job1, df::job *job2) { return *job1 == *job2; } @@ -2758,7 +2783,7 @@ void OpenDFHackApi(lua_State *state) OpenRandom(state); LuaWrapper::SetFunctionWrappers(state, dfhack_module); - OpenModule(state, "gui", dfhack_gui_module); + OpenModule(state, "gui", dfhack_gui_module, dfhack_gui_funcs); OpenModule(state, "job", dfhack_job_module, dfhack_job_funcs); OpenModule(state, "units", dfhack_units_module, dfhack_units_funcs); OpenModule(state, "items", dfhack_items_module, dfhack_items_funcs); diff --git a/library/include/modules/Gui.h b/library/include/modules/Gui.h index ae53e7603..c7f7d2c80 100644 --- a/library/include/modules/Gui.h +++ b/library/include/modules/Gui.h @@ -134,7 +134,7 @@ namespace DFHack int map_y1, map_y2; bool menu_on, area_on, menu_forced; - rect2d map() { return mkrect_xy(map_x1, y1, map_x2, y2); } + rect2d map() { return mkrect_xy(map_x1, map_y1, map_x2, map_y2); } rect2d menu() { return mkrect_xy(menu_x1, y1, menu_x2, y2); } }; diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index 2cc955d63..5368a0fbd 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -1404,8 +1404,12 @@ Gui::DwarfmodeDims getDwarfmodeViewDims_default() auto ws = Screen::getWindowSize(); dims.y1 = 1; dims.y2 = ws.y-2; + dims.map_x1 = 1; dims.map_x2 = ws.x-2; + dims.map_y1 = dims.y1; + dims.map_y2 = dims.y2; + dims.area_x1 = dims.area_x2 = dims.menu_x1 = dims.menu_x2 = -1; dims.menu_forced = false;