The Battle for Wesnoth  1.15.6+dev
Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes | List of all members
editor::editor_action Class Referenceabstract

Base class for all editor actions. More...

#include <action_base.hpp>

Inheritance diagram for editor::editor_action:
Inheritance graph

Public Member Functions

 editor_action ()
virtual ~editor_action ()
virtual editor_actionclone () const =0
 Action cloning. More...
virtual editor_actionperform (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 std::string & 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

Detailed Description

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 40 of file action_base.hpp.

Constructor & Destructor Documentation

◆ editor_action()

editor::editor_action::editor_action ( )

Definition at line 34 of file action.cpp.

References id_, instance_count_, and LOG_ED.

◆ ~editor_action()

editor::editor_action::~editor_action ( )

Definition at line 44 of file action.cpp.

References id_, instance_count_, and LOG_ED.

Member Function Documentation

◆ action_count()

int editor::editor_action::action_count ( ) const
the actual number of actions contained within

Reimplemented in editor::editor_action_chain.

Definition at line 53 of file action.cpp.

Referenced by editor::editor_action_chain::editor_action_chain().

◆ clone()

virtual editor_action* editor::editor_action::clone ( ) const
pure virtual

◆ get_description()

std::string editor::editor_action::get_description ( ) const

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 58 of file action.cpp.

Referenced by get_name().

◆ get_id()

int editor::editor_action::get_id ( ) const

Debugging aid.

Return an unique identifier of this Action.

Definition at line 92 of file action_base.hpp.

References id_.

Referenced by editor::map_context::perform_action(), and editor::map_context::perform_partial_action().

◆ get_instance_count()

static int editor::editor_action::get_instance_count ( )

Debugging aid.

Return number of existing instances of Actions.

Definition at line 100 of file action_base.hpp.

References instance_count_.

Referenced by editor::map_context::perform_action(), editor::map_context::perform_partial_action(), and editor::start().

◆ get_name()

virtual const std::string& editor::editor_action::get_name ( ) const

◆ perform()

editor_action * editor::editor_action::perform ( map_context mc) const

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_deselect, editor::editor_action_village_delete, editor::editor_action_label, editor::editor_action_item, editor::editor_action_unit, editor::editor_action_select, and editor::editor_action_village.

Definition at line 63 of file action.cpp.

References IMPLEMENT_ACTION, editor::map_context::map(), and perform_without_undo().

Referenced by editor::editor_action_chain::editor_action_chain(), editor::editor_action_fill::editor_action_fill(), editor::editor_action_paint_area::editor_action_paint_area(), editor::editor_action_paste::editor_action_paste(), editor::editor_action_shuffle_area::editor_action_shuffle_area(), editor::editor_action_starting_position::editor_action_starting_position(), editor::map_context::perform_action(), editor::map_context::perform_action_between_stacks(), and editor::map_context::perform_partial_action().

◆ perform_without_undo()

virtual void editor::editor_action::perform_without_undo ( map_context ) const
pure virtual

Member Data Documentation

◆ id_

const int editor::editor_action::id_

Definition at line 109 of file action_base.hpp.

Referenced by editor_action(), get_id(), and ~editor_action().

◆ instance_count_

int editor::editor_action::instance_count_ = 0

Definition at line 107 of file action_base.hpp.

Referenced by editor_action(), get_instance_count(), and ~editor_action().

◆ next_id_

int editor::editor_action::next_id_ = 1

Definition at line 106 of file action_base.hpp.

The documentation for this class was generated from the following files: