diff options
-rw-r--r-- | WitnessRandomizer/Panels.h | 2 | ||||
-rw-r--r-- | WitnessRandomizer/WitnessRandomizer.cpp | 33 | ||||
-rw-r--r-- | WitnessRandomizer/WitnessRandomizer.h | 4 | ||||
-rw-r--r-- | WitnessRandomizerInstaller/WitnessRandomizerInstaller.vdproj | 24 |
4 files changed, 51 insertions, 12 deletions
diff --git a/WitnessRandomizer/Panels.h b/WitnessRandomizer/Panels.h index 2995170..7b9c96c 100644 --- a/WitnessRandomizer/Panels.h +++ b/WitnessRandomizer/Panels.h | |||
@@ -96,7 +96,7 @@ const std::vector<int> upDownPanels = { | |||
96 | 0x335AB, // UTM In Elevator Control | 96 | 0x335AB, // UTM In Elevator Control |
97 | 0x3369D, // UTM Lower Elevator Control | 97 | 0x3369D, // UTM Lower Elevator Control |
98 | 0x335AC, // UTM Upper Elevator Control | 98 | 0x335AC, // UTM Upper Elevator Control |
99 | 0x09EEB, // Mountain 2 Elevator | 99 | // 0x09EEB, // Mountain 2 Elevator |
100 | }; | 100 | }; |
101 | 101 | ||
102 | // Note: Some of these (non-controls) are duplicated elsewhere | 102 | // Note: Some of these (non-controls) are duplicated elsewhere |
diff --git a/WitnessRandomizer/WitnessRandomizer.cpp b/WitnessRandomizer/WitnessRandomizer.cpp index e7ab2aa..7827ddb 100644 --- a/WitnessRandomizer/WitnessRandomizer.cpp +++ b/WitnessRandomizer/WitnessRandomizer.cpp | |||
@@ -1,8 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * TODO: Split out main() logic into another file, and move into separate functions for easier testing. Then write tests. | ||
2 | * BUGS: | 3 | * BUGS: |
3 | * Shipwreck vault fails, possibly because of dot_reflection? | 4 | * Shipwreck vault fails, possibly because of dot_reflection? Sometimes? |
4 | * Treehouse pivots *should* work, but I need to not copy style_flags. | 5 | * Treehouse pivots *should* work, but I need to not copy style_flags. |
5 | This seems to cause crashes when pivots appear elsewhere in the world. | 6 | This seems to cause crashes when pivots appear elsewhere in the world. |
7 | * Some panels are impossible casually: (idc, I think) | ||
8 | ** Town Stars, Invisible dots | ||
9 | * Something is wrong with jungle | ||
6 | * FEATURES: | 10 | * FEATURES: |
7 | * SWAP_TARGETS should still require the full panel sequence (and have ways to prevent softlocks?) | 11 | * SWAP_TARGETS should still require the full panel sequence (and have ways to prevent softlocks?) |
8 | ** Think about: Jungle | 12 | ** Think about: Jungle |
@@ -34,7 +38,6 @@ size_t find(const std::vector<T> &data, T search, size_t startIndex = 0) { | |||
34 | 38 | ||
35 | int main(int argc, char** argv) | 39 | int main(int argc, char** argv) |
36 | { | 40 | { |
37 | |||
38 | WitnessRandomizer randomizer = WitnessRandomizer(); | 41 | WitnessRandomizer randomizer = WitnessRandomizer(); |
39 | 42 | ||
40 | if (argc == 2) { | 43 | if (argc == 2) { |
@@ -45,6 +48,22 @@ int main(int argc, char** argv) | |||
45 | srand(seed); | 48 | srand(seed); |
46 | } | 49 | } |
47 | 50 | ||
51 | /* | ||
52 | randomizer.SwapPanels(0x0007C, 0x0005D, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 1 | ||
53 | randomizer.SwapPanels(0x0007E, 0x0005E, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 2 | ||
54 | randomizer.SwapPanels(0x00075, 0x0005F, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 3 | ||
55 | randomizer.SwapPanels(0x00073, 0x00060, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 4 | ||
56 | randomizer.SwapPanels(0x00077, 0x00061, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 5 | ||
57 | 0x00079; // Symmetry Island Colored Dots 6 | ||
58 | |||
59 | 0x0005D; // Outside Tutorial Dots Tutorial 1 | ||
60 | 0x0005E; // Outside Tutorial Dots Tutorial 2 | ||
61 | 0x0005F; // Outside Tutorial Dots Tutorial 3 | ||
62 | 0x00060; // Outside Tutorial Dots Tutorial 4 | ||
63 | 0x00061; // Outside Tutorial Dots Tutorial 5 | ||
64 | */ | ||
65 | |||
66 | |||
48 | // Content swaps -- must happen before squarePanels | 67 | // Content swaps -- must happen before squarePanels |
49 | randomizer.Randomize(upDownPanels, SWAP_LINES | SWAP_STYLE); | 68 | randomizer.Randomize(upDownPanels, SWAP_LINES | SWAP_STYLE); |
50 | randomizer.Randomize(leftForwardRightPanels, SWAP_LINES); | 69 | randomizer.Randomize(leftForwardRightPanels, SWAP_LINES); |
@@ -60,8 +79,10 @@ int main(int argc, char** argv) | |||
60 | std::vector<int> keepFrontLaserTarget = randomizer.ReadPanelData<int>(0x0360E, TARGET, 1); | 79 | std::vector<int> keepFrontLaserTarget = randomizer.ReadPanelData<int>(0x0360E, TARGET, 1); |
61 | randomizer.WritePanelData<int>(0x03317, TARGET, keepFrontLaserTarget); | 80 | randomizer.WritePanelData<int>(0x03317, TARGET, keepFrontLaserTarget); |
62 | 81 | ||
63 | /* Jungle */ | 82 | std::vector<int> randomOrder; |
64 | std::vector<int> randomOrder = std::vector(junglePanels.size(), 0); | 83 | |
84 | /* Jungle | ||
85 | randomOrder = std::vector(junglePanels.size(), 0); | ||
65 | std::iota(randomOrder.begin(), randomOrder.end(), 0); | 86 | std::iota(randomOrder.begin(), randomOrder.end(), 0); |
66 | // Randomize Waves 2-7 | 87 | // Randomize Waves 2-7 |
67 | // Waves 1 cannot be randomized, since no other panel can start on | 88 | // Waves 1 cannot be randomized, since no other panel can start on |
@@ -69,6 +90,7 @@ int main(int argc, char** argv) | |||
69 | // Randomize Pitches 1-6 onto themselves | 90 | // Randomize Pitches 1-6 onto themselves |
70 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 7, 13); | 91 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 7, 13); |
71 | randomizer.ReassignTargets(junglePanels, randomOrder); | 92 | randomizer.ReassignTargets(junglePanels, randomOrder); |
93 | */ | ||
72 | 94 | ||
73 | /* Bunker */ | 95 | /* Bunker */ |
74 | randomOrder = std::vector(bunkerPanels.size(), 0); | 96 | randomOrder = std::vector(bunkerPanels.size(), 0); |
@@ -104,7 +126,6 @@ int main(int argc, char** argv) | |||
104 | 126 | ||
105 | randomizer.ReassignTargets(monasteryPanels, randomOrder); | 127 | randomizer.ReassignTargets(monasteryPanels, randomOrder); |
106 | */ | 128 | */ |
107 | |||
108 | } | 129 | } |
109 | 130 | ||
110 | WitnessRandomizer::WitnessRandomizer() | 131 | WitnessRandomizer::WitnessRandomizer() |
@@ -117,7 +138,7 @@ WitnessRandomizer::WitnessRandomizer() | |||
117 | // Distance-gate shadows laser to prevent sniping through the bars | 138 | // Distance-gate shadows laser to prevent sniping through the bars |
118 | WritePanelData<float>(0x19650, MAX_BROADCAST_DISTANCE, {2.5f}); | 139 | WritePanelData<float>(0x19650, MAX_BROADCAST_DISTANCE, {2.5f}); |
119 | // Change the shadows tutorial cable to only activate avoid | 140 | // Change the shadows tutorial cable to only activate avoid |
120 | WritePanelData<int>(0x319A8, 0xD8, {0}); | 141 | WritePanelData<int>(0x319A8, CABLE_TARGET_2, {0}); |
121 | // Change shadows avoid 8 to power shadows follow | 142 | // Change shadows avoid 8 to power shadows follow |
122 | WritePanelData<int>(0x1972F, TARGET, {0x1C34C}); | 143 | WritePanelData<int>(0x1972F, TARGET, {0x1C34C}); |
123 | 144 | ||
diff --git a/WitnessRandomizer/WitnessRandomizer.h b/WitnessRandomizer/WitnessRandomizer.h index 3d748d1..0c73b89 100644 --- a/WitnessRandomizer/WitnessRandomizer.h +++ b/WitnessRandomizer/WitnessRandomizer.h | |||
@@ -91,6 +91,7 @@ private: | |||
91 | #define COLORED_REGIONS 0x4A8 | 91 | #define COLORED_REGIONS 0x4A8 |
92 | #define PANEL_TARGET 0x4B0 | 92 | #define PANEL_TARGET 0x4B0 |
93 | #define SPECULAR_TEXTURE 0x4D8 | 93 | #define SPECULAR_TEXTURE 0x4D8 |
94 | #define CABLE_TARGET_2 0xD8 | ||
94 | #elif GLOBALS == 0x62A080 | 95 | #elif GLOBALS == 0x62A080 |
95 | #define PATH_COLOR 0xC0 | 96 | #define PATH_COLOR 0xC0 |
96 | #define REFLECTION_PATH_COLOR 0xD0 | 97 | #define REFLECTION_PATH_COLOR 0xD0 |
@@ -104,7 +105,7 @@ private: | |||
104 | #define ERROR_COLOR 0x160 | 105 | #define ERROR_COLOR 0x160 |
105 | #define PATTERN_POINT_COLOR 0x180 | 106 | #define PATTERN_POINT_COLOR 0x180 |
106 | #define PATTERN_POINT_COLOR_A 0x190 | 107 | #define PATTERN_POINT_COLOR_A 0x190 |
107 | #define PATTERN_POINT_COLOR_B 0x200 | 108 | #define PATTERN_POINT_COLOR_B 0x1A0 |
108 | #define SYMBOL_A 0x1B0 | 109 | #define SYMBOL_A 0x1B0 |
109 | #define SYMBOL_B 0x1C0 | 110 | #define SYMBOL_B 0x1C0 |
110 | #define SYMBOL_C 0x1D0 | 111 | #define SYMBOL_C 0x1D0 |
@@ -151,4 +152,5 @@ private: | |||
151 | #define COLORED_REGIONS 0x4A0 | 152 | #define COLORED_REGIONS 0x4A0 |
152 | #define PANEL_TARGET 0x4A8 | 153 | #define PANEL_TARGET 0x4A8 |
153 | #define SPECULAR_TEXTURE 0x4D0 | 154 | #define SPECULAR_TEXTURE 0x4D0 |
155 | #define CABLE_TARGET_2 0xD0 | ||
154 | #endif \ No newline at end of file | 156 | #endif \ No newline at end of file |
diff --git a/WitnessRandomizerInstaller/WitnessRandomizerInstaller.vdproj b/WitnessRandomizerInstaller/WitnessRandomizerInstaller.vdproj index 7951e39..a2cf517 100644 --- a/WitnessRandomizerInstaller/WitnessRandomizerInstaller.vdproj +++ b/WitnessRandomizerInstaller/WitnessRandomizerInstaller.vdproj | |||
@@ -37,6 +37,14 @@ | |||
37 | "PrivateKeyFile" = "8:" | 37 | "PrivateKeyFile" = "8:" |
38 | "TimeStampServer" = "8:" | 38 | "TimeStampServer" = "8:" |
39 | "InstallerBootstrapper" = "3:2" | 39 | "InstallerBootstrapper" = "3:2" |
40 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" | ||
41 | { | ||
42 | "Enabled" = "11:TRUE" | ||
43 | "PromptEnabled" = "11:TRUE" | ||
44 | "PrerequisitesLocation" = "2:1" | ||
45 | "Url" = "8:" | ||
46 | "ComponentsUrl" = "8:" | ||
47 | } | ||
40 | } | 48 | } |
41 | "Release" | 49 | "Release" |
42 | { | 50 | { |
@@ -53,6 +61,14 @@ | |||
53 | "PrivateKeyFile" = "8:" | 61 | "PrivateKeyFile" = "8:" |
54 | "TimeStampServer" = "8:" | 62 | "TimeStampServer" = "8:" |
55 | "InstallerBootstrapper" = "3:2" | 63 | "InstallerBootstrapper" = "3:2" |
64 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" | ||
65 | { | ||
66 | "Enabled" = "11:TRUE" | ||
67 | "PromptEnabled" = "11:TRUE" | ||
68 | "PrerequisitesLocation" = "2:1" | ||
69 | "Url" = "8:" | ||
70 | "ComponentsUrl" = "8:" | ||
71 | } | ||
56 | } | 72 | } |
57 | } | 73 | } |
58 | "Deployable" | 74 | "Deployable" |
@@ -130,15 +146,15 @@ | |||
130 | { | 146 | { |
131 | "Name" = "8:Microsoft Visual Studio" | 147 | "Name" = "8:Microsoft Visual Studio" |
132 | "ProductName" = "8:WitnessRandomizer" | 148 | "ProductName" = "8:WitnessRandomizer" |
133 | "ProductCode" = "8:{1D8F70FD-4741-4C9F-B0FE-9207F15FEC1A}" | 149 | "ProductCode" = "8:{9EB4E1F3-2D4E-4D2B-B8AA-B51C12F8149B}" |
134 | "PackageCode" = "8:{FF874506-B46A-40E9-B6C2-C87CFE189AFF}" | 150 | "PackageCode" = "8:{2D819EE6-D857-426F-A0B0-48CDB593BCD3}" |
135 | "UpgradeCode" = "8:{B2AF0F34-4917-4AEC-B892-FE4FD4B9584A}" | 151 | "UpgradeCode" = "8:{B2AF0F34-4917-4AEC-B892-FE4FD4B9584A}" |
136 | "AspNetVersion" = "8:2.0.50727.0" | 152 | "AspNetVersion" = "8:2.0.50727.0" |
137 | "RestartWWWService" = "11:FALSE" | 153 | "RestartWWWService" = "11:FALSE" |
138 | "RemovePreviousVersions" = "11:FALSE" | 154 | "RemovePreviousVersions" = "11:TRUE" |
139 | "DetectNewerInstalledVersion" = "11:TRUE" | 155 | "DetectNewerInstalledVersion" = "11:TRUE" |
140 | "InstallAllUsers" = "11:FALSE" | 156 | "InstallAllUsers" = "11:FALSE" |
141 | "ProductVersion" = "8:1.0.1" | 157 | "ProductVersion" = "8:1.0.2" |
142 | "Manufacturer" = "8:jbzdarkid" | 158 | "Manufacturer" = "8:jbzdarkid" |
143 | "ARPHELPTELEPHONE" = "8:" | 159 | "ARPHELPTELEPHONE" = "8:" |
144 | "ARPHELPLINK" = "8:" | 160 | "ARPHELPLINK" = "8:" |