1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-18 12:33:17 +01:00

Gamestate snapshots (#8819)

* Add initial interface.

* Implement move operator in MemoryStream

* Add pod array serialisation traits.

* Add push_back with move semantics to CircularBuffer

* Initial implementation of GameStateSnapshots

* Add GameStateSnapshots to Context.

* Add mp_desync console command.

* Compare sprite data and fill change list.

* Minor changes.

* Proof of concept.

* Calculate offset instead of using offsetof

* Implement game state difference detection

* Update mp_desync console command.

* Fix identification of sprite remove/add.

* Fix crash when only one peep in park when using mp_desync

* Output state differences into user directory desync folder.

* Add desync debugging as an option.

* Add information to network status when a desync report was created.

* Cast to proper type for %llu.

* Update xcode project

* Add more information to the diffed data.

* Remove client-only relevant fields.

* Cleanup.

* Add better name output for misc sprites

* Add srand0 and tick information to the output

* Bump up network version

* Cleanup

* Set desync_debugging to false as default

* Apply suggestions
This commit is contained in:
ζeh Matt
2019-05-11 21:31:34 +02:00
committed by GitHub
parent 1f6c7c9942
commit c8f822ea70
22 changed files with 1152 additions and 19 deletions

View File

@@ -49,6 +49,11 @@ MemoryStream::MemoryStream(const void* data, size_t dataSize)
{
}
MemoryStream::MemoryStream(MemoryStream&& mv)
{
*this = std::move(mv);
}
MemoryStream::~MemoryStream()
{
if (_access & MEMORY_ACCESS::OWNER)
@@ -60,6 +65,21 @@ MemoryStream::~MemoryStream()
_data = nullptr;
}
MemoryStream& MemoryStream::operator=(MemoryStream&& mv)
{
_access = mv._access;
_dataCapacity = mv._dataCapacity;
_data = mv._data;
_position = mv._position;
mv._data = nullptr;
mv._position = nullptr;
mv._dataCapacity = 0;
mv._dataSize = 0;
return *this;
}
const void* MemoryStream::GetData() const
{
return _data;