Base class for all editor actions. More...
#include <action_base.hpp>
Public Member Functions | |
editor_action () | |
virtual | ~editor_action () |
virtual editor_action * | clone () const =0 |
Action cloning. More... | |
virtual editor_action * | perform (map_context &) const |
Perform the action, returning an undo action that, when performed, shall reverse any effects of this action. More... | |
virtual void | perform_without_undo (map_context &) const =0 |
Perform the action without creating an undo action. More... | |
virtual int | action_count () const |
virtual const char * | get_name () const |
virtual std::string | get_description () const |
A textual description of the action. More... | |
int | get_id () const |
Debugging aid. More... | |
Static Public Member Functions | |
static int | get_instance_count () |
Debugging aid. More... | |
Private Attributes | |
const int | id_ |
Static Private Attributes | |
static int | next_id_ = 1 |
static int | instance_count_ = 0 |
Base class for all editor actions.
An editor_action object encapsulates the action to be performed on a map, in separation from the user interface or display, and provides a way of reversing its affects by creating an "undo" action. All the actions can be processed via this base class' virtual functions.
Definition at line 41 of file action_base.hpp.
editor::editor_action::editor_action | ( | ) |
Definition at line 33 of file action.cpp.
References id_, instance_count_, and LOG_ED.
|
virtual |
Definition at line 42 of file action.cpp.
References id_, instance_count_, and LOG_ED.
|
virtual |
Reimplemented in editor::editor_action_chain.
Definition at line 50 of file action.cpp.
|
pure virtual |
Action cloning.
Implemented in editor::editor_action_shuffle_area, editor::editor_action_create_mask, editor::editor_action_apply_mask, editor::editor_action_resize_map, editor::editor_action_starting_position, editor::editor_action_fill, editor::editor_action_paint_area, editor::editor_action_paste, editor::editor_action_select_inverse, editor::editor_action_item_facing, editor::editor_action_chain, editor::editor_action_unit_facing, editor::editor_action_select_none, editor::editor_action_item_replace, editor::editor_action_unit_replace, editor::editor_action_select_all, editor::editor_action_label_delete, editor::editor_action_item_delete, editor::editor_action_unit_delete, editor::editor_action_village_delete, editor::editor_action_deselect, editor::editor_action_item, editor::editor_action_label, editor::editor_action_unit, editor::editor_action_whole_map, editor::editor_action_select, and editor::editor_action_village.
Referenced by editor::editor_action_chain::editor_action_chain(), and editor::editor_action_chain::operator=().
|
virtual |
A textual description of the action.
For use e.g. in the undo menu, to have a "Undo: Fill with Grassland" item rather than just "Undo". Should be overridden by derived Actions, defaults to a debug message.
Definition at line 55 of file action.cpp.
|
inline |
Debugging aid.
Return an unique identifier of this Action.
Definition at line 89 of file action_base.hpp.
References id_.
Referenced by editor::map_context::perform_action(), and editor::map_context::perform_partial_action().
|
inlinestatic |
Debugging aid.
Return number of existing instances of Actions.
Definition at line 94 of file action_base.hpp.
References instance_count_.
Referenced by editor::map_context::perform_action(), editor::map_context::perform_partial_action(), and editor::start().
|
inlinevirtual |
Reimplemented in editor::editor_action_shuffle_area, editor::editor_action_create_mask, editor::editor_action_apply_mask, editor::editor_action_resize_map, editor::editor_action_starting_position, editor::editor_action_fill, editor::editor_action_paint_area, editor::editor_action_paste, editor::editor_action_area, editor::editor_action_location_terrain, editor::editor_action_location, editor::editor_action_chain, editor::editor_action_select_inverse, editor::editor_action_item_facing, editor::editor_action_unit_facing, editor::editor_action_select_none, editor::editor_action_item_replace, editor::editor_action_unit_replace, editor::editor_action_select_all, editor::editor_action_label_delete, editor::editor_action_extendable, editor::editor_action_item_delete, editor::editor_action_unit_delete, editor::editor_action_village_delete, editor::editor_action_deselect, editor::editor_action_item, editor::editor_action_label, editor::editor_action_unit, editor::editor_action_select, editor::editor_action_whole_map, and editor::editor_action_village.
Definition at line 75 of file action_base.hpp.
Referenced by editor::map_context::perform_action(), and editor::map_context::perform_partial_action().
|
virtual |
Perform the action, returning an undo action that, when performed, shall reverse any effects of this action.
The undo action object is owned by the caller. Default behavior is to create a whole-map undo, call the perform_without_undo function and return the undo object.
Reimplemented in editor::editor_action_shuffle_area, editor::editor_action_starting_position, editor::editor_action_fill, editor::editor_action_paint_area, editor::editor_action_paste, editor::editor_action_chain, editor::editor_action_select_inverse, editor::editor_action_item_facing, editor::editor_action_unit_facing, editor::editor_action_select_none, editor::editor_action_item_replace, editor::editor_action_unit_replace, editor::editor_action_select_all, editor::editor_action_label_delete, editor::editor_action_item_delete, editor::editor_action_unit_delete, editor::editor_action_village_delete, editor::editor_action_deselect, editor::editor_action_item, editor::editor_action_label, editor::editor_action_unit, editor::editor_action_select, and editor::editor_action_village.
Definition at line 60 of file action.cpp.
References editor::map_context::get_map(), perform_without_undo(), and util::unique_ptr< T >::release().
Referenced by editor::map_context::perform_action(), editor::map_context::perform_action_between_stacks(), and editor::map_context::perform_partial_action().
|
pure virtual |
Perform the action without creating an undo action.
Implemented in editor::editor_action_shuffle_area, editor::editor_action_create_mask, editor::editor_action_apply_mask, editor::editor_action_resize_map, editor::editor_action_starting_position, editor::editor_action_fill, editor::editor_action_paint_area, editor::editor_action_paste, editor::editor_action_chain, editor::editor_action_select_inverse, editor::editor_action_item_facing, editor::editor_action_unit_facing, editor::editor_action_select_none, editor::editor_action_item_replace, editor::editor_action_unit_replace, editor::editor_action_select_all, editor::editor_action_label_delete, editor::editor_action_item_delete, editor::editor_action_unit_delete, editor::editor_action_village_delete, editor::editor_action_deselect, editor::editor_action_item, editor::editor_action_label, editor::editor_action_unit, editor::editor_action_select, editor::editor_action_whole_map, and editor::editor_action_village.
Referenced by perform().
|
private |
Definition at line 99 of file action_base.hpp.
Referenced by editor_action(), get_id(), and ~editor_action().
|
staticprivate |
Definition at line 98 of file action_base.hpp.
Referenced by editor_action(), get_instance_count(), and ~editor_action().
|
staticprivate |
Definition at line 97 of file action_base.hpp.