From 0b3e29dea9863c4b5ca0c77958bbcb32a05867ca Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 14 Feb 2015 23:12:07 +0100 Subject: Some work towards scriptable events --- src/model/Entity.hpp | 15 ++++++++++++--- src/model/ScriptValue.hpp | 6 +++--- 2 files changed, 15 insertions(+), 6 deletions(-) (limited to 'src/model') diff --git a/src/model/Entity.hpp b/src/model/Entity.hpp index fc1debb..b14e122 100644 --- a/src/model/Entity.hpp +++ b/src/model/Entity.hpp @@ -28,19 +28,23 @@ #include "Direction.hpp" +#include "Scriptable.hpp" #include +#include namespace RPGEdit { namespace Model { -class Entity { +class Entity : public Scriptable { private: std::string name; + std::pair scriptInteract; + Direction direction; public: @@ -60,8 +64,13 @@ public: direction = dir; } - void interact(uint64_t time) { - std::fprintf(stderr, "Tried to interact with `%s' entity at %llu\n", name.c_str(), (unsigned long long)time); + const std::pair & getScriptInteract() const { + return scriptInteract; + } + + void setScriptInteract(const std::string &script, const std::string &name) { + scriptInteract.first = script; + scriptInteract.second = name; } }; diff --git a/src/model/ScriptValue.hpp b/src/model/ScriptValue.hpp index a82ba8e..04c4e55 100644 --- a/src/model/ScriptValue.hpp +++ b/src/model/ScriptValue.hpp @@ -116,13 +116,13 @@ public: class ScriptTable : public ScriptValue { public: - typedef std::unordered_map> MapType; + typedef std::unordered_map, std::shared_ptr> MapType; private: MapType value; public: - std::shared_ptr & operator[](const std::string &key) { + std::shared_ptr & operator[](const std::shared_ptr &key) { return value[key]; } @@ -130,7 +130,7 @@ public: lua_createtable(L, 0, value.size()); for (const auto &entry : value) { - lua_pushstring(L, entry.first.c_str()); + entry.first->push(L); entry.second->push(L); lua_settable(L, -3); -- cgit v1.2.3