diff options
Diffstat (limited to 'Source/Randomizer.cpp')
-rw-r--r-- | Source/Randomizer.cpp | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/Source/Randomizer.cpp b/Source/Randomizer.cpp index 48e9a4b..e0cbb2b 100644 --- a/Source/Randomizer.cpp +++ b/Source/Randomizer.cpp | |||
@@ -1,24 +1,29 @@ | |||
1 | /* | 1 | /* |
2 | * Random *rotation* of desert laser redirect? | ||
3 | * Disable wonkavator and hotel, so that 100% runs are possible | ||
4 | * Try to wire up both keep halves | ||
5 | * Wire up both halves of symmetry laser | ||
6 | * Turn off floating panel in desert | ||
7 | |||
8 | |||
9 | * Speed up *everything* ? Or maybe we'll just stop using this setting entirely. | ||
10 | |||
11 | |||
2 | * BUGS: | 12 | * BUGS: |
3 | * Shipwreck vault is solved reversed? -> Not reversed, just "half", you can normally solve orange. Seems to need pattern name. | 13 | * Shipwreck vault is solved reversed? -> Not reversed, just "half", you can normally solve orange. Seems to need pattern name. |
4 | * Tutorial sounds don't always play -> Unsure. Not controlled by pattern name. | 14 | * Tutorial sounds don't always play -> Unsure. Not controlled by pattern name. |
5 | * Make sure that monastery 1 isn't forced to trigger monastery 2 | ||
6 | * Rainbow seems to be not copying background? | 15 | * Rainbow seems to be not copying background? |
7 | ** Rainbow 1 <-> Green 3 (the poly one) worked | 16 | ** Rainbow 1 <-> Green 3 (the poly one) worked |
8 | ** Rainbow 2 <-> Treehouse Right Orange 1 didn't | 17 | ** Rainbow 2 <-> Treehouse Right Orange 1 didn't |
9 | * FEATURES: | 18 | * FEATURES: |
10 | * Start the game if it isn't running? | 19 | * Start the game if it isn't running? |
11 | * Stop swapping colors in desert | ||
12 | * Randomize audio logs -- Hard, seem to be unloaded some times? | 20 | * Randomize audio logs -- Hard, seem to be unloaded some times? |
13 | * Swap sounds in jungle (along with panels) -- maybe impossible | 21 | * Swap sounds in jungle (along with panels) -- maybe impossible |
14 | * Make orange 7 (all of oranges?) hard. Like big = hard. (See: HARD_MODE) | 22 | * Make orange 7 (all of oranges?) hard. Like big = hard. (See: HARD_MODE) |
15 | * Add a setting for "disable wonkavator and hotel", so that 100% runs are possible | ||
16 | * I probably can randomize targets in bunker UV | ||
17 | * Random *rotation* of desert laser redirect? | ||
18 | * Add setting to disable laser randomization | ||
19 | * Try randomizing default-on for pitches & bunker | 23 | * Try randomizing default-on for pitches & bunker |
20 | * Try turning on first half of wire in shadows once tutorial is done | 24 | * Try turning on first half of wire in shadows once tutorial is done |
21 | * It might be possible to remove the texture on top of rainbow 5 (so that any panel can be placed there) | 25 | * It might be possible to remove the texture on top of rainbow 5 (so that any panel can be placed there) |
26 | * 20 challenges with 20 consecutive seeds | ||
22 | */ | 27 | */ |
23 | #include "Memory.h" | 28 | #include "Memory.h" |
24 | #include "Randomizer.h" | 29 | #include "Randomizer.h" |
@@ -58,10 +63,10 @@ void Randomizer::Randomize() | |||
58 | RandomizeChallenge(); | 63 | RandomizeChallenge(); |
59 | 64 | ||
60 | // Content swaps -- must happen before squarePanels | 65 | // Content swaps -- must happen before squarePanels |
61 | Randomize(upDownPanels, SWAP::LINES); | 66 | Randomize(upDownPanels, SWAP::LINES | SWAP::COLORS); |
62 | Randomize(leftForwardRightPanels, SWAP::LINES); | 67 | Randomize(leftForwardRightPanels, SWAP::LINES | SWAP::COLORS); |
63 | 68 | ||
64 | Randomize(squarePanels, SWAP::LINES); | 69 | Randomize(squarePanels, SWAP::LINES | SWAP::COLORS); |
65 | 70 | ||
66 | // Individual area modifications | 71 | // Individual area modifications |
67 | RandomizeTutorial(); | 72 | RandomizeTutorial(); |
@@ -200,7 +205,7 @@ void Randomizer::RandomizeSwamp() { | |||
200 | 205 | ||
201 | void Randomizer::RandomizeMountain() { | 206 | void Randomizer::RandomizeMountain() { |
202 | // Randomize multipanel | 207 | // Randomize multipanel |
203 | Randomize(mountainMultipanel, SWAP::LINES); | 208 | Randomize(mountainMultipanel, SWAP::LINES | SWAP::COLORS); |
204 | 209 | ||
205 | // Randomize final pillars order | 210 | // Randomize final pillars order |
206 | std::vector<int> targets = {pillars[0] + 1}; | 211 | std::vector<int> targets = {pillars[0] + 1}; |
@@ -262,7 +267,7 @@ void Randomizer::SwapPanels(int panel1, int panel2, int flags) { | |||
262 | if (flags & SWAP::AUDIO_NAMES) { | 267 | if (flags & SWAP::AUDIO_NAMES) { |
263 | offsets[AUDIO_LOG_NAME] = sizeof(void*); | 268 | offsets[AUDIO_LOG_NAME] = sizeof(void*); |
264 | } | 269 | } |
265 | if (flags & SWAP::LINES) { | 270 | if (flags & SWAP::COLORS) { |
266 | offsets[PATH_COLOR] = 16; | 271 | offsets[PATH_COLOR] = 16; |
267 | offsets[REFLECTION_PATH_COLOR] = 16; | 272 | offsets[REFLECTION_PATH_COLOR] = 16; |
268 | offsets[DOT_COLOR] = 16; | 273 | offsets[DOT_COLOR] = 16; |
@@ -284,14 +289,19 @@ void Randomizer::SwapPanels(int panel1, int panel2, int flags) { | |||
284 | offsets[PUSH_SYMBOL_COLORS] = sizeof(int); | 289 | offsets[PUSH_SYMBOL_COLORS] = sizeof(int); |
285 | offsets[OUTER_BACKGROUND] = 16; | 290 | offsets[OUTER_BACKGROUND] = 16; |
286 | offsets[OUTER_BACKGROUND_MODE] = sizeof(int); | 291 | offsets[OUTER_BACKGROUND_MODE] = sizeof(int); |
292 | // These two control the "burn intensity", but I can't swap out burn marks in new ver, so they should probably stay tied to each frame. | ||
293 | // offsets[SPECULAR_ADD] = sizeof(float); | ||
294 | // offsets[SPECULAR_POWER] = sizeof(int); | ||
295 | offsets[NUM_COLORED_REGIONS] = sizeof(int); | ||
296 | offsets[COLORED_REGIONS] = sizeof(void*); | ||
297 | } | ||
298 | if (flags & SWAP::LINES) { | ||
287 | offsets[TRACED_EDGES] = 16; | 299 | offsets[TRACED_EDGES] = 16; |
288 | offsets[AUDIO_PREFIX] = sizeof(void*); | 300 | offsets[AUDIO_PREFIX] = sizeof(void*); |
289 | // offsets[IS_CYLINDER] = sizeof(int); | 301 | // offsets[IS_CYLINDER] = sizeof(int); |
290 | // offsets[CYLINDER_Z0] = sizeof(float); | 302 | // offsets[CYLINDER_Z0] = sizeof(float); |
291 | // offsets[CYLINDER_Z1] = sizeof(float); | 303 | // offsets[CYLINDER_Z1] = sizeof(float); |
292 | // offsets[CYLINDER_RADIUS] = sizeof(float); | 304 | // offsets[CYLINDER_RADIUS] = sizeof(float); |
293 | offsets[SPECULAR_ADD] = sizeof(float); | ||
294 | offsets[SPECULAR_POWER] = sizeof(int); | ||
295 | offsets[PATH_WIDTH_SCALE] = sizeof(float); | 305 | offsets[PATH_WIDTH_SCALE] = sizeof(float); |
296 | offsets[STARTPOINT_SCALE] = sizeof(float); | 306 | offsets[STARTPOINT_SCALE] = sizeof(float); |
297 | offsets[NUM_DOTS] = sizeof(int); | 307 | offsets[NUM_DOTS] = sizeof(int); |
@@ -314,8 +324,6 @@ void Randomizer::SwapPanels(int panel1, int panel2, int flags) { | |||
314 | offsets[DOT_SEQUENCE] = sizeof(void*); | 324 | offsets[DOT_SEQUENCE] = sizeof(void*); |
315 | offsets[DOT_SEQUENCE_LEN_REFLECTION] = sizeof(int); | 325 | offsets[DOT_SEQUENCE_LEN_REFLECTION] = sizeof(int); |
316 | offsets[DOT_SEQUENCE_REFLECTION] = sizeof(void*); | 326 | offsets[DOT_SEQUENCE_REFLECTION] = sizeof(void*); |
317 | offsets[NUM_COLORED_REGIONS] = sizeof(int); | ||
318 | offsets[COLORED_REGIONS] = sizeof(void*); | ||
319 | offsets[PANEL_TARGET] = sizeof(void*); | 327 | offsets[PANEL_TARGET] = sizeof(void*); |
320 | offsets[SPECULAR_TEXTURE] = sizeof(void*); | 328 | offsets[SPECULAR_TEXTURE] = sizeof(void*); |
321 | } | 329 | } |