1#ifndef YAZE_APP_EDITOR_DUNGEON_UNDO_ACTIONS_H_
2#define YAZE_APP_EDITOR_DUNGEON_UNDO_ACTIONS_H_
10#include "absl/status/status.h"
11#include "absl/strings/str_format.h"
31 const std::vector<zelda3::RoomObject>&)>;
34 std::vector<zelda3::RoomObject> before,
35 std::vector<zelda3::RoomObject> after,
42 absl::Status
Undo()
override {
44 return absl::InternalError(
"DungeonObjectsAction: no restore callback");
47 return absl::OkStatus();
50 absl::Status
Redo()
override {
52 return absl::InternalError(
"DungeonObjectsAction: no restore callback");
55 return absl::OkStatus();
59 return absl::StrFormat(
"Edit room %03X objects",
room_id_);
76 std::vector<zelda3::RoomObject>
after_;
98 absl::Status
Undo()
override {
100 return absl::InternalError(
101 "DungeonCustomCollisionAction: no restore callback");
104 return absl::OkStatus();
109 return absl::InternalError(
110 "DungeonCustomCollisionAction: no restore callback");
113 return absl::OkStatus();
117 return absl::StrFormat(
"Edit room %03X custom collision",
room_id_);
147 return absl::InternalError(
"DungeonWaterFillAction: no restore callback");
150 return absl::OkStatus();
155 return absl::InternalError(
"DungeonWaterFillAction: no restore callback");
158 return absl::OkStatus();
162 return absl::StrFormat(
"Edit room %03X water fill",
room_id_);
size_t MemoryUsage() const override
Approximate memory footprint for budget enforcement.
zelda3::CustomCollisionMap before_
std::string Description() const override
Human-readable description (e.g., "Paint 12 tiles on map 5")
absl::Status Undo() override
std::function< void(int room_id, const zelda3::CustomCollisionMap &)> RestoreFn
DungeonCustomCollisionAction(int room_id, zelda3::CustomCollisionMap before, zelda3::CustomCollisionMap after, RestoreFn restore)
absl::Status Redo() override
bool CanMergeWith(const UndoAction &) const override
zelda3::CustomCollisionMap after_
Undoable action for dungeon room object edits.
std::vector< zelda3::RoomObject > after_
std::vector< zelda3::RoomObject > before_
bool CanMergeWith(const UndoAction &) const override
size_t MemoryUsage() const override
Approximate memory footprint for budget enforcement.
absl::Status Undo() override
std::string Description() const override
Human-readable description (e.g., "Paint 12 tiles on map 5")
std::function< void(int room_id, const std::vector< zelda3::RoomObject > &)> RestoreFn
DungeonObjectsAction(int room_id, std::vector< zelda3::RoomObject > before, std::vector< zelda3::RoomObject > after, RestoreFn restore)
absl::Status Redo() override
std::string Description() const override
Human-readable description (e.g., "Paint 12 tiles on map 5")
bool CanMergeWith(const UndoAction &) const override
absl::Status Undo() override
size_t MemoryUsage() const override
Approximate memory footprint for budget enforcement.
std::function< void(int room_id, const WaterFillSnapshot &)> RestoreFn
DungeonWaterFillAction(int room_id, WaterFillSnapshot before, WaterFillSnapshot after, RestoreFn restore)
WaterFillSnapshot before_
absl::Status Redo() override
Abstract base for all undoable actions (Command pattern)
std::vector< uint16_t > offsets