Undo now takes into account list position, and started work on bookmark undo
This commit is contained in:
parent
92115957b2
commit
0e22c8ac3e
7 changed files with 64 additions and 16 deletions
|
|
@ -11,8 +11,26 @@ void BookmarkData::jump_to(World& world) const {
|
|||
world.drawData.cam.smooth_move_to(world, coords, windowSize.cast<float>());
|
||||
}
|
||||
|
||||
void BookmarkData::scale_up(const WorldScalar& scaleUpAmount) {
|
||||
coords.scale_about(WorldVec{0, 0}, scaleUpAmount, true);
|
||||
}
|
||||
|
||||
BookmarkListItem::BookmarkListItem() {}
|
||||
|
||||
BookmarkListItem::BookmarkListItem(NetworkingObjects::NetObjManager& netObjMan, const BookmarkCompleteInitData& initData) {
|
||||
nameData = netObjMan.make_obj<NameData>();
|
||||
nameData->name = initData.name;
|
||||
if(initData.folderList) {
|
||||
auto& initFolderList = initData.folderList.value();
|
||||
folderData = std::make_unique<BookmarkFolderData>();
|
||||
folderData->folderList = netObjMan.make_obj<NetworkingObjects::NetObjOrderedList<BookmarkListItem>>();
|
||||
for(auto& initFolder : initFolderList)
|
||||
folderData->folderList->emplace_back_direct(folderData->folderList, netObjMan, initFolder);
|
||||
}
|
||||
else
|
||||
bookmarkData = std::make_unique<BookmarkData>(initData.bookmarkData.value());
|
||||
}
|
||||
|
||||
BookmarkListItem::BookmarkListItem(NetworkingObjects::NetObjManager& netObjMan, const std::string& initName, bool isFolder, const BookmarkData& initBookmarkData) {
|
||||
if(isFolder) {
|
||||
folderData = std::make_unique<BookmarkFolderData>();
|
||||
|
|
@ -24,6 +42,20 @@ BookmarkListItem::BookmarkListItem(NetworkingObjects::NetObjManager& netObjMan,
|
|||
nameData->name = initName;
|
||||
}
|
||||
|
||||
BookmarkCompleteInitData BookmarkListItem::get_complete_init_data() {
|
||||
BookmarkCompleteInitData toRet;
|
||||
toRet.name = nameData->name;
|
||||
if(folderData) {
|
||||
toRet.folderList = std::vector<BookmarkCompleteInitData>();
|
||||
auto& folderListToRet = toRet.folderList.value();
|
||||
for(auto& b : *folderData->folderList)
|
||||
folderListToRet.emplace_back(b.obj->get_complete_init_data());
|
||||
}
|
||||
else
|
||||
toRet.bookmarkData = *bookmarkData;
|
||||
return toRet;
|
||||
}
|
||||
|
||||
void BookmarkListItem::reassign_netobj_ids_call() {
|
||||
if(folderData)
|
||||
folderData->folderList.reassign_ids();
|
||||
|
|
@ -36,7 +68,7 @@ void BookmarkListItem::scale_up(const WorldScalar& scaleUpAmount) {
|
|||
i.obj->scale_up(scaleUpAmount);
|
||||
}
|
||||
else
|
||||
bookmarkData->coords.scale_about(WorldVec{0, 0}, scaleUpAmount, true);
|
||||
bookmarkData->scale_up(scaleUpAmount);
|
||||
}
|
||||
|
||||
bool BookmarkListItem::is_folder() const {
|
||||
|
|
|
|||
|
|
@ -14,12 +14,20 @@ struct BookmarkData {
|
|||
template <class Archive> void serialize(Archive& a) {
|
||||
a(coords, windowSize);
|
||||
}
|
||||
void scale_up(const WorldScalar& scaleUpAmount);
|
||||
void jump_to(World& world) const;
|
||||
};
|
||||
|
||||
struct BookmarkCompleteInitData {
|
||||
std::string name;
|
||||
std::optional<std::vector<BookmarkCompleteInitData>> folderList;
|
||||
std::optional<BookmarkData> bookmarkData;
|
||||
};
|
||||
|
||||
class BookmarkListItem {
|
||||
public:
|
||||
BookmarkListItem();
|
||||
BookmarkListItem(NetworkingObjects::NetObjManager& netObjMan, const BookmarkCompleteInitData& initData);
|
||||
BookmarkListItem(NetworkingObjects::NetObjManager& netObjMan, const std::string& initName, bool isFolder, const BookmarkData& initBookmarkData);
|
||||
bool is_folder() const;
|
||||
const BookmarkData& get_bookmark_data() const;
|
||||
|
|
@ -32,6 +40,7 @@ class BookmarkListItem {
|
|||
void scale_up(const WorldScalar& scaleUpAmount);
|
||||
void save_file(cereal::PortableBinaryOutputArchive& a) const;
|
||||
void load_file(cereal::PortableBinaryInputArchive& a, VersionNumber version, BookmarkManager& bMan);
|
||||
BookmarkCompleteInitData get_complete_init_data();
|
||||
|
||||
void set_name(NetworkingObjects::DelayUpdateSerializedClassManager& delayedNetObjMan, const std::string& newName);
|
||||
private:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue