summaryrefslogtreecommitdiffstats
path: root/src/frontend/mame/luaengine_render.cpp
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2020-12-09 01:01:22 +1100
committer Vas Crabb <vas@vastheman.com>2020-12-09 01:10:26 +1100
commite008c7b1b1042d644be2a1e177ffa15d53e942c5 (patch)
treed248f9fcbe15563c46c1ae9605d35a19ed4ada5e /src/frontend/mame/luaengine_render.cpp
parent06568860e7a30424bab61498cd2a8a44889e4412 (diff)
-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.
Diffstat (limited to 'src/frontend/mame/luaengine_render.cpp')
-rw-r--r--src/frontend/mame/luaengine_render.cpp82
1 files changed, 2 insertions, 80 deletions
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<render_target> const &targets;
-};
-
} // anonymous namespace
+
namespace sol {
template <> struct is_container<layout_file_views> : std::true_type { };
template <> struct is_container<layout_view_items> : std::true_type { };
-template <> struct is_container<render_manager_targets> : std::true_type { };
template <>
@@ -239,76 +231,6 @@ public:
}
};
-
-template <>
-struct usertype_container<render_manager_targets> : lua_engine::immutable_container_helper<render_manager_targets, simple_list<render_target> const, simple_list<render_target>::auto_iterator>
-{
-private:
- using target_list = simple_list<render_target>;
-
- static int next_pairs(lua_State *L)
- {
- indexed_iterator &i(stack::unqualified_get<user<indexed_iterator> >(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<std::ptrdiff_t>(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<render_target>(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<user<indexed_iterator> >(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<render_target>(m.targets()); });
}