#pragma once int SWAP_NONE = 0x0; int SWAP_TARGETS = 0x1; int SWAP_LINES = 0x2; int SWAP_STYLE = 0x4; class WitnessRandomizer { public: WitnessRandomizer(); void Randomize(std::vector &panels, int flags); void RandomizeRange(std::vector &panels, int flags, size_t startIndex, size_t endIndex); void SwapPanels(int panel1, int panel2, int flags); void ReassignTargets(const std::vector& panels, const std::vector& order); template std::vector ReadPanelData(int panel, int offset, int size) { return _memory.ReadData({_globals, 0x18, panel*8, offset}, size); } template void WritePanelData(int panel, int offset, const std::vector& data) { _memory.WriteData({_globals, 0x18, panel*8, offset}, data); } private: Memory _memory; int _globals = 0x5B28C0; };