56 lines
990 B
C++
56 lines
990 B
C++
#ifndef YAZE_APP_CORE_EDITOR_H
|
|
#define YAZE_APP_CORE_EDITOR_H
|
|
|
|
#include "absl/status/status.h"
|
|
|
|
namespace yaze {
|
|
namespace app {
|
|
|
|
/**
|
|
* @namespace yaze::app::editor
|
|
* @brief Editors are the view controllers for the application.
|
|
*/
|
|
namespace editor {
|
|
|
|
enum class EditorType {
|
|
kAssembly,
|
|
kDungeon,
|
|
kGraphics,
|
|
kMusic,
|
|
kOverworld,
|
|
kPalette,
|
|
kScreen,
|
|
kSprite,
|
|
};
|
|
|
|
/**
|
|
* @class Editor
|
|
* @brief Interface for editor classes.
|
|
*
|
|
* Provides basic editing operations that each editor should implement.
|
|
*/
|
|
class Editor {
|
|
public:
|
|
Editor() = default;
|
|
virtual ~Editor() = default;
|
|
|
|
virtual absl::Status Cut() = 0;
|
|
virtual absl::Status Copy() = 0;
|
|
virtual absl::Status Paste() = 0;
|
|
|
|
virtual absl::Status Undo() = 0;
|
|
virtual absl::Status Redo() = 0;
|
|
|
|
virtual absl::Status Update() = 0;
|
|
|
|
EditorType type() const { return type_; }
|
|
|
|
protected:
|
|
EditorType type_;
|
|
};
|
|
|
|
} // namespace editor
|
|
} // namespace app
|
|
} // namespace yaze
|
|
|
|
#endif // YAZE_APP_CORE_EDITOR_H
|