From 5926df106ad76348627ceaf60da1ccae51a9d66f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=9Aniatowski?= Date: Sun, 6 Jul 2008 16:27:36 +0100 Subject: [PATCH] Make editor2 editor_controller derive from controller_base... ...and use editor_mouse_handler --- src/editor2/editor_controller.cpp | 97 ++++++------------------------- src/editor2/editor_controller.hpp | 28 ++++----- 2 files changed, 32 insertions(+), 93 deletions(-) diff --git a/src/editor2/editor_controller.cpp b/src/editor2/editor_controller.cpp index 900fab58c20..af86f05101d 100644 --- a/src/editor2/editor_controller.cpp +++ b/src/editor2/editor_controller.cpp @@ -23,8 +23,10 @@ namespace editor2 { editor_controller::editor_controller(const config &game_config, CVideo& video) -: game_config_(game_config), map_(editor_map::new_map(game_config, 44, 33, t_translation::GRASS_LAND)) +: controller_base(SDL_GetTicks(), game_config, video) +, map_(editor_map::new_map(game_config, 44, 33, t_translation::GRASS_LAND)) , gui_(NULL) +, mouse_handler_(gui_, map_) { init(video); gui_->invalidate_game_status(); @@ -40,6 +42,7 @@ void editor_controller::init(CVideo& video) const config* theme_cfg = get_theme(game_config_, "editor2"); theme_cfg = theme_cfg ? theme_cfg : &dummy; gui_ = new editor_display(video, map_, *theme_cfg, game_config_, config()); + mouse_handler_.set_gui(gui_); } editor_controller::~editor_controller() @@ -50,89 +53,23 @@ editor_controller::~editor_controller() void editor_controller::main_loop() { for(;;) { - int mousex, mousey; - const int scroll_speed = preferences::scroll_speed(); - Uint8 mouse_flags = SDL_GetMouseState(&mousex,&mousey); - const bool l_button_down = (0 != (mouse_flags & SDL_BUTTON_LMASK)); - const bool r_button_down = (0 != (mouse_flags & SDL_BUTTON_RMASK)); - const bool m_button_down = (0 != (mouse_flags & SDL_BUTTON_MMASK)); - - const gamemap::location cur_hex = gui_->hex_clicked_on(mousex,mousey); - const theme::menu* const m = gui_->menu_pressed(); - if (m != NULL) { - const SDL_Rect& menu_loc = m->location(gui_->screen_area()); - const int x = menu_loc.x + 1; - const int y = menu_loc.y + menu_loc.h + 1; -// show_menu(m->items(), x, y, false); - } - - if(key_[SDLK_UP] || mousey == 0) { - gui_->scroll(0,-scroll_speed); - } - if(key_[SDLK_DOWN] || mousey == gui_->h()-1) { - gui_->scroll(0,scroll_speed); - } - if(key_[SDLK_LEFT] || mousex == 0) { - gui_->scroll(-scroll_speed,0); - } - if(key_[SDLK_RIGHT] || mousex == gui_->w()-1) { - gui_->scroll(scroll_speed,0); - } - - if (l_button_down) { -// left_button_down(mousex, mousey); - } - else { -// if (l_button_held_func_ == MOVE_SELECTION) { - // When it is detected that the mouse is no longer down - // and we are in the progress of moving a selection, - // perform the movement. -// perform_selection_move(); -// } - } - if (r_button_down) { -// right_button_down(mousex, mousey); - } - if (m_button_down) { -// middle_button_down(mousex, mousey); - } - - gui_->draw(true, true); - events::raise_draw_event(); - - // When the map has changed, wait until the left mouse button - // is not held down, and then update the minimap and - // the starting position labels. -// if (map_dirty_) { -// if (!l_button_down && !r_button_down) { -// if (auto_update_) { -// gui_.rebuild_all(); -// gui_.invalidate_all(); -// map_dirty_ = false; -// } - //gui_.recalculate_minimap(); -// recalculate_starting_pos_labels(); -// } -// } - gui_->update_display(); - SDL_Delay(20); - events::pump(); -// if (everything_dirty_) { -// redraw_everything(); -// everything_dirty_ = false; -// } -// if (abort_ == ABORT_NORMALLY) { -// if (!confirm_exit_and_save()) { -// set_abort(DONT_ABORT); -// } -// } -// mouse_moved_ = false; + play_slice(); } } -bool editor_controller::can_execute_command(hotkey::HOTKEY_COMMAND, int) const +bool editor_controller::can_execute_command(hotkey::HOTKEY_COMMAND, int /*index*/) const { return false; } - + +editor_mouse_handler& editor_controller::get_mouse_handler_base() +{ + return mouse_handler_; +} + +editor_display& editor_controller::get_display() +{ + return *gui_; +} + } //end namespace editor2 diff --git a/src/editor2/editor_controller.hpp b/src/editor2/editor_controller.hpp index 4c37dd92bf4..cc1d1ab3f09 100644 --- a/src/editor2/editor_controller.hpp +++ b/src/editor2/editor_controller.hpp @@ -15,39 +15,41 @@ #define EDITOR2_EDITOR_CONTROLLER_HPP_INCLUDED #include "editor_common.hpp" -#include "editor_map.hpp" #include "editor_display.hpp" +#include "editor_map.hpp" +#include "editor_mouse_handler.hpp" + +#include "../config.hpp" +#include "../controller_base.hpp" +#include "../events.hpp" +#include "../hotkeys.hpp" +#include "../key.hpp" +#include "../sdl_utils.hpp" #include -#include "../key.hpp" -#include "../config.hpp" -#include "../events.hpp" -#include "../hotkeys.hpp" -#include "../sdl_utils.hpp" - namespace editor2 { -class editor_controller : public events::handler, public hotkey::command_executor, +class editor_controller : public controller_base, private boost::noncopyable { public: editor_controller(const config &game_config, CVideo& video); ~editor_controller(); void main_loop(); - bool can_execute_command(hotkey::HOTKEY_COMMAND, int) const; - void handle_event(const SDL_Event&){} + bool can_execute_command(hotkey::HOTKEY_COMMAND, int index = -1) const; + protected: + editor_mouse_handler& get_mouse_handler_base(); + editor_display& get_display(); private: /** init the display object and general set-up */ void init(CVideo& video); - /** cref to the main game config */ - const config& game_config_; /** The current map object */ editor_map map_; /** The display object used and owned by the editor. Possibly recreated when a new map is created */ editor_display* gui_; + editor_mouse_handler mouse_handler_; - CKey key_; bool map_dirty_; };