Full DFHack::Console to lua binding.
Signed-off-by: Warmist <Warmist@gmail.com>develop
parent
3106606a4e
commit
e47d05eeb4
@ -0,0 +1,13 @@
|
||||
#ifndef LUA_CONSOLE_H
|
||||
#define LUA_CONSOLE_H
|
||||
#include <dfhack/Console.h>
|
||||
#include "luamain.h"
|
||||
|
||||
namespace lua
|
||||
{
|
||||
|
||||
void RegisterConsole(lua::state &st, DFHack::Console *c);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,137 @@
|
||||
#include "lua_Console.h"
|
||||
//TODO error management. Using lua error? or something other?
|
||||
static DFHack::Console* GetConsolePtr(lua::state &st)
|
||||
{
|
||||
int t=st.gettop();
|
||||
st.getglobal("Console");
|
||||
st.getfield("__pointer");
|
||||
DFHack::Console* c=static_cast<DFHack::Console*>(lua_touserdata(st,-1));
|
||||
st.settop(t);
|
||||
return c;
|
||||
}
|
||||
static int lua_Console_print(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
int t=st.gettop();
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->print("%s",st.as<string>(t).c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lua_Console_printerr(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
int t=st.gettop();
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->printerr("%s",st.as<string>(t).c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lua_Console_clear(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->clear();
|
||||
return 0;
|
||||
}
|
||||
static int lua_Console_gotoxy(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->gotoxy(st.as<int>(1,1),st.as<int>(1,2));
|
||||
return 0;
|
||||
}
|
||||
static int lua_Console_color(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->color( static_cast<DFHack::Console::color_value>(st.as<int>(-1,1)) );
|
||||
return 0;
|
||||
}
|
||||
static int lua_Console_reset_color(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->reset_color();
|
||||
return 0;
|
||||
}
|
||||
static int lua_Console_cursor(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->cursor(st.as<bool>(1));
|
||||
return 0;
|
||||
}
|
||||
static int lua_Console_msleep(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->msleep(st.as<unsigned>(1));
|
||||
return 0;
|
||||
}
|
||||
static int lua_Console_get_columns(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
st.push(c->get_columns());
|
||||
return 1;
|
||||
}
|
||||
static int lua_Console_get_rows(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
st.push(c->get_rows());
|
||||
return 1;
|
||||
}
|
||||
static int lua_Console_lineedit(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
string ret;
|
||||
int i=c->lineedit(st.as<string>(1),ret);
|
||||
st.push(ret);
|
||||
st.push(i);
|
||||
return 2;// dunno if len is needed...
|
||||
}
|
||||
static int lua_Console_history_add(lua_State *S)
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->history_add(st.as<string>(1));
|
||||
return 0;
|
||||
}
|
||||
/*static int lua_Console_history_clear(lua_State *S) //TODO someday add this
|
||||
{
|
||||
lua::state st(S);
|
||||
DFHack::Console* c=GetConsolePtr(st);
|
||||
c->history_clear();
|
||||
return 0;
|
||||
}*/
|
||||
const luaL_Reg lua_console_func[]=
|
||||
{
|
||||
{"print",lua_Console_print},
|
||||
{"printerr",lua_Console_printerr},
|
||||
{"clear",lua_Console_clear},
|
||||
{"gotoxy",lua_Console_gotoxy},
|
||||
{"color",lua_Console_color},
|
||||
{"reset_color",lua_Console_reset_color},
|
||||
{"cursor",lua_Console_cursor},
|
||||
{"msleep",lua_Console_msleep},
|
||||
{"get_columns",lua_Console_get_columns},
|
||||
{"get_rows",lua_Console_get_rows},
|
||||
{"lineedit",lua_Console_lineedit},
|
||||
{"history_add",lua_Console_history_add},
|
||||
//{"history_clear",lua_Console_history_clear},
|
||||
{NULL,NULL}
|
||||
};
|
||||
void lua::RegisterConsole(lua::state &st, DFHack::Console *c)
|
||||
{
|
||||
st.newtable();
|
||||
|
||||
st.pushlightuserdata(c);
|
||||
st.setfield("__pointer");
|
||||
|
||||
lua::RegFunctionsLocal(st, lua_console_func);
|
||||
//TODO add color consts
|
||||
st.setglobal("Console");
|
||||
}
|
Loading…
Reference in New Issue