diff options
Diffstat (limited to 'WitnessRandomizer/WitnessRandomizer.cpp')
-rw-r--r-- | WitnessRandomizer/WitnessRandomizer.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/WitnessRandomizer/WitnessRandomizer.cpp b/WitnessRandomizer/WitnessRandomizer.cpp index c5cf0bb..efe18b5 100644 --- a/WitnessRandomizer/WitnessRandomizer.cpp +++ b/WitnessRandomizer/WitnessRandomizer.cpp | |||
@@ -31,9 +31,9 @@ int main(int argc, char** argv) | |||
31 | WitnessRandomizer randomizer = WitnessRandomizer(); | 31 | WitnessRandomizer randomizer = WitnessRandomizer(); |
32 | 32 | ||
33 | if (argc == 2) { | 33 | if (argc == 2) { |
34 | srand(atoi(argv[1])); // Seed with RNG from command line | 34 | srand(atoi(argv[1])); // Seed from the command line |
35 | } else { | 35 | } else { |
36 | int seed = rand() % (1 << 16); | 36 | int seed = time(0) % (1 << 16); // Seed from the time in milliseconds |
37 | std::cout << "Selected seed: " << seed << std::endl; | 37 | std::cout << "Selected seed: " << seed << std::endl; |
38 | srand(seed); | 38 | srand(seed); |
39 | } | 39 | } |
@@ -53,6 +53,7 @@ int main(int argc, char** argv) | |||
53 | std::vector<int> keepFrontLaserTarget = randomizer.ReadPanelData<int>(0x0360E, TARGET, 1); | 53 | std::vector<int> keepFrontLaserTarget = randomizer.ReadPanelData<int>(0x0360E, TARGET, 1); |
54 | randomizer.WritePanelData<int>(0x03317, TARGET, keepFrontLaserTarget); | 54 | randomizer.WritePanelData<int>(0x03317, TARGET, keepFrontLaserTarget); |
55 | 55 | ||
56 | /* Jungle */ | ||
56 | std::vector<int> randomOrder = std::vector(junglePanels.size(), 0); | 57 | std::vector<int> randomOrder = std::vector(junglePanels.size(), 0); |
57 | std::iota(randomOrder.begin(), randomOrder.end(), 0); | 58 | std::iota(randomOrder.begin(), randomOrder.end(), 0); |
58 | // Randomize Waves 2-7 | 59 | // Randomize Waves 2-7 |
@@ -62,6 +63,7 @@ int main(int argc, char** argv) | |||
62 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 7, 13); | 63 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 7, 13); |
63 | randomizer.ReassignTargets(junglePanels, randomOrder); | 64 | randomizer.ReassignTargets(junglePanels, randomOrder); |
64 | 65 | ||
66 | /* Bunker */ | ||
65 | randomOrder = std::vector(bunkerPanels.size(), 0); | 67 | randomOrder = std::vector(bunkerPanels.size(), 0); |
66 | std::iota(randomOrder.begin(), randomOrder.end(), 0); | 68 | std::iota(randomOrder.begin(), randomOrder.end(), 0); |
67 | // Randomize Tutorial 2-Advanced Tutorial 4 + Glass 1 | 69 | // Randomize Tutorial 2-Advanced Tutorial 4 + Glass 1 |
@@ -73,17 +75,29 @@ int main(int argc, char** argv) | |||
73 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, glassDoorIndex, 12); | 75 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, glassDoorIndex, 12); |
74 | randomizer.ReassignTargets(bunkerPanels, randomOrder); | 76 | randomizer.ReassignTargets(bunkerPanels, randomOrder); |
75 | 77 | ||
78 | /* Shadows */ | ||
76 | randomOrder = std::vector(shadowsPanels.size(), 0); | 79 | randomOrder = std::vector(shadowsPanels.size(), 0); |
77 | std::iota(randomOrder.begin(), randomOrder.end(), 0); | 80 | std::iota(randomOrder.begin(), randomOrder.end(), 0); |
78 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 0, 8); // Tutorial | 81 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 0, 8); // Tutorial |
79 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 8, 16); // Avoid | 82 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 8, 16); // Avoid |
80 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 16, 21); // Follow | 83 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 16, 21); // Follow |
81 | randomizer.ReassignTargets(shadowsPanels, randomOrder); | 84 | randomizer.ReassignTargets(shadowsPanels, randomOrder); |
82 | |||
83 | // Turn off original starting panel | 85 | // Turn off original starting panel |
84 | randomizer.WritePanelData<float>(shadowsPanels[0], POWER, {0.0f, 0.0f}); | 86 | randomizer.WritePanelData<float>(shadowsPanels[0], POWER, {0.0f, 0.0f}); |
85 | // Turn on new starting panel | 87 | // Turn on new starting panel |
86 | randomizer.WritePanelData<float>(shadowsPanels[randomOrder[0]], POWER, {1.0f, 1.0f}); | 88 | randomizer.WritePanelData<float>(shadowsPanels[randomOrder[0]], POWER, {1.0f, 1.0f}); |
89 | |||
90 | /* Monastery | ||
91 | randomOrder = std::vector(monasteryPanels.size(), 0); | ||
92 | std::iota(randomOrder.begin(), randomOrder.end(), 0); | ||
93 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 2, 6); // outer 2 & 3, inner 1 | ||
94 | // Once outer 3 and right door are solved, inner 2-4 are accessible | ||
95 | int innerPanelsIndex = max(find(randomOrder, 2), find(randomOrder, 4)); | ||
96 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, innerPanelsIndex, 9); // Inner 2-4 | ||
97 | |||
98 | randomizer.ReassignTargets(monasteryPanels, randomOrder); | ||
99 | */ | ||
100 | |||
87 | } | 101 | } |
88 | 102 | ||
89 | WitnessRandomizer::WitnessRandomizer() | 103 | WitnessRandomizer::WitnessRandomizer() |