From f254c9d88f057d9eeef494723bb7f7b68636f56b Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 8 Jul 2015 02:48:46 +1000 Subject: [PATCH] Implemented lua, shaking out latent bugs --- application.cpp | 16 +++++++-- application.hpp | 3 ++ example_scene.cpp | 37 ++++++++++++++++--- example_scene.hpp | 19 +++++++++- libmap/region_pager_api.cpp | 2 ++ libmap/region_pager_base.cpp | 2 ++ libmap/region_pager_lua.hpp | 2 ++ linit.cpp | 67 +++++++++++++++++++++++++++++++++++ makefile | 8 +++++ rsc/startup.lua | 25 +++++++++++++ rsc/terrain.bmp | Bin 0 -> 553014 bytes 11 files changed, 173 insertions(+), 8 deletions(-) create mode 100644 linit.cpp create mode 100644 rsc/startup.lua create mode 100644 rsc/terrain.bmp diff --git a/application.cpp b/application.cpp index 4f5ac88..a4e1b32 100644 --- a/application.cpp +++ b/application.cpp @@ -56,6 +56,16 @@ void Application::Init(int argc, char* argv[]) { //set the hook for the renderer BaseScene::SetRenderer(renderer); + + //setup lua + lua = luaL_newstate(); + if (!lua) { + std::ostringstream msg; + msg << "Failed to create the lua state"; + throw(std::runtime_error(msg.str())); + } + + luaL_openlibs(lua); } void Application::Proc() { @@ -103,7 +113,9 @@ void Application::Proc() { } void Application::Quit() { - //cleran up after the program + lua_close(lua); + + //clean up after the program BaseScene::SetRenderer(nullptr); SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); @@ -125,7 +137,7 @@ void Application::ProcessSceneSignal(SceneSignal signal) { switch(signal) { case SceneSignal::FIRST: case SceneSignal::EXAMPLE_SCENE: - activeScene = new ExampleScene(); + activeScene = new ExampleScene(lua); break; default: { std::ostringstream msg; diff --git a/application.hpp b/application.hpp index 8a7f487..9ec19ca 100644 --- a/application.hpp +++ b/application.hpp @@ -24,6 +24,7 @@ #include "base_scene.hpp" #include "scene_signal.hpp" +#include "lua.hpp" #include "SDL2/SDL.h" //TODO: do something with these @@ -50,4 +51,6 @@ private: //TODO: build a "window" class? SDL_Window* window = nullptr; SDL_Renderer* renderer = nullptr; + + lua_State* lua = nullptr; }; \ No newline at end of file diff --git a/example_scene.cpp b/example_scene.cpp index 33be9ab..8267a15 100644 --- a/example_scene.cpp +++ b/example_scene.cpp @@ -21,8 +21,24 @@ */ #include "example_scene.hpp" -ExampleScene::ExampleScene() { - // +#include + +ExampleScene::ExampleScene(lua_State* L) { + lua = L; + + tileSheet.Load(GetRenderer(), "./rsc/terrain.bmp", 32, 32); + + //set the pager's hook + regionPager.SetLuaState(lua); + + //load the file as a chunk + luaL_loadfile(lua, "./rsc/startup.lua"); + + //push the pager as an arg + lua_pushlightuserdata(lua, static_cast(®ionPager)); + + //run the function + lua_pcall(lua, 1, LUA_MULTRET, 0); } ExampleScene::~ExampleScene() { @@ -46,7 +62,9 @@ void ExampleScene::FrameEnd() { } void ExampleScene::RenderFrame(SDL_Renderer* renderer) { - // + for (std::list::iterator it = regionPager.GetContainer()->begin(); it != regionPager.GetContainer()->end(); it++) { + tileSheet.DrawRegionTo(renderer, &(*it), camera.x, camera.y, camera.scale, camera.scale); + } } //------------------------- @@ -54,11 +72,20 @@ void ExampleScene::RenderFrame(SDL_Renderer* renderer) { //------------------------- void ExampleScene::MouseMotion(SDL_MouseMotionEvent const& event) { - // + //right mouse button moves the camera + if (event.state & SDL_BUTTON_RMASK) { + camera.x -= event.xrel; + camera.y -= event.yrel; + } } void ExampleScene::MouseButtonDown(SDL_MouseButtonEvent const& event) { - // + switch(event.button) { + case SDL_BUTTON_LEFT: + //change the selected tile + regionPager.SetTile((event.x + camera.x) / 32, (event.y + camera.y) / 32, layer, selection); + break; + } } void ExampleScene::MouseButtonUp(SDL_MouseButtonEvent const& event) { diff --git a/example_scene.hpp b/example_scene.hpp index 2f18af1..c9ed5c7 100644 --- a/example_scene.hpp +++ b/example_scene.hpp @@ -22,10 +22,14 @@ #pragma once #include "base_scene.hpp" +#include "region_pager_lua.hpp" +#include "tile_sheet.hpp" + +#include "lua.hpp" class ExampleScene : public BaseScene { public: - ExampleScene(); + ExampleScene(lua_State* L); ~ExampleScene(); void RenderFrame(SDL_Renderer* renderer) override; @@ -43,4 +47,17 @@ private: void MouseWheel(SDL_MouseWheelEvent const& event) override; void KeyDown(SDL_KeyboardEvent const& event) override; void KeyUp(SDL_KeyboardEvent const& event) override; + + //members + lua_State* lua = nullptr; + RegionPagerLua regionPager; + TileSheet tileSheet; + struct { + int x = 0; + int y = 0; + double scale = 1.0; + } camera; + + int selection = 1; + int layer = 0; }; diff --git a/libmap/region_pager_api.cpp b/libmap/region_pager_api.cpp index fd366db..10eaf95 100644 --- a/libmap/region_pager_api.cpp +++ b/libmap/region_pager_api.cpp @@ -104,6 +104,8 @@ static int unloadRegion(lua_State* L) { return 0; } +//TODO: check that parameters are not null + static int setOnLoad(lua_State* L) { RegionPagerLua* pager = reinterpret_cast(lua_touserdata(L, 1)); luaL_unref(L, LUA_REGISTRYINDEX, pager->GetLoadReference()); diff --git a/libmap/region_pager_base.cpp b/libmap/region_pager_base.cpp index 857dabd..24b2858 100644 --- a/libmap/region_pager_base.cpp +++ b/libmap/region_pager_base.cpp @@ -28,6 +28,8 @@ RegionPagerBase::~RegionPagerBase() { UnloadAll(); }; +//TODO: add nullptr checks to the calls to GetRegion() + Region::type_t RegionPagerBase::SetTile(int x, int y, int z, Region::type_t v) { Region* ptr = GetRegion(x, y); return ptr->SetTile(x - ptr->GetX(), y - ptr->GetY(), z, v); diff --git a/libmap/region_pager_lua.hpp b/libmap/region_pager_lua.hpp index 0b64b0a..3789ff0 100644 --- a/libmap/region_pager_lua.hpp +++ b/libmap/region_pager_lua.hpp @@ -28,6 +28,8 @@ #include #include +//NOTE: set the lua hook before use + class RegionPagerLua : public RegionPagerBase { public: RegionPagerLua() = default; diff --git a/linit.cpp b/linit.cpp new file mode 100644 index 0000000..bf54db3 --- /dev/null +++ b/linit.cpp @@ -0,0 +1,67 @@ +/* +** $Id: linit.c,v 1.32.1.1 2013/04/12 18:48:47 roberto Exp $ +** Initialization of libraries for lua.c and other clients +** See Copyright Notice in lua.h +*/ +/* +** If you embed Lua in your program and need to open the standard +** libraries, call luaL_openlibs in your program. If you need a +** different set of libraries, copy this file to your project and edit +** it to suit your needs. +*/ + + +#define linit_c +#define LUA_LIB + +#include "lua.hpp" + +#include "region_api.hpp" +#include "region_pager_api.hpp" + +/* +** these libs are loaded by lua.c and are readily available to any Lua +** program +*/ +static const luaL_Reg loadedlibs[] = { + {"_G", luaopen_base}, + {LUA_LOADLIBNAME, luaopen_package}, + {LUA_COLIBNAME, luaopen_coroutine}, + {LUA_TABLIBNAME, luaopen_table}, + {LUA_IOLIBNAME, luaopen_io}, + {LUA_OSLIBNAME, luaopen_os}, + {LUA_STRLIBNAME, luaopen_string}, + {LUA_BITLIBNAME, luaopen_bit32}, + {LUA_MATHLIBNAME, luaopen_math}, + {LUA_DBLIBNAME, luaopen_debug}, + + //custom stuff + {TORTUGA_REGION_API, openRegionAPI}, + {TORTUGA_REGION_PAGER_API, openRegionPagerAPI}, + {NULL, NULL} +}; + +/* +** these libs are preloaded and must be required before used +*/ +static const luaL_Reg preloadedlibs[] = { + {NULL, NULL} +}; + + +LUALIB_API void luaL_openlibs (lua_State *L) { + const luaL_Reg *lib; + /* call open functions from 'loadedlibs' and set results to global table */ + for (lib = loadedlibs; lib->func; lib++) { + luaL_requiref(L, lib->name, lib->func, 1); + lua_pop(L, 1); /* remove lib */ + } + /* add open functions from 'preloadedlibs' into 'package.preload' table */ + luaL_getsubtable(L, LUA_REGISTRYINDEX, "_PRELOAD"); + for (lib = preloadedlibs; lib->func; lib++) { + lua_pushcfunction(L, lib->func); + lua_setfield(L, -2, lib->name); + } + lua_pop(L, 1); /* remove _PRELOAD table */ +} + diff --git a/makefile b/makefile index 180faa3..11ac490 100644 --- a/makefile +++ b/makefile @@ -1,3 +1,7 @@ +#NOTE: I know it's a wonky spot, sue me +debug: export CXXFLAGS+=-g +debug: clean all + #include directories INCLUDES+=. common libmap @@ -8,6 +12,10 @@ ifeq ($(OS),Windows_NT) LIBS+=-lmingw32 endif LIBS+=-lSDL2main -lSDL2 -lSDL2_image -llua +ifeq ($(shell uname), Linux) + #I don't know what this does, but Ubuntu needs it (dynamic linking for lua) + LIBS+=-ldl +endif #flags CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) diff --git a/rsc/startup.lua b/rsc/startup.lua new file mode 100644 index 0000000..f03e295 --- /dev/null +++ b/rsc/startup.lua @@ -0,0 +1,25 @@ +--args are: userdata RegionPagerLua; + +print("Running startup script") + +pager = ... + +---[[ + +--BUG: RegionPagerLua fails without these +region_pager.SetOnLoad(pager, function(r) + print("Calling SetOnLoad's lambda") +end) +region_pager.SetOnSave(pager, function(r) + print("Calling SetOnSave's lambda") +end) +region_pager.SetOnCreate(pager, function(r) + print("Calling SetOnCreate's lambda") +end) +region_pager.SetOnUnload(pager, function(r) + print("Calling SetOnUnload's lambda") +end) + +--]] + +print("Finished startup script") \ No newline at end of file diff --git a/rsc/terrain.bmp b/rsc/terrain.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0a39c74c88f031545124e48e0c2f01249ab064cf GIT binary patch literal 553014 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 b{-SX|w1+m