mirror of
https://github.com/ddnet/ddnet.git
synced 2024-10-21 00:08:19 +00:00
38 lines
805 B
C
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
|