diff options
Diffstat (limited to 'Source/RandomizerCore.cpp')
| -rw-r--r-- | Source/RandomizerCore.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
| diff --git a/Source/RandomizerCore.cpp b/Source/RandomizerCore.cpp index 684e19d..f14a76f 100644 --- a/Source/RandomizerCore.cpp +++ b/Source/RandomizerCore.cpp | |||
| @@ -3,6 +3,17 @@ | |||
| 3 | #include "Random.h" | 3 | #include "Random.h" |
| 4 | #include <sstream> | 4 | #include <sstream> |
| 5 | 5 | ||
| 6 | static int lastKnownFrame = 1 << 30; | ||
| 7 | |||
| 8 | RandomizerCore::RandomizerCore() { | ||
| 9 | int currentFrame = _memory.ReadData<int>({SCRIPT_FRAMES}, 1)[0]; | ||
| 10 | if (currentFrame < lastKnownFrame) { | ||
| 11 | // Time went backwards, indicates new game | ||
| 12 | WriteMetadata(0); | ||
| 13 | } | ||
| 14 | lastKnownFrame = currentFrame; | ||
| 15 | } | ||
| 16 | |||
| 6 | void RandomizerCore::Randomize(std::vector<int>& panels, int flags) { | 17 | void RandomizerCore::Randomize(std::vector<int>& panels, int flags) { |
| 7 | return RandomizeRange(panels, flags, 0, panels.size()); | 18 | return RandomizeRange(panels, flags, 0, panels.size()); |
| 8 | } | 19 | } |
| @@ -125,3 +136,11 @@ void RandomizerCore::ReassignNames(const std::vector<int>& panels, const std::ve | |||
| 125 | WritePanelData<int64_t>(panels[i], AUDIO_LOG_NAME, {names[order[i]]}); | 136 | WritePanelData<int64_t>(panels[i], AUDIO_LOG_NAME, {names[order[i]]}); |
| 126 | } | 137 | } |
| 127 | } | 138 | } |
| 139 | |||
| 140 | short RandomizerCore::ReadMetadata() { | ||
| 141 | return _memory.ReadData<short>({GLOBALS + METADATA}, 1)[0]; | ||
| 142 | } | ||
| 143 | |||
| 144 | void RandomizerCore::WriteMetadata(short metadata) { | ||
| 145 | return _memory.WriteData<short>({GLOBALS + METADATA}, {metadata}); | ||
| 146 | } \ No newline at end of file | ||
