ddnet/src/game/editor/editor_history.h
2023-12-04 22:44:20 +01:00

38 lines
805 B
C++

#ifndef GAME_EDITOR_EDITOR_HISTORY_H
#define GAME_EDITOR_EDITOR_HISTORY_H
#include "editor_action.h"
#include <queue>
class CEditorHistory
{
public:
CEditorHistory()
{
m_pEditor = nullptr;
}
~CEditorHistory()
{
Clear();
}
void RecordAction(const std::shared_ptr<IEditorAction> &pAction);
void RecordAction(const std::shared_ptr<IEditorAction> &pAction, const char *pDisplay);
void Execute(const std::shared_ptr<IEditorAction> &pAction, const char *pDisplay = nullptr);
bool Undo();
bool Redo();
void Clear();
bool CanUndo() const { return !m_vpUndoActions.empty(); }
bool CanRedo() const { return !m_vpRedoActions.empty(); }
CEditor *m_pEditor;
std::deque<std::shared_ptr<IEditorAction>> m_vpUndoActions;
std::deque<std::shared_ptr<IEditorAction>> m_vpRedoActions;
};
#endif