From e008c7b1b1042d644be2a1e177ffa15d53e942c5 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Wed, 9 Dec 2020 01:01:22 +1100 Subject: -Lua engine cleanup, input edition: * Modernised and cleaned up Lua bindings for input classes. * Exposed the input_sequence_poller class to Lua and updated the autofire and cheat plugins to use it, rather than continuing to pretend it's part of the input manager. * Exposed more of the natural keyboard manager, including the ability to enable/disable individual keyboard and keypad devices like you can from the keyboard mode menu. * Exposed a few more things on ioport_port and input_device. -plugins/cheat: Fixed menu item not updating visually when disabling a cheat with UI Left. -plugins/cheatfind: Fixed not finding the first screen after screen enumerator was exposed as an object rather than using a table. -bwidow.cpp, pacman.cpp: Minor cleanup to recent changes. --- src/frontend/mame/luaengine_render.cpp | 82 +--------------------------------- 1 file changed, 2 insertions(+), 80 deletions(-) (limited to 'src/frontend/mame/luaengine_render.cpp') diff --git a/src/frontend/mame/luaengine_render.cpp b/src/frontend/mame/luaengine_render.cpp index 5df401c9b17..9fff8f4171b 100644 --- a/src/frontend/mame/luaengine_render.cpp +++ b/src/frontend/mame/luaengine_render.cpp @@ -33,21 +33,13 @@ struct layout_view_items layout_view &view; }; - -struct render_manager_targets -{ - render_manager_targets(render_manager &m) : targets(m.targets()) { } - - simple_list const &targets; -}; - } // anonymous namespace + namespace sol { template <> struct is_container : std::true_type { }; template <> struct is_container : std::true_type { }; -template <> struct is_container : std::true_type { }; template <> @@ -239,76 +231,6 @@ public: } }; - -template <> -struct usertype_container : lua_engine::immutable_container_helper const, simple_list::auto_iterator> -{ -private: - using target_list = simple_list; - - static int next_pairs(lua_State *L) - { - indexed_iterator &i(stack::unqualified_get >(L, 1)); - if (i.src.end() == i.it) - return stack::push(L, lua_nil); - int result; - result = stack::push(L, i.ix + 1); - result += stack::push_reference(L, *i.it); - ++i.it; - ++i.ix; - return result; - } - -public: - static int at(lua_State *L) - { - render_manager_targets &self(get_self(L)); - std::ptrdiff_t const index(stack::unqualified_get(L, 2)); - if ((0 >= index) || (self.targets.count() < index)) - return stack::push(L, lua_nil); - else - return stack::push_reference(L, *self.targets.find(index - 1)); - } - - static int get(lua_State *L) { return at(L); } - static int index_get(lua_State *L) { return at(L); } - - static int index_of(lua_State *L) - { - render_manager_targets &self(get_self(L)); - render_target &target(stack::unqualified_get(L, 2)); - int const found(self.targets.indexof(target)); - if (0 > found) - return stack::push(L, lua_nil); - else - return stack::push(L, found + 1); - } - - static int size(lua_State *L) - { - render_manager_targets &self(get_self(L)); - return stack::push(L, self.targets.count()); - } - - static int empty(lua_State *L) - { - render_manager_targets &self(get_self(L)); - return stack::push(L, self.targets.empty()); - } - - static int next(lua_State *L) { return stack::push(L, next_pairs); } - static int pairs(lua_State *L) { return ipairs(L); } - - static int ipairs(lua_State *L) - { - render_manager_targets &self(get_self(L)); - stack::push(L, next_pairs); - stack::push >(L, self.targets, self.targets.begin()); - stack::push(L, lua_nil); - return 3; - } -}; - } // namespace sol @@ -619,6 +541,6 @@ void lua_engine::initialize_render(sol::table &emu) render_type["max_update_rate"] = &render_manager::max_update_rate; render_type["ui_target"] = &render_manager::ui_target; render_type["ui_container"] = &render_manager::ui_container; - render_type["targets"] = sol::property([] (render_manager &m) { return render_manager_targets(m); }); + render_type["targets"] = sol::property([] (render_manager &m) { return simple_list_wrapper(m.targets()); }); } -- cgit v1.2.3