From 2220078c65349693d1d69cdb26a53a2941badb1e Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Sun, 25 Mar 2018 04:06:13 +1100 Subject: [PATCH] Add ability to bypass strict no-disabled-events assertion when writing events This is since the Gamestate Inspector can be invoked mid-event (using [inspect]) and it makes use of write_events(). (cherry-picked from commit afaa75842c8914406bed75d3557ec241b0de9b6a) --- src/game_events/manager.cpp | 7 +++++-- src/game_events/manager.hpp | 2 +- src/gui/dialogs/gamestate_inspector.cpp | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/game_events/manager.cpp b/src/game_events/manager.cpp index 4fd7ff4a5ac..4e99a12cc93 100644 --- a/src/game_events/manager.cpp +++ b/src/game_events/manager.cpp @@ -132,11 +132,14 @@ void manager::add_events(const config::const_child_itors& cfgs, const std::strin } } -void manager::write_events(config& cfg) const +void manager::write_events(config& cfg, bool strict) const { for(const handler_ptr& eh : event_handlers_->get_active()) { if(eh && !eh->is_menu_item()) { - assert(!eh->disabled()); + if(strict) { + assert(!eh->disabled()); + } + cfg.add_child("event", eh->get_config());; } } diff --git a/src/game_events/manager.hpp b/src/game_events/manager.hpp index af2e39f3eae..20bc0e37dfa 100644 --- a/src/game_events/manager.hpp +++ b/src/game_events/manager.hpp @@ -68,7 +68,7 @@ public: void add_events(const config::const_child_itors& cfgs, const std::string& type = std::string()); - void write_events(config& cfg) const; + void write_events(config& cfg, bool strict = true) const; using event_func_t = std::function; void execute_on_events(const std::string& event_id, event_func_t func); diff --git a/src/gui/dialogs/gamestate_inspector.cpp b/src/gui/dialogs/gamestate_inspector.cpp index f63db1ffe79..ee9f64341fa 100644 --- a/src/gui/dialogs/gamestate_inspector.cpp +++ b/src/gui/dialogs/gamestate_inspector.cpp @@ -509,7 +509,7 @@ const display_context& single_mode_controller::dc() const { event_mode_controller::event_mode_controller(gamestate_inspector::controller& c) : single_mode_controller(c) { - single_mode_controller::events().write_events(events); + single_mode_controller::events().write_events(events, false); } void variable_mode_controller::show_list(tree_view_node& node)