Martin Schmidt has proposed merging lp:~martinschmidt/widelands/observer_building_spaces into lp:widelands.
Requested reviews: Widelands Developers (widelands-dev) Related bugs: Bug #1419537 in widelands: "Allow Observers to show building spaces" https://bugs.launchpad.net/widelands/+bug/1419537 For more details, see: https://code.launchpad.net/~martinschmidt/widelands/observer_building_spaces/+merge/249558 Allow observers to see builing spaces of all players -- Your team Widelands Developers is requested to review the proposed merge of lp:~martinschmidt/widelands/observer_building_spaces into lp:widelands.
=== modified file 'src/wui/interactive_spectator.cc' --- src/wui/interactive_spectator.cc 2014-12-03 08:14:35 +0000 +++ src/wui/interactive_spectator.cc 2015-02-12 19:10:45 +0000 @@ -24,6 +24,7 @@ #include "chat/chat.h" #include "graphic/graphic.h" #include "logic/game_controller.h" +#include "logic/player.h" #include "ui_basic/editbox.h" #include "ui_basic/multilinetextarea.h" #include "ui_basic/textarea.h" @@ -34,6 +35,28 @@ #include "wui/game_options_menu.h" #include "wui/general_statistics_menu.h" + +namespace { + +// This function is the callback for recalculation of field overlays for +// spectators (iteration over all players and first match returned) +int32_t all_player_overlay_callback_function + (Widelands::TCoords<Widelands::FCoords> const c, const Widelands::Game& game) +{ + Widelands::PlayerNumber const nr_players = game.map().get_nrplayers(); + + iterate_players_existing(p, nr_players, game, player) { + Widelands::NodeCaps nc = player->get_buildcaps(c); + if( nc > Widelands::NodeCaps::CAPS_NONE ){ + return nc; + } + } + + return Widelands::NodeCaps::CAPS_NONE; +} + +} + /** * Setup the replay UI for the given game. */ @@ -58,7 +81,11 @@ m_toggle_statistics (INIT_BTN("menu_general_stats", "general_stats", _("Statistics"))), m_toggle_minimap - (INIT_BTN("menu_toggle_minimap", "minimap", _("Minimap"))) + (INIT_BTN("menu_toggle_minimap", "minimap", _("Minimap"))), + m_toggle_buildhelp + (INIT_BTN("menu_toggle_buildhelp", "buildhelp", _("Show Building Spaces (on/off)"))), + m_showbuildhelp(false) + { m_toggle_chat.sigclicked.connect(boost::bind(&InteractiveSpectator::toggle_chat, this)); m_exit.sigclicked.connect(boost::bind(&InteractiveSpectator::exit_btn, this)); @@ -66,6 +93,7 @@ m_toggle_options_menu.sigclicked.connect(boost::bind(&InteractiveSpectator::toggle_options_menu, this)); m_toggle_statistics.sigclicked.connect(boost::bind(&InteractiveSpectator::toggle_statistics, this)); m_toggle_minimap.sigclicked.connect(boost::bind(&InteractiveSpectator::toggle_minimap, this)); + m_toggle_buildhelp.sigclicked.connect(boost::bind(&InteractiveSpectator::toggle_buildhelp, this)); m_toolbar.set_layout_toplevel(true); if (!is_multiplayer()) { @@ -75,6 +103,7 @@ m_toolbar.add(&m_toggle_options_menu, UI::Box::AlignLeft); m_toolbar.add(&m_toggle_statistics, UI::Box::AlignLeft); m_toolbar.add(&m_toggle_minimap, UI::Box::AlignLeft); + m_toolbar.add(&m_toggle_buildhelp, UI::Box::AlignLeft); m_toolbar.add(&m_toggle_chat, UI::Box::AlignLeft); // TODO(unknown): instead of making unneeded buttons invisible after generation, @@ -148,6 +177,8 @@ Widelands::Map & map = game().map(); OverlayManager & overlay_manager = map.overlay_manager(); overlay_manager.show_buildhelp(false); + overlay_manager.register_overlay_callback_function + (boost::bind(&all_player_overlay_callback_function, _1, boost::ref(game()) )); // Recalc whole map for changed owner stuff map.recalc_whole_map(game().world()); @@ -205,6 +236,15 @@ } +void InteractiveSpectator::toggle_buildhelp(){ + m_showbuildhelp = !m_showbuildhelp; + Widelands::Map & map = game().map(); + OverlayManager & overlay_manager = map.overlay_manager(); + overlay_manager.show_buildhelp(m_showbuildhelp); + m_toggle_buildhelp.set_perm_pressed(m_showbuildhelp); +} + + bool InteractiveSpectator::can_see(Widelands::PlayerNumber) const { return true; @@ -245,6 +285,10 @@ { if (down) switch (code.sym) { + case SDLK_SPACE: + toggle_buildhelp(); + return true; + case SDLK_m: toggle_minimap(); return true; === modified file 'src/wui/interactive_spectator.h' --- src/wui/interactive_spectator.h 2014-10-14 06:30:20 +0000 +++ src/wui/interactive_spectator.h 2015-02-12 19:10:45 +0000 @@ -50,6 +50,7 @@ void toggle_chat(); void toggle_options_menu(); void toggle_statistics(); + void toggle_buildhelp(); void exit_btn(); void save_btn(); bool can_see(Widelands::PlayerNumber) const override; @@ -64,10 +65,13 @@ UI::Button m_toggle_options_menu; UI::Button m_toggle_statistics; UI::Button m_toggle_minimap; + UI::Button m_toggle_buildhelp; UI::UniqueWindow::Registry m_chat; UI::UniqueWindow::Registry m_options; + + bool m_showbuildhelp; };
_______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : widelands-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp