A mouse action receives events from the controller, and responds to them by creating an appropriate editor_action object. More...
#include <mouse_action.hpp>
Public Member Functions | |
mouse_action (common_palette &palette, const CKey &key) | |
virtual | ~mouse_action () |
virtual bool | has_context_menu () const |
virtual void | move (editor_display &disp, const map_location &hex) |
Mouse move (not a drag). More... | |
void | update_brush_highlights (editor_display &disp, const map_location &hex) |
Unconditionally update the brush highlights for the current tool when hex is the center location. More... | |
virtual std::set< map_location > | affected_hexes (editor_display &disp, const map_location &hex) |
Locations that would be affected by a click, used by move to update highlights. More... | |
virtual std::unique_ptr< editor_action > | click_left (editor_display &disp, int x, int y)=0 |
A click, possibly the beginning of a drag. More... | |
virtual std::unique_ptr< editor_action > | click_right (editor_display &disp, int x, int y)=0 |
A click, possibly the beginning of a drag. More... | |
virtual std::unique_ptr< editor_action > | drag_left (editor_display &disp, int x, int y, bool &partial, editor_action *last_undo) |
Drag operation. More... | |
virtual std::unique_ptr< editor_action > | drag_right (editor_display &disp, int x, int y, bool &partial, editor_action *last_undo) |
Drag operation. More... | |
virtual std::unique_ptr< editor_action > | drag_end_left (editor_display &disp, int x, int y) |
The end of dragging. More... | |
virtual std::unique_ptr< editor_action > | drag_end_right (editor_display &disp, int x, int y) |
virtual std::unique_ptr< editor_action > | up_left (editor_display &disp, int x, int y) |
virtual std::unique_ptr< editor_action > | up_right (editor_display &disp, int x, int y) |
virtual std::unique_ptr< editor_action > | key_event (editor_display &disp, const SDL_Event &e) |
Function called by the controller on a key event for the current mouse action. More... | |
void | set_toolbar_button (const theme::menu *value) |
Helper variable setter - pointer to a toolbar menu/button used for highlighting the current action. More... | |
const theme::menu * | toolbar_button () const |
Getter for the (possibly nullptr) associated menu/button. More... | |
common_palette & | get_palette () |
Getter for the associated palette. More... | |
virtual bool | supports_brushes () const |
Whether we need the brush bar, is used to grey it out. More... | |
virtual void | set_mouse_overlay (editor_display &disp) |
Set the mouse overlay for this action. More... | |
Protected Member Functions | |
bool | has_alt_modifier () const |
bool | has_shift_modifier () const |
bool | has_ctrl_modifier () const |
void | set_terrain_mouse_overlay (editor_display &disp, const t_translation::terrain_code &fg, const t_translation::terrain_code &bg) |
Helper function for derived classes that need a active-terrain mouse overlay. More... | |
Protected Attributes | |
map_location | previous_move_hex_ |
The hex previously used in move operations. More... | |
const CKey & | key_ |
Key presses, used for modifiers (alt, shift) in some operations. More... | |
Private Attributes | |
const theme::menu * | toolbar_button_ |
Pointer to an associated menu/button, if such exists. More... | |
common_palette & | palette_ |
Pointer to an associated palette, if such exists. More... | |
A mouse action receives events from the controller, and responds to them by creating an appropriate editor_action object.
Mouse actions may store some temporary data such as the last clicked hex for better handling of click-drag. They should not modify the map or trigger refreshes, but may set brush locations and similar overlays that should be visible around the mouse cursor, hence the display references are not const.
Definition at line 35 of file mouse_action.hpp.
|
inline |
Definition at line 38 of file mouse_action.hpp.
|
inlinevirtual |
Definition at line 46 of file mouse_action.hpp.
|
virtual |
Locations that would be affected by a click, used by move to update highlights.
Defaults to highlight the mouseover hex. Maybe also used for actually performing the action in click() or drag().
Reimplemented in editor::mouse_action_select, editor::mouse_action_fill, editor::mouse_action_paste, and editor::brush_drag_mouse_action.
Definition at line 48 of file mouse_action.cpp.
Referenced by update_brush_highlights().
|
pure virtual |
A click, possibly the beginning of a drag.
Must be overridden.
Implemented in editor::mouse_action_unit, editor::mouse_action_map_label, editor::mouse_action_item, editor::mouse_action_starting_position, editor::mouse_action_fill, editor::mouse_action_paste, editor::mouse_action_paint, editor::brush_drag_mouse_action, and editor::mouse_action_village.
Referenced by editor::editor_controller::left_click().
|
pure virtual |
A click, possibly the beginning of a drag.
Must be overridden.
Implemented in editor::mouse_action_select, editor::mouse_action_map_label, editor::mouse_action_item, editor::mouse_action_starting_position, editor::mouse_action_fill, editor::mouse_action_paste, editor::mouse_action_paint, editor::brush_drag_mouse_action, editor::mouse_action_village, and editor::mouse_action_unit.
Referenced by editor::editor_controller::right_click().
|
virtual |
The end of dragging.
Defaults to no action.
Reimplemented in editor::mouse_action_unit, editor::mouse_action_map_label, and editor::mouse_action_item.
Definition at line 68 of file mouse_action.cpp.
Referenced by editor::editor_controller::left_drag_end().
|
virtual |
Definition at line 74 of file mouse_action.cpp.
Referenced by editor::editor_controller::right_drag_end().
|
virtual |
Drag operation.
A click should have occurred earlier. Defaults to no action.
Reimplemented in editor::mouse_action_unit, editor::mouse_action_map_label, editor::mouse_action_item, and editor::brush_drag_mouse_action.
Definition at line 56 of file mouse_action.cpp.
Referenced by editor::editor_controller::mouse_motion().
|
virtual |
Drag operation.
A click should have occurred earlier. Defaults to no action.
Reimplemented in editor::brush_drag_mouse_action.
Definition at line 62 of file mouse_action.cpp.
Referenced by editor::editor_controller::mouse_motion().
|
inline |
Getter for the associated palette.
Definition at line 117 of file mouse_action.hpp.
References palette_.
Referenced by editor::editor_toolkit::get_palette().
|
protected |
|
virtual |
Reimplemented in editor::mouse_action_unit, editor::mouse_action_select, editor::mouse_action_item, and editor::mouse_action_paste.
Definition at line 28 of file mouse_action.cpp.
Referenced by editor::editor_controller::right_click_show_menu().
|
protected |
Definition at line 138 of file mouse_action.cpp.
References key_.
Referenced by editor::mouse_action_paint::click_left(), editor::mouse_action_fill::click_left(), editor::mouse_action_paint::click_perform_left(), editor::mouse_action_select::click_perform_left(), editor::mouse_action_paint::click_perform_right(), editor::mouse_action_paint::click_right(), editor::mouse_action_fill::click_right(), and editor::mouse_action_starting_position::up_left().
|
protected |
Definition at line 133 of file mouse_action.cpp.
References key_.
Referenced by editor::mouse_action_select::affected_hexes(), editor::mouse_action_fill::click_left(), editor::mouse_action_paint::click_perform_left(), editor::mouse_action_paint::click_perform_right(), editor::mouse_action_fill::click_right(), and editor::mouse_action_select::set_mouse_overlay().
|
virtual |
Function called by the controller on a key event for the current mouse action.
Defaults to starting position processing.
Reimplemented in editor::mouse_action_select.
Definition at line 92 of file mouse_action.cpp.
References display::get_map(), has_alt_modifier(), gamemap_base::is_special_location(), editor::editor_display::map(), gamemap_base::MAX_PLAYERS, gamemap_base::on_board(), previous_move_hex_, display::scroll_to_tile(), gamemap_base::starting_position(), map_location::valid(), and display::WARP.
Referenced by editor::mouse_action_select::key_event(), and editor::editor_controller::process_keyup_event().
|
virtual |
Mouse move (not a drag).
Never changes anything (other than temporary highlights and similar)
Reimplemented in editor::mouse_action_unit, and editor::mouse_action_item.
Definition at line 33 of file mouse_action.cpp.
References previous_move_hex_, and update_brush_highlights().
Referenced by editor::editor_controller::mouse_motion().
|
virtual |
Set the mouse overlay for this action.
Defaults to an empty overlay.
Reimplemented in editor::mouse_action_village, editor::mouse_action_unit, editor::mouse_action_select, editor::mouse_action_map_label, editor::mouse_action_item, editor::mouse_action_starting_position, editor::mouse_action_fill, editor::mouse_action_paste, and editor::mouse_action_paint.
Definition at line 123 of file mouse_action.cpp.
References editor::editor_display::clear_mouseover_hex_overlay().
Referenced by editor::editor_toolkit::set_mouseover_overlay().
|
protected |
Helper function for derived classes that need a active-terrain mouse overlay.
Definition at line 147 of file mouse_action.cpp.
References editor::editor_display::clear_mouseover_hex_overlay(), terrain_type::editor_image(), ERR_ED, image::exists(), display::get_map(), image::get_size(), gamemap::get_terrain_info(), image::get_texture(), game_config::path, editor::editor_display::set_mouseover_hex_overlay(), and utf8::size().
Referenced by editor::mouse_action_paint::set_mouse_overlay(), and editor::mouse_action_fill::set_mouse_overlay().
|
inline |
Helper variable setter - pointer to a toolbar menu/button used for highlighting the current action.
Should always be nullptr or point to a valid menu.
Definition at line 107 of file mouse_action.hpp.
References toolbar_button_.
|
inlinevirtual |
Whether we need the brush bar, is used to grey it out.
Reimplemented in editor::mouse_action_select, and editor::mouse_action_paint.
Definition at line 120 of file mouse_action.hpp.
Referenced by editor::editor_controller::can_execute_command().
|
inline |
Getter for the (possibly nullptr) associated menu/button.
Definition at line 112 of file mouse_action.hpp.
References toolbar_button_.
|
virtual |
Reimplemented in editor::mouse_action_village, editor::mouse_action_unit, editor::mouse_action_map_label, editor::mouse_action_item, and editor::mouse_action_starting_position.
Definition at line 86 of file mouse_action.cpp.
Referenced by editor::editor_controller::left_mouse_up().
|
virtual |
Reimplemented in editor::mouse_action_village, editor::mouse_action_map_label, and editor::mouse_action_starting_position.
Definition at line 80 of file mouse_action.cpp.
Referenced by editor::editor_controller::right_mouse_up().
void editor::mouse_action::update_brush_highlights | ( | editor_display & | disp, |
const map_location & | hex | ||
) |
Unconditionally update the brush highlights for the current tool when hex is the center location.
Definition at line 43 of file mouse_action.cpp.
References affected_hexes(), and editor::editor_display::set_brush_locs().
Referenced by editor::mouse_action_select::key_event(), move(), editor::mouse_action_item::move(), editor::mouse_action_unit::move(), editor::mouse_action_starting_position::up_left(), editor::mouse_action_map_label::up_left(), and editor::editor_toolkit::update_mouse_action_highlights().
|
protected |
Key presses, used for modifiers (alt, shift) in some operations.
Definition at line 148 of file mouse_action.hpp.
Referenced by has_alt_modifier(), has_ctrl_modifier(), and has_shift_modifier().
|
private |
Pointer to an associated palette, if such exists.
Definition at line 159 of file mouse_action.hpp.
Referenced by get_palette().
|
protected |
The hex previously used in move operations.
Definition at line 143 of file mouse_action.hpp.
Referenced by key_event(), editor::mouse_action_select::key_event(), move(), editor::mouse_action_item::move(), and editor::mouse_action_unit::move().
|
private |
Pointer to an associated menu/button, if such exists.
Definition at line 154 of file mouse_action.hpp.
Referenced by set_toolbar_button(), and toolbar_button().