Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/Action.cpp

    rcc04b7 rf9352d  
    1010#include "Actions/Action.hpp"
    1111#include "Actions/ActionRegistry.hpp"
     12#include "Actions/ActionHistory.hpp"
    1213
    1314using namespace std;
     15
     16// An empty state to indicate success
     17Action::state_ptr Action::success = Action::state_ptr(new ActionState());
     18Action::state_ptr Action::failure = Action::state_ptr(new ActionState());
    1419
    1520Action::Action(std::string _name,bool _doRegister) :
     
    1722{
    1823  if(_doRegister){
    19     ActionRegistry::getRegistry()->registerAction(this);
     24    ActionRegistry::getInstance().registerAction(this);
    2025  }
    2126}
     
    2732  return name;
    2833}
     34
     35void Action::call(){
     36  // forward to private virtual
     37  state_ptr state = performCall();
     38  if(shouldUndo() && state != failure){
     39    if(canUndo()){
     40      ActionHistory::getInstance().addElement(this,state);
     41    }
     42    else{
     43      ActionHistory::getInstance().clear();
     44    }
     45  }
     46}
     47Action::state_ptr Action::undo(state_ptr _state) {
     48  // forward to private virtual
     49  return performUndo(_state);
     50}
     51Action::state_ptr Action::redo(state_ptr _state) {
     52  // forward to private virtual
     53  return performRedo(_state);
     54}
     55
     56
     57bool Action::isActive(){
     58  return true;
     59}
Note: See TracChangeset for help on using the changeset viewer.