From f41fc409959c5c050c3774c654e655589e744e22 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 14 Feb 2015 23:44:20 +0100 Subject: Make calling ScriptContext::run nicer --- src/control/MapContext.cpp | 3 +-- src/control/ScriptContext.hpp | 30 +++++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/control/MapContext.cpp b/src/control/MapContext.cpp index 8065b04..246ee96 100644 --- a/src/control/MapContext.cpp +++ b/src/control/MapContext.cpp @@ -87,8 +87,7 @@ void MapContext::interact(uint64_t time) { if (interactScript.first.empty()) return; - Model::ScriptNumber scriptTime(time); - scriptContext->run(interactScript.first, interactScript.second, nullptr, &scriptTime); + scriptContext->run(interactScript.first, interactScript.second, nullptr, time); } void MapContext::keyPressed(uint16_t key, uint64_t time) { diff --git a/src/control/ScriptContext.hpp b/src/control/ScriptContext.hpp index 9416d0e..13279ec 100644 --- a/src/control/ScriptContext.hpp +++ b/src/control/ScriptContext.hpp @@ -59,12 +59,32 @@ private: } template - size_t pushArgs(Model::ScriptValue *v, Args ...args) { - if (v) - v->push(L); - else - lua_pushnil(L); + size_t pushArgs(std::nullptr_t __attribute__((unused)) v, Args ...args) { + lua_pushnil(L); + return pushArgs(args...) + 1; + } + + template + size_t pushArgs(const std::string &v, Args ...args) { + lua_pushstring(L, v.c_str()); + return pushArgs(args...) + 1; + } + + template + size_t pushArgs(T v, Args ...args) { + lua_pushnumber(L, v); + return pushArgs(args...) + 1; + } + template + size_t pushArgs(bool v, Args ...args) { + lua_pushboolean(L, v); + return pushArgs(args...) + 1; + } + + template + size_t pushArgs(Model::ScriptValue &v, Args ...args) { + v.push(L); return pushArgs(args...) + 1; } -- cgit v1.2.3