Browse Source

Lua integration second pass. Still doesn't work, though.

undefined
Benjamin ‘Touky’ Huet Sam Hocevar <sam@hocevar.net> 9 years ago
parent
commit
0ac33c2da2
5 changed files with 24 additions and 24 deletions
  1. +0
    -4
      src/application/application.cpp
  2. +0
    -10
      src/application/baselua.cpp
  3. +14
    -2
      src/application/baselua.h
  4. +3
    -1
      src/world.cpp
  5. +7
    -7
      src/world.h

+ 0
- 4
src/application/application.cpp View File

@@ -72,11 +72,7 @@ static void AppCallback()
Application::Application(char const *name, ivec2 resolution, float framerate) Application::Application(char const *name, ivec2 resolution, float framerate)
{ {
data = new ApplicationData(name, resolution, framerate); data = new ApplicationData(name, resolution, framerate);

g_world.ExecLua("lua/init.lua"); g_world.ExecLua("lua/init.lua");
float gravity = g_world.GetLuaNumber("gravity");
gravity = g_world.GetVar<float>("gravity");
gravity = gravity;
} }


bool Application::MustTick() bool Application::MustTick()


+ 0
- 10
src/application/baselua.cpp View File

@@ -92,16 +92,6 @@ bool LuaLoader::ExecLua(String const &lua)
return status == 0; return status == 0;
} }


//-----------------------------------------------------------------------------
double LuaLoader::GetLuaNumber(String const &var)
{
double ret;
lua_getglobal(m_lua_state, var.C());
ret = lua_tonumber(m_lua_state, -1);
lua_pop(m_lua_state, 1);
return ret;
}

//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
lua_State* LuaLoader::GetLuaState() lua_State* LuaLoader::GetLuaState()
{ {


+ 14
- 2
src/application/baselua.h View File

@@ -20,6 +20,8 @@ namespace lol
{ {


//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Class available to link C++ class to Lua methods
//--
class LuaObject class LuaObject
{ {
protected: protected:
@@ -27,11 +29,22 @@ protected:
struct LuaLibrary struct LuaLibrary
{ {
LuaLibrary() { } LuaLibrary() { }
void LoadTo(lua_State* l) { luaW_register<T>(l, name, statics, methods, ctor); }
void LoadTo(lua_State* l)
{
#define LOLUA_WRAPPER 1
#if LOLUA_WRAPPER
luaW_register<T>(l, name, statics, methods, ctor);
#else
luaL_newlib(L, statics);
luaL_newlib(L, methods);
#endif
}
}; };
}; };


//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//
//--
struct LuaFunction struct LuaFunction
{ {
LuaFunction(lua_State* l, const char* name, int (*function)(lua_State*)) LuaFunction(lua_State* l, const char* name, int (*function)(lua_State*))
@@ -106,7 +119,6 @@ public:
virtual ~LuaLoader(); virtual ~LuaLoader();


bool ExecLua(String const &lua); bool ExecLua(String const &lua);
double GetLuaNumber(String const &var);


template<typename T> template<typename T>
T GetVar(String const &name) T GetVar(String const &name)


+ 3
- 1
src/world.cpp View File

@@ -36,7 +36,7 @@ World g_world;
* Public World class * Public World class
*/ */


const luaL_Reg test1Lua::m_statics[] = { { "getTest", getTest }, { NULL, NULL } };
const luaL_Reg test1Lua::m_statics[] = { { "getTest", test1Lua::getTest }, { NULL, NULL } };
const luaL_Reg test1Lua::m_methods[] = { { NULL, NULL } }; const luaL_Reg test1Lua::m_methods[] = { { NULL, NULL } };
const char test1Lua::m_class[] = "test1"; const char test1Lua::m_class[] = "test1";


@@ -44,10 +44,12 @@ World::World()
: LuaLoader() : LuaLoader()
{ {
g_world_data.m_lua_state = GetLuaState(); g_world_data.m_lua_state = GetLuaState();
//------ DEBUG TEST
//m_test1.LoadTo(GetLuaState()); //m_test1.LoadTo(GetLuaState());
//luaL_loadfile(GetLuaState(), "lua/init.lua"); //luaL_loadfile(GetLuaState(), "lua/init.lua");
//LuaVar<int32_t> var(GetLuaState(), 1); //LuaVar<int32_t> var(GetLuaState(), 1);
//test1Lua::Library m_test1(GetLuaState()); //test1Lua::Library m_test1(GetLuaState());
//------ DEBUG TEST


} }




+ 7
- 7
src/world.h View File

@@ -38,6 +38,13 @@ public:
{ {
return new test1(); return new test1();
} }
static int getTest(lua_State* L)
{
LuaVar<int> i1(L, 1);
LuaVar<String> s2(L, 2);
LuaVar<int64_t> res = (int64_t)test1::getTest(i1.V(), s2.V());
return res.Return(L);
}


private: private:
static const luaL_Reg m_statics[]; static const luaL_Reg m_statics[];
@@ -47,13 +54,6 @@ private:
public: public:
typedef LuaLibrary<test1, m_class, m_statics, m_methods, test1Lua::New> Library; typedef LuaLibrary<test1, m_class, m_statics, m_methods, test1Lua::New> Library;
}; };
static int getTest(lua_State* L)
{
LuaVar<int> i1(L, 1);
LuaVar<String> s2(L, 2);
LuaVar<int64_t> res = (int64_t)test1::getTest(i1.V(), s2.V());
return res.Return(L);
}


class World : public LuaLoader class World : public LuaLoader
{ {


Loading…
Cancel
Save