[jasper/world/studio] Make UndoCommand undo/redo return ox::Error
All checks were successful
Build / build (push) Successful in 3m9s
All checks were successful
Build / build (push) Successful in 3m9s
This commit is contained in:
parent
815f23a0b5
commit
6eb78f90cf
@ -20,17 +20,18 @@ AddObjectSet::AddObjectSet(WorldDoc &doc, ox::UUID const&objSetUuid):
|
||||
}
|
||||
}
|
||||
|
||||
void AddObjectSet::redo() noexcept {
|
||||
ox::Error AddObjectSet::redo() noexcept {
|
||||
m_doc.objSets.insert(m_insertIdx, {
|
||||
.path = std::move(m_path),
|
||||
.id = ++m_doc.objSetIdIdx,
|
||||
});
|
||||
return {};
|
||||
}
|
||||
|
||||
void AddObjectSet::undo() noexcept {
|
||||
ox::Error AddObjectSet::undo() noexcept {
|
||||
m_path = std::move(m_doc.objSets[m_insertIdx].path);
|
||||
--m_doc.objSetIdIdx;
|
||||
std::ignore = m_doc.objSets.erase(m_insertIdx);
|
||||
return m_doc.objSets.erase(m_insertIdx).error;
|
||||
}
|
||||
|
||||
int AddObjectSet::commandId() const noexcept {
|
||||
@ -43,13 +44,14 @@ RmObjectSet::RmObjectSet(WorldDoc &doc, size_t idx):
|
||||
m_idx(idx) {
|
||||
}
|
||||
|
||||
void RmObjectSet::redo() noexcept {
|
||||
ox::Error RmObjectSet::redo() noexcept {
|
||||
m_entry = std::move(m_doc.objSets[m_idx]);
|
||||
std::ignore = m_doc.objSets.erase(m_idx);
|
||||
return m_doc.objSets.erase(m_idx).error;
|
||||
}
|
||||
|
||||
void RmObjectSet::undo() noexcept {
|
||||
ox::Error RmObjectSet::undo() noexcept {
|
||||
m_doc.objSets.emplace(m_idx, std::move(m_entry));
|
||||
return {};
|
||||
}
|
||||
|
||||
int RmObjectSet::commandId() const noexcept {
|
||||
|
@ -19,8 +19,8 @@ class AddObjectSet: public studio::UndoCommand {
|
||||
ox::String m_path;
|
||||
public:
|
||||
AddObjectSet(WorldDoc &doc, ox::UUID const&objSetUuid);
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
[[nodiscard]]
|
||||
@ -36,8 +36,8 @@ class RmObjectSet: public studio::UndoCommand {
|
||||
ObjectSetEntry m_entry;
|
||||
public:
|
||||
RmObjectSet(WorldDoc &doc, size_t idx);
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
|
@ -18,16 +18,18 @@ EditWorldSizeCommand::EditWorldSizeCommand(
|
||||
m_oldSize(m_doc.columns, m_doc.rows),
|
||||
m_newSize(size) {}
|
||||
|
||||
void EditWorldSizeCommand::redo() noexcept {
|
||||
ox::Error EditWorldSizeCommand::redo() noexcept {
|
||||
m_oldMap = m_doc.tiles;
|
||||
resize(m_doc, m_newSize);
|
||||
oxLogError(loadWorldStatic(m_objCache, m_doc).moveTo(m_worldStatic));
|
||||
oxReturnError(loadWorldStatic(m_objCache, m_doc).moveTo(m_worldStatic));
|
||||
return {};
|
||||
}
|
||||
|
||||
void EditWorldSizeCommand::undo() noexcept {
|
||||
ox::Error EditWorldSizeCommand::undo() noexcept {
|
||||
resize(m_doc, m_oldSize);
|
||||
m_doc.tiles = std::move(m_oldMap);
|
||||
oxLogError(loadWorldStatic(m_objCache, m_doc).moveTo(m_worldStatic));
|
||||
oxReturnError(loadWorldStatic(m_objCache, m_doc).moveTo(m_worldStatic));
|
||||
return {};
|
||||
}
|
||||
|
||||
bool EditWorldSizeCommand::mergeWith(studio::UndoCommand const&cmd) noexcept {
|
||||
|
@ -27,8 +27,8 @@ class EditWorldSizeCommand: public studio::UndoCommand {
|
||||
WorldDoc &doc,
|
||||
WorldStatic &worldStatic,
|
||||
ox::Size const&size);
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
bool mergeWith(studio::UndoCommand const&cmd) noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
|
@ -27,12 +27,14 @@ ModifyTilesCommand::ModifyTilesCommand(
|
||||
}
|
||||
}
|
||||
|
||||
void ModifyTilesCommand::redo() noexcept {
|
||||
ox::Error ModifyTilesCommand::redo() noexcept {
|
||||
swap();
|
||||
return {};
|
||||
}
|
||||
|
||||
void ModifyTilesCommand::undo() noexcept {
|
||||
ox::Error ModifyTilesCommand::undo() noexcept {
|
||||
swap();
|
||||
return {};
|
||||
}
|
||||
|
||||
int ModifyTilesCommand::commandId() const noexcept {
|
||||
|
@ -29,8 +29,8 @@ class ModifyTilesCommand: public studio::UndoCommand {
|
||||
WorldStatic &worldStatic,
|
||||
ObjectCache &objCache,
|
||||
ox::Vector<Mod> mods);
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
private:
|
||||
|
@ -19,15 +19,17 @@ AddObject::AddObject(WorldObjectSet &doc) noexcept:
|
||||
}
|
||||
}
|
||||
|
||||
void AddObject::redo() noexcept {
|
||||
ox::Error AddObject::redo() noexcept {
|
||||
++m_doc.objIdIdx;
|
||||
m_doc.objects.emplace(m_insertIdx, std::move(m_obj));
|
||||
return {};
|
||||
}
|
||||
|
||||
void AddObject::undo() noexcept {
|
||||
ox::Error AddObject::undo() noexcept {
|
||||
m_obj = std::move(m_doc.objects[m_insertIdx]);
|
||||
std::ignore = m_doc.objects.erase(m_insertIdx);
|
||||
oxReturnError(m_doc.objects.erase(m_insertIdx));
|
||||
--m_doc.objIdIdx;
|
||||
return {};
|
||||
}
|
||||
|
||||
int AddObject::commandId() const noexcept {
|
||||
|
@ -19,8 +19,8 @@ class AddObject: public studio::UndoCommand {
|
||||
WorldObject m_obj{};
|
||||
public:
|
||||
AddObject(WorldObjectSet &doc) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
[[nodiscard]]
|
||||
|
@ -14,20 +14,21 @@ AddPalette::AddPalette(WorldObjectSet &doc, ox::FileAddress palAddr) noexcept:
|
||||
m_palAddr(std::move(palAddr)) {
|
||||
}
|
||||
|
||||
void AddPalette::redo() noexcept {
|
||||
ox::Error AddPalette::redo() noexcept {
|
||||
m_doc.palettes.emplace_back(PaletteCycle{
|
||||
.palette = m_palAddr
|
||||
});
|
||||
std::sort(m_doc.palettes.begin(), m_doc.palettes.end(), [](PaletteCycle const&a, PaletteCycle const&b) {
|
||||
return a.palette.getPath().or_value("") < b.palette.getPath().or_value("");
|
||||
});
|
||||
return {};
|
||||
}
|
||||
|
||||
void AddPalette::undo() noexcept {
|
||||
ox::Error AddPalette::undo() noexcept {
|
||||
auto const idx = std::find_if(m_doc.palettes.begin(), m_doc.palettes.end(), [this](PaletteCycle const&v) {
|
||||
return v.palette == m_palAddr;
|
||||
});
|
||||
std::ignore = m_doc.palettes.erase(idx);
|
||||
return m_doc.palettes.erase(idx).error;
|
||||
}
|
||||
|
||||
int AddPalette::commandId() const noexcept {
|
||||
|
@ -18,8 +18,8 @@ class AddPalette: public studio::UndoCommand {
|
||||
ox::FileAddress m_palAddr;
|
||||
public:
|
||||
AddPalette(WorldObjectSet &doc, ox::FileAddress palAddr) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
|
@ -19,16 +19,18 @@ ChangeTileSheet::ChangeTileSheet(
|
||||
m_selectedTilesheetIdx(selectedTilesheetIdx) {
|
||||
}
|
||||
|
||||
void ChangeTileSheet::redo() noexcept {
|
||||
ox::Error ChangeTileSheet::redo() noexcept {
|
||||
m_oldVal = std::move(m_doc.tilesheet);
|
||||
m_doc.tilesheet = std::move(m_newVal);
|
||||
m_selectedTilesheetIdx = m_newIdx;
|
||||
return {};
|
||||
}
|
||||
|
||||
void ChangeTileSheet::undo() noexcept {
|
||||
ox::Error ChangeTileSheet::undo() noexcept {
|
||||
m_newVal = std::move(m_doc.tilesheet);
|
||||
m_doc.tilesheet = std::move(m_oldVal);
|
||||
m_selectedTilesheetIdx = m_oldIdx;
|
||||
return {};
|
||||
}
|
||||
|
||||
int ChangeTileSheet::commandId() const noexcept {
|
||||
|
@ -26,8 +26,8 @@ class ChangeTileSheet: public studio::UndoCommand {
|
||||
ox::FileAddress newVal,
|
||||
size_t newIdx,
|
||||
size_t &selectedTilesheetIdx) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
|
@ -16,15 +16,17 @@ EditObjectName::EditObjectName(WorldObjectSet &doc, size_t objIdx, ox::String ne
|
||||
m_newVal(std::move(newName)) {
|
||||
}
|
||||
|
||||
void EditObjectName::redo() noexcept {
|
||||
ox::Error EditObjectName::redo() noexcept {
|
||||
auto &obj = m_doc.objects[m_objIdx];
|
||||
obj.name = std::move(m_newVal);
|
||||
return {};
|
||||
}
|
||||
|
||||
void EditObjectName::undo() noexcept {
|
||||
ox::Error EditObjectName::undo() noexcept {
|
||||
auto &obj = m_doc.objects[m_objIdx];
|
||||
m_newVal = std::move(obj.name);
|
||||
obj.name = m_oldVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
int EditObjectName::commandId() const noexcept {
|
||||
@ -51,14 +53,16 @@ EditObjectSubSheet::EditObjectSubSheet(
|
||||
m_oldVal(m_doc.objects[m_objIdx].subsheetId) {
|
||||
}
|
||||
|
||||
void EditObjectSubSheet::redo() noexcept {
|
||||
ox::Error EditObjectSubSheet::redo() noexcept {
|
||||
auto &obj = m_doc.objects[m_objIdx];
|
||||
obj.subsheetId = m_newVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
void EditObjectSubSheet::undo() noexcept {
|
||||
ox::Error EditObjectSubSheet::undo() noexcept {
|
||||
auto &obj = m_doc.objects[m_objIdx];
|
||||
obj.subsheetId = m_oldVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
int EditObjectSubSheet::commandId() const noexcept {
|
||||
@ -73,14 +77,16 @@ EditObjectPalette::EditObjectPalette(WorldObjectSet &doc, size_t objIdx, uint16_
|
||||
m_newVal(palBank) {
|
||||
}
|
||||
|
||||
void EditObjectPalette::redo() noexcept {
|
||||
ox::Error EditObjectPalette::redo() noexcept {
|
||||
auto &obj = m_doc.objects[m_objIdx];
|
||||
obj.palBank = m_newVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
void EditObjectPalette::undo() noexcept {
|
||||
ox::Error EditObjectPalette::undo() noexcept {
|
||||
auto &obj = m_doc.objects[m_objIdx];
|
||||
obj.palBank = m_oldVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
[[nodiscard]]
|
||||
@ -96,14 +102,16 @@ EditObjectCollisionMap::EditObjectCollisionMap(WorldObjectSet &doc, size_t objId
|
||||
m_newVal(colMap) {
|
||||
}
|
||||
|
||||
void EditObjectCollisionMap::redo() noexcept {
|
||||
ox::Error EditObjectCollisionMap::redo() noexcept {
|
||||
auto &obj = m_doc.objects[m_objIdx];
|
||||
obj.collisionMap = m_newVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
void EditObjectCollisionMap::undo() noexcept {
|
||||
ox::Error EditObjectCollisionMap::undo() noexcept {
|
||||
auto &obj = m_doc.objects[m_objIdx];
|
||||
obj.collisionMap = m_oldVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
[[nodiscard]]
|
||||
|
@ -20,8 +20,8 @@ class EditObjectName: public studio::UndoCommand {
|
||||
ox::String m_newVal{};
|
||||
public:
|
||||
EditObjectName(WorldObjectSet &doc, size_t objIdx, ox::String newName) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
bool mergeWith(UndoCommand const&cmd) noexcept override;
|
||||
@ -35,8 +35,8 @@ class EditObjectSubSheet: public studio::UndoCommand {
|
||||
ncore::SubSheetId const m_oldVal{};
|
||||
public:
|
||||
EditObjectSubSheet(WorldObjectSet &doc, size_t objIdx, ncore::SubSheetId subSheetId) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
@ -49,8 +49,8 @@ class EditObjectPalette: public studio::UndoCommand {
|
||||
uint16_t const m_newVal{};
|
||||
public:
|
||||
EditObjectPalette(WorldObjectSet &doc, size_t objIdx, uint16_t palBank) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
@ -63,8 +63,8 @@ class EditObjectCollisionMap: public studio::UndoCommand {
|
||||
CollisionMap const m_newVal{};
|
||||
public:
|
||||
EditObjectCollisionMap(WorldObjectSet &doc, size_t objIdx, CollisionMap colMap) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
|
@ -13,12 +13,14 @@ EditPalette::EditPalette(PaletteCycle &doc, uint16_t interval) noexcept:
|
||||
m_newVal(interval) {
|
||||
}
|
||||
|
||||
void EditPalette::redo() noexcept {
|
||||
ox::Error EditPalette::redo() noexcept {
|
||||
m_doc.intervalMs = m_newVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
void EditPalette::undo() noexcept {
|
||||
ox::Error EditPalette::undo() noexcept {
|
||||
m_doc.intervalMs = m_oldVal;
|
||||
return {};
|
||||
}
|
||||
|
||||
int EditPalette::commandId() const noexcept {
|
||||
|
@ -19,8 +19,8 @@ class EditPalette: public studio::UndoCommand {
|
||||
uint16_t const m_newVal{};
|
||||
public:
|
||||
EditPalette(PaletteCycle &doc, uint16_t interval) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
|
@ -12,13 +12,14 @@ RmObject::RmObject(WorldObjectSet &doc, size_t const rmIdx) noexcept:
|
||||
m_rmIdx(rmIdx) {
|
||||
}
|
||||
|
||||
void RmObject::redo() noexcept {
|
||||
ox::Error RmObject::redo() noexcept {
|
||||
m_obj = std::move(m_doc.objects[m_rmIdx]);
|
||||
std::ignore = m_doc.objects.erase(m_rmIdx);
|
||||
return m_doc.objects.erase(m_rmIdx).error;
|
||||
}
|
||||
|
||||
void RmObject::undo() noexcept {
|
||||
ox::Error RmObject::undo() noexcept {
|
||||
m_doc.objects.emplace(m_rmIdx, std::move(m_obj));
|
||||
return {};
|
||||
}
|
||||
|
||||
int RmObject::commandId() const noexcept {
|
||||
|
@ -19,8 +19,8 @@ class RmObject: public studio::UndoCommand {
|
||||
WorldObject m_obj{};
|
||||
public:
|
||||
RmObject(WorldObjectSet &doc, size_t rmIdx) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
|
@ -14,16 +14,18 @@ RmPalette::RmPalette(WorldObjectSet &doc, size_t rmIdx) noexcept:
|
||||
m_rmIdx(rmIdx) {
|
||||
}
|
||||
|
||||
void RmPalette::redo() noexcept {
|
||||
ox::Error RmPalette::redo() noexcept {
|
||||
m_pal = std::move(m_doc.palettes[m_rmIdx]);
|
||||
std::ignore = m_doc.palettes.erase(m_rmIdx);
|
||||
return {};
|
||||
}
|
||||
|
||||
void RmPalette::undo() noexcept {
|
||||
ox::Error RmPalette::undo() noexcept {
|
||||
m_doc.palettes.emplace_back(std::move(m_pal));
|
||||
std::sort(m_doc.palettes.begin(), m_doc.palettes.end(), [](PaletteCycle const&a, PaletteCycle const&b) {
|
||||
return a.palette.getPath().or_value("") < b.palette.getPath().or_value("");
|
||||
});
|
||||
return {};
|
||||
}
|
||||
|
||||
int RmPalette::commandId() const noexcept {
|
||||
|
@ -19,8 +19,8 @@ class RmPalette: public studio::UndoCommand {
|
||||
size_t const m_rmIdx = 0;
|
||||
public:
|
||||
RmPalette(WorldObjectSet &doc, size_t rmIdx) noexcept;
|
||||
void redo() noexcept override;
|
||||
void undo() noexcept override;
|
||||
ox::Error redo() noexcept override;
|
||||
ox::Error undo() noexcept override;
|
||||
[[nodiscard]]
|
||||
int commandId() const noexcept override;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user