Compare commits
3 commits
f500e982e6
...
0826d4aede
Author | SHA1 | Date | |
---|---|---|---|
0826d4aede | |||
b3220ca8e1 | |||
48210c7186 |
3 changed files with 33 additions and 3 deletions
|
@ -121,10 +121,17 @@ auto MapPropertySerialiser::serialiseProperty(UnrealPropertyBase::ptr& prop, Uns
|
||||||
}
|
}
|
||||||
|
|
||||||
for(auto& value : pair.values) {
|
for(auto& value : pair.values) {
|
||||||
|
if(map_prop->valueType == "StructProperty") {
|
||||||
if(!serialiser.write(value, dummy_bytes_written, writer)) {
|
if(!serialiser.write(value, dummy_bytes_written, writer)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if(!serialiser.writeItem(value, map_prop->valueType, dummy_bytes_written, writer)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_written += (writer.arrayPosition() - value_start);
|
bytes_written += (writer.arrayPosition() - value_start);
|
||||||
|
|
|
@ -39,6 +39,10 @@ auto UESaveFile::lastError() const -> const std::string& {
|
||||||
}
|
}
|
||||||
|
|
||||||
auto UESaveFile::reloadData() -> bool {
|
auto UESaveFile::reloadData() -> bool {
|
||||||
|
if(_noReloadAfterSave) {
|
||||||
|
return valid();
|
||||||
|
}
|
||||||
|
|
||||||
loadData();
|
loadData();
|
||||||
return valid();
|
return valid();
|
||||||
}
|
}
|
||||||
|
@ -48,7 +52,7 @@ auto UESaveFile::props() -> Containers::ArrayView<UnrealPropertyBase::ptr> {
|
||||||
}
|
}
|
||||||
|
|
||||||
auto UESaveFile::saveToFile() -> bool {
|
auto UESaveFile::saveToFile() -> bool {
|
||||||
BinaryWriter writer{_filepath + ".other"};
|
BinaryWriter writer{_filepath + ".tmp"};
|
||||||
|
|
||||||
if(!writer.open()) {
|
if(!writer.open()) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -97,6 +101,23 @@ auto UESaveFile::saveToFile() -> bool {
|
||||||
|
|
||||||
writer.writeUnsignedInt(0);
|
writer.writeUnsignedInt(0);
|
||||||
|
|
||||||
|
writer.closeFile();
|
||||||
|
|
||||||
|
if(!Utility::Directory::copy(_filepath, _filepath + ".bak")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!Utility::Directory::rm(_filepath)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!Utility::Directory::move(_filepath + ".tmp", _filepath)) {
|
||||||
|
Utility::Directory::move(_filepath + ".bak", _filepath);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_noReloadAfterSave = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,8 @@ class UESaveFile {
|
||||||
|
|
||||||
std::string _filepath;
|
std::string _filepath;
|
||||||
|
|
||||||
|
bool _noReloadAfterSave = false;
|
||||||
|
|
||||||
Containers::StaticArray<4, char> _magicBytes{'G', 'V', 'A', 'S'};
|
Containers::StaticArray<4, char> _magicBytes{'G', 'V', 'A', 'S'};
|
||||||
|
|
||||||
UnsignedInt _saveVersion = 0;
|
UnsignedInt _saveVersion = 0;
|
||||||
|
|
Loading…
Reference in a new issue