summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorjbzdarkid <jbzdarkid@gmail.com>2018-10-29 18:49:30 -0700
committerjbzdarkid <jbzdarkid@gmail.com>2018-10-29 18:49:30 -0700
commitcaddad668bd8fe0a2b4fbed410787f7134b8d701 (patch)
tree4057d766268b27797610818a98a4030e2d339e8f
parent0e989fe5111ca879584e1594804422b9b4ae0c1a (diff)
downloadwitness-tutorializer-caddad668bd8fe0a2b4fbed410787f7134b8d701.tar.gz
witness-tutorializer-caddad668bd8fe0a2b4fbed410787f7134b8d701.tar.bz2
witness-tutorializer-caddad668bd8fe0a2b4fbed410787f7134b8d701.zip
Fix mountain elevator, fix back distance
-rw-r--r--Installer/Installer.vdproj721
-rw-r--r--Source/Main.cpp8
-rw-r--r--Source/Panels.h138
-rw-r--r--Source/Randomizer.cpp12
-rw-r--r--Source/RandomizerCore.cpp4
-rw-r--r--Source/RandomizerCore.h1
6 files changed, 804 insertions, 80 deletions
diff --git a/Installer/Installer.vdproj b/Installer/Installer.vdproj new file mode 100644 index 0000000..11319a9 --- /dev/null +++ b/Installer/Installer.vdproj
@@ -0,0 +1,721 @@
1"DeployProject"
2{
3"VSVersion" = "3:800"
4"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
5"IsWebType" = "8:FALSE"
6"ProjectName" = "8:Installer"
7"LanguageId" = "3:1033"
8"CodePage" = "3:1252"
9"UILanguageId" = "3:1033"
10"SccProjectName" = "8:"
11"SccLocalPath" = "8:"
12"SccAuxPath" = "8:"
13"SccProvider" = "8:"
14 "Hierarchy"
15 {
16 "Entry"
17 {
18 "MsmKey" = "8:_E86F0F0DE4B646B6956C8E30890951D2"
19 "OwnerKey" = "8:_UNDEFINED"
20 "MsmSig" = "8:_UNDEFINED"
21 }
22 }
23 "Configurations"
24 {
25 "Debug"
26 {
27 "DisplayName" = "8:Debug"
28 "IsDebugOnly" = "11:TRUE"
29 "IsReleaseOnly" = "11:FALSE"
30 "OutputFilename" = "8:Debug\\Installer.msi"
31 "PackageFilesAs" = "3:2"
32 "PackageFileSize" = "3:-2147483648"
33 "CabType" = "3:1"
34 "Compression" = "3:2"
35 "SignOutput" = "11:FALSE"
36 "CertificateFile" = "8:"
37 "PrivateKeyFile" = "8:"
38 "TimeStampServer" = "8:"
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 }
48 }
49 "Release"
50 {
51 "DisplayName" = "8:Release"
52 "IsDebugOnly" = "11:FALSE"
53 "IsReleaseOnly" = "11:TRUE"
54 "OutputFilename" = "8:Installer.msi"
55 "PackageFilesAs" = "3:2"
56 "PackageFileSize" = "3:-2147483648"
57 "CabType" = "3:1"
58 "Compression" = "3:3"
59 "SignOutput" = "11:FALSE"
60 "CertificateFile" = "8:"
61 "PrivateKeyFile" = "8:"
62 "TimeStampServer" = "8:"
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 "Items"
72 {
73 "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1"
74 {
75 "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)"
76 "ProductCode" = "8:.NETFramework,Version=v4.6.1"
77 }
78 }
79 }
80 }
81 }
82 "Deployable"
83 {
84 "CustomAction"
85 {
86 }
87 "DefaultFeature"
88 {
89 "Name" = "8:DefaultFeature"
90 "Title" = "8:"
91 "Description" = "8:"
92 }
93 "ExternalPersistence"
94 {
95 "LaunchCondition"
96 {
97 }
98 }
99 "File"
100 {
101 }
102 "FileType"
103 {
104 }
105 "Folder"
106 {
107 "{1525181F-901A-416C-8A58-119130FE478E}:_4D19640D10EA43E68046262546954A5E"
108 {
109 "Name" = "8:#1916"
110 "AlwaysCreate" = "11:FALSE"
111 "Condition" = "8:"
112 "Transitive" = "11:FALSE"
113 "Property" = "8:DesktopFolder"
114 "Folders"
115 {
116 }
117 }
118 "{3C67513D-01DD-4637-8A68-80971EB9504F}:_5393EB12357E4BF29E8149058ABE909F"
119 {
120 "DefaultLocation" = "8:[ProgramFiles64Folder][Manufacturer]\\[ProductName]"
121 "Name" = "8:#1925"
122 "AlwaysCreate" = "11:FALSE"
123 "Condition" = "8:"
124 "Transitive" = "11:FALSE"
125 "Property" = "8:TARGETDIR"
126 "Folders"
127 {
128 }
129 }
130 "{1525181F-901A-416C-8A58-119130FE478E}:_B2294C987D6245B881C99CC1494F9A53"
131 {
132 "Name" = "8:#1919"
133 "AlwaysCreate" = "11:FALSE"
134 "Condition" = "8:"
135 "Transitive" = "11:FALSE"
136 "Property" = "8:ProgramMenuFolder"
137 "Folders"
138 {
139 }
140 }
141 }
142 "LaunchCondition"
143 {
144 }
145 "Locator"
146 {
147 }
148 "MsiBootstrapper"
149 {
150 "LangId" = "3:1033"
151 "RequiresElevation" = "11:FALSE"
152 }
153 "Product"
154 {
155 "Name" = "8:Microsoft Visual Studio"
156 "ProductName" = "8:Witness Randomizer"
157 "ProductCode" = "8:{6F5835BB-A6A5-431A-8375-F8992CD74B86}"
158 "PackageCode" = "8:{88F29213-17E5-4446-A1F4-97D01C6DF2C5}"
159 "UpgradeCode" = "8:{4CB5496B-A47E-41D3-B4A7-677E29AB7513}"
160 "AspNetVersion" = "8:2.0.50727.0"
161 "RestartWWWService" = "11:FALSE"
162 "RemovePreviousVersions" = "11:TRUE"
163 "DetectNewerInstalledVersion" = "11:TRUE"
164 "InstallAllUsers" = "11:FALSE"
165 "ProductVersion" = "8:2.0.1"
166 "Manufacturer" = "8:jbzdarkid"
167 "ARPHELPTELEPHONE" = "8:"
168 "ARPHELPLINK" = "8:https://www.github.com/jbzdarkid/witness-randomizer/issues"
169 "Title" = "8:Witness Randomizer"
170 "Subject" = "8:"
171 "ARPCONTACT" = "8:jbzdarkid"
172 "Keywords" = "8:"
173 "ARPCOMMENTS" = "8:Randomizer for The Witness"
174 "ARPURLINFOABOUT" = "8:https://www.github.com/jbzdarkid/witness-randomizer"
175 "ARPPRODUCTICON" = "8:"
176 "ARPIconIndex" = "3:0"
177 "SearchPath" = "8:"
178 "UseSystemSearchPath" = "11:TRUE"
179 "TargetPlatform" = "3:1"
180 "PreBuildEvent" = "8:"
181 "PostBuildEvent" = "8:"
182 "RunPostBuildEvent" = "3:0"
183 }
184 "Registry"
185 {
186 "HKLM"
187 {
188 "Keys"
189 {
190 "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_3AE5560C1C264507AB6064EFD59C1D29"
191 {
192 "Name" = "8:Software"
193 "Condition" = "8:"
194 "AlwaysCreate" = "11:FALSE"
195 "DeleteAtUninstall" = "11:FALSE"
196 "Transitive" = "11:FALSE"
197 "Keys"
198 {
199 "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_63A12348E59E4B23AF4A320B583CE259"
200 {
201 "Name" = "8:[Manufacturer]"
202 "Condition" = "8:"
203 "AlwaysCreate" = "11:FALSE"
204 "DeleteAtUninstall" = "11:FALSE"
205 "Transitive" = "11:FALSE"
206 "Keys"
207 {
208 }
209 "Values"
210 {
211 }
212 }
213 }
214 "Values"
215 {
216 }
217 }
218 }
219 }
220 "HKCU"
221 {
222 "Keys"
223 {
224 "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_8B27FF000D99412E935E3A18279A2050"
225 {
226 "Name" = "8:Software"
227 "Condition" = "8:"
228 "AlwaysCreate" = "11:FALSE"
229 "DeleteAtUninstall" = "11:FALSE"
230 "Transitive" = "11:FALSE"
231 "Keys"
232 {
233 "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_4BF3DC672AFD411A93142B3B6422DB19"
234 {
235 "Name" = "8:[Manufacturer]"
236 "Condition" = "8:"
237 "AlwaysCreate" = "11:FALSE"
238 "DeleteAtUninstall" = "11:FALSE"
239 "Transitive" = "11:FALSE"
240 "Keys"
241 {
242 }
243 "Values"
244 {
245 }
246 }
247 }
248 "Values"
249 {
250 }
251 }
252 }
253 }
254 "HKCR"
255 {
256 "Keys"
257 {
258 }
259 }
260 "HKU"
261 {
262 "Keys"
263 {
264 }
265 }
266 "HKPU"
267 {
268 "Keys"
269 {
270 }
271 }
272 }
273 "Sequences"
274 {
275 }
276 "Shortcut"
277 {
278 "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_B30BF820F5E14F0DA12BBD906ADF0C86"
279 {
280 "Name" = "8:WitnessRandomizer"
281 "Arguments" = "8:"
282 "Description" = "8:"
283 "ShowCmd" = "3:1"
284 "IconIndex" = "3:0"
285 "Transitive" = "11:FALSE"
286 "Target" = "8:_E86F0F0DE4B646B6956C8E30890951D2"
287 "Folder" = "8:_B2294C987D6245B881C99CC1494F9A53"
288 "WorkingFolder" = "8:_5393EB12357E4BF29E8149058ABE909F"
289 "Icon" = "8:"
290 "Feature" = "8:"
291 }
292 }
293 "UserInterface"
294 {
295 "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_38760CCB3C7C473E8E648E0E721B588D"
296 {
297 "UseDynamicProperties" = "11:FALSE"
298 "IsDependency" = "11:FALSE"
299 "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
300 }
301 "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_3A89F4E5009C49478B393C505B87F9E1"
302 {
303 "Name" = "8:#1900"
304 "Sequence" = "3:2"
305 "Attributes" = "3:1"
306 "Dialogs"
307 {
308 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_53574943921E4B3DB4C03DD3D6CA432C"
309 {
310 "Sequence" = "3:300"
311 "DisplayName" = "8:Confirm Installation"
312 "UseDynamicProperties" = "11:TRUE"
313 "IsDependency" = "11:FALSE"
314 "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
315 "Properties"
316 {
317 "BannerBitmap"
318 {
319 "Name" = "8:BannerBitmap"
320 "DisplayName" = "8:#1001"
321 "Description" = "8:#1101"
322 "Type" = "3:8"
323 "ContextData" = "8:Bitmap"
324 "Attributes" = "3:4"
325 "Setting" = "3:1"
326 "UsePlugInResources" = "11:TRUE"
327 }
328 }
329 }
330 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E1C9373AA1F84906A77B0A402FC41089"
331 {
332 "Sequence" = "3:200"
333 "DisplayName" = "8:Installation Folder"
334 "UseDynamicProperties" = "11:TRUE"
335 "IsDependency" = "11:FALSE"
336 "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
337 "Properties"
338 {
339 "BannerBitmap"
340 {
341 "Name" = "8:BannerBitmap"
342 "DisplayName" = "8:#1001"
343 "Description" = "8:#1101"
344 "Type" = "3:8"
345 "ContextData" = "8:Bitmap"
346 "Attributes" = "3:4"
347 "Setting" = "3:1"
348 "UsePlugInResources" = "11:TRUE"
349 }
350 }
351 }
352 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E9B774D828F444DBB21D89182BC27A21"
353 {
354 "Sequence" = "3:100"
355 "DisplayName" = "8:Welcome"
356 "UseDynamicProperties" = "11:TRUE"
357 "IsDependency" = "11:FALSE"
358 "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
359 "Properties"
360 {
361 "BannerBitmap"
362 {
363 "Name" = "8:BannerBitmap"
364 "DisplayName" = "8:#1001"
365 "Description" = "8:#1101"
366 "Type" = "3:8"
367 "ContextData" = "8:Bitmap"
368 "Attributes" = "3:4"
369 "Setting" = "3:1"
370 "UsePlugInResources" = "11:TRUE"
371 }
372 "CopyrightWarning"
373 {
374 "Name" = "8:CopyrightWarning"
375 "DisplayName" = "8:#1002"
376 "Description" = "8:#1102"
377 "Type" = "3:3"
378 "ContextData" = "8:"
379 "Attributes" = "3:0"
380 "Setting" = "3:1"
381 "Value" = "8:#1202"
382 "DefaultValue" = "8:#1202"
383 "UsePlugInResources" = "11:TRUE"
384 }
385 "Welcome"
386 {
387 "Name" = "8:Welcome"
388 "DisplayName" = "8:#1003"
389 "Description" = "8:#1103"
390 "Type" = "3:3"
391 "ContextData" = "8:"
392 "Attributes" = "3:0"
393 "Setting" = "3:1"
394 "Value" = "8:#1203"
395 "DefaultValue" = "8:#1203"
396 "UsePlugInResources" = "11:TRUE"
397 }
398 }
399 }
400 }
401 }
402 "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_525FC4F1C72C4EE3984593146DD26634"
403 {
404 "UseDynamicProperties" = "11:FALSE"
405 "IsDependency" = "11:FALSE"
406 "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
407 }
408 "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8808DD7C245240A9954C040BF06F2B9D"
409 {
410 "Name" = "8:#1902"
411 "Sequence" = "3:2"
412 "Attributes" = "3:3"
413 "Dialogs"
414 {
415 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F7031E39D9854967A8FBADF12A890B0B"
416 {
417 "Sequence" = "3:100"
418 "DisplayName" = "8:Finished"
419 "UseDynamicProperties" = "11:TRUE"
420 "IsDependency" = "11:FALSE"
421 "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
422 "Properties"
423 {
424 "BannerBitmap"
425 {
426 "Name" = "8:BannerBitmap"
427 "DisplayName" = "8:#1001"
428 "Description" = "8:#1101"
429 "Type" = "3:8"
430 "ContextData" = "8:Bitmap"
431 "Attributes" = "3:4"
432 "Setting" = "3:1"
433 "UsePlugInResources" = "11:TRUE"
434 }
435 }
436 }
437 }
438 }
439 "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_9359F122FC5E433F9E5A9EFF22C28425"
440 {
441 "Name" = "8:#1901"
442 "Sequence" = "3:1"
443 "Attributes" = "3:2"
444 "Dialogs"
445 {
446 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_7B03CE8F39FF4BA2B82BFADB5CE02784"
447 {
448 "Sequence" = "3:100"
449 "DisplayName" = "8:Progress"
450 "UseDynamicProperties" = "11:TRUE"
451 "IsDependency" = "11:FALSE"
452 "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
453 "Properties"
454 {
455 "BannerBitmap"
456 {
457 "Name" = "8:BannerBitmap"
458 "DisplayName" = "8:#1001"
459 "Description" = "8:#1101"
460 "Type" = "3:8"
461 "ContextData" = "8:Bitmap"
462 "Attributes" = "3:4"
463 "Setting" = "3:1"
464 "UsePlugInResources" = "11:TRUE"
465 }
466 "ShowProgress"
467 {
468 "Name" = "8:ShowProgress"
469 "DisplayName" = "8:#1009"
470 "Description" = "8:#1109"
471 "Type" = "3:5"
472 "ContextData" = "8:1;True=1;False=0"
473 "Attributes" = "3:0"
474 "Setting" = "3:0"
475 "Value" = "3:1"
476 "DefaultValue" = "3:1"
477 "UsePlugInResources" = "11:TRUE"
478 }
479 }
480 }
481 }
482 }
483 "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A1DF86A3EDDD44E594A0CDFC7F58D821"
484 {
485 "Name" = "8:#1900"
486 "Sequence" = "3:1"
487 "Attributes" = "3:1"
488 "Dialogs"
489 {
490 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_19BB8ECC0C3A4153BF658C0F22142794"
491 {
492 "Sequence" = "3:200"
493 "DisplayName" = "8:Installation Folder"
494 "UseDynamicProperties" = "11:TRUE"
495 "IsDependency" = "11:FALSE"
496 "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
497 "Properties"
498 {
499 "BannerBitmap"
500 {
501 "Name" = "8:BannerBitmap"
502 "DisplayName" = "8:#1001"
503 "Description" = "8:#1101"
504 "Type" = "3:8"
505 "ContextData" = "8:Bitmap"
506 "Attributes" = "3:4"
507 "Setting" = "3:1"
508 "UsePlugInResources" = "11:TRUE"
509 }
510 "InstallAllUsersVisible"
511 {
512 "Name" = "8:InstallAllUsersVisible"
513 "DisplayName" = "8:#1059"
514 "Description" = "8:#1159"
515 "Type" = "3:5"
516 "ContextData" = "8:1;True=1;False=0"
517 "Attributes" = "3:0"
518 "Setting" = "3:0"
519 "Value" = "3:1"
520 "DefaultValue" = "3:1"
521 "UsePlugInResources" = "11:TRUE"
522 }
523 }
524 }
525 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_3433DFF95F204C7B8A83783FA361BFCE"
526 {
527 "Sequence" = "3:100"
528 "DisplayName" = "8:Welcome"
529 "UseDynamicProperties" = "11:TRUE"
530 "IsDependency" = "11:FALSE"
531 "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
532 "Properties"
533 {
534 "BannerBitmap"
535 {
536 "Name" = "8:BannerBitmap"
537 "DisplayName" = "8:#1001"
538 "Description" = "8:#1101"
539 "Type" = "3:8"
540 "ContextData" = "8:Bitmap"
541 "Attributes" = "3:4"
542 "Setting" = "3:1"
543 "UsePlugInResources" = "11:TRUE"
544 }
545 "CopyrightWarning"
546 {
547 "Name" = "8:CopyrightWarning"
548 "DisplayName" = "8:#1002"
549 "Description" = "8:#1102"
550 "Type" = "3:3"
551 "ContextData" = "8:"
552 "Attributes" = "3:0"
553 "Setting" = "3:1"
554 "Value" = "8:#1202"
555 "DefaultValue" = "8:#1202"
556 "UsePlugInResources" = "11:TRUE"
557 }
558 "Welcome"
559 {
560 "Name" = "8:Welcome"
561 "DisplayName" = "8:#1003"
562 "Description" = "8:#1103"
563 "Type" = "3:3"
564 "ContextData" = "8:"
565 "Attributes" = "3:0"
566 "Setting" = "3:1"
567 "Value" = "8:#1203"
568 "DefaultValue" = "8:#1203"
569 "UsePlugInResources" = "11:TRUE"
570 }
571 }
572 }
573 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AF4B4DA9EB504C71B314DF4C68CE15EA"
574 {
575 "Sequence" = "3:300"
576 "DisplayName" = "8:Confirm Installation"
577 "UseDynamicProperties" = "11:TRUE"
578 "IsDependency" = "11:FALSE"
579 "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
580 "Properties"
581 {
582 "BannerBitmap"
583 {
584 "Name" = "8:BannerBitmap"
585 "DisplayName" = "8:#1001"
586 "Description" = "8:#1101"
587 "Type" = "3:8"
588 "ContextData" = "8:Bitmap"
589 "Attributes" = "3:4"
590 "Setting" = "3:1"
591 "UsePlugInResources" = "11:TRUE"
592 }
593 }
594 }
595 }
596 }
597 "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_AAE51F7F58C64A4B996423B01E3D8921"
598 {
599 "Name" = "8:#1902"
600 "Sequence" = "3:1"
601 "Attributes" = "3:3"
602 "Dialogs"
603 {
604 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_4AF1C2264E804EE9BA6E2E014EFACBD1"
605 {
606 "Sequence" = "3:100"
607 "DisplayName" = "8:Finished"
608 "UseDynamicProperties" = "11:TRUE"
609 "IsDependency" = "11:FALSE"
610 "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
611 "Properties"
612 {
613 "BannerBitmap"
614 {
615 "Name" = "8:BannerBitmap"
616 "DisplayName" = "8:#1001"
617 "Description" = "8:#1101"
618 "Type" = "3:8"
619 "ContextData" = "8:Bitmap"
620 "Attributes" = "3:4"
621 "Setting" = "3:1"
622 "UsePlugInResources" = "11:TRUE"
623 }
624 "UpdateText"
625 {
626 "Name" = "8:UpdateText"
627 "DisplayName" = "8:#1058"
628 "Description" = "8:#1158"
629 "Type" = "3:15"
630 "ContextData" = "8:"
631 "Attributes" = "3:0"
632 "Setting" = "3:1"
633 "Value" = "8:#1258"
634 "DefaultValue" = "8:#1258"
635 "UsePlugInResources" = "11:TRUE"
636 }
637 }
638 }
639 }
640 }
641 "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C45FE7F2B865461AB6313DD4AEB2833D"
642 {
643 "Name" = "8:#1901"
644 "Sequence" = "3:2"
645 "Attributes" = "3:2"
646 "Dialogs"
647 {
648 "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_640F85EA14454CEEAD495CDCCD0BCB76"
649 {
650 "Sequence" = "3:100"
651 "DisplayName" = "8:Progress"
652 "UseDynamicProperties" = "11:TRUE"
653 "IsDependency" = "11:FALSE"
654 "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
655 "Properties"
656 {
657 "BannerBitmap"
658 {
659 "Name" = "8:BannerBitmap"
660 "DisplayName" = "8:#1001"
661 "Description" = "8:#1101"
662 "Type" = "3:8"
663 "ContextData" = "8:Bitmap"
664 "Attributes" = "3:4"
665 "Setting" = "3:1"
666 "UsePlugInResources" = "11:TRUE"
667 }
668 "ShowProgress"
669 {
670 "Name" = "8:ShowProgress"
671 "DisplayName" = "8:#1009"
672 "Description" = "8:#1109"
673 "Type" = "3:5"
674 "ContextData" = "8:1;True=1;False=0"
675 "Attributes" = "3:0"
676 "Setting" = "3:0"
677 "Value" = "3:1"
678 "DefaultValue" = "3:1"
679 "UsePlugInResources" = "11:TRUE"
680 }
681 }
682 }
683 }
684 }
685 }
686 "MergeModule"
687 {
688 }
689 "ProjectOutput"
690 {
691 "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E86F0F0DE4B646B6956C8E30890951D2"
692 {
693 "SourcePath" = "8:..\\x64\\Release\\Source.exe"
694 "TargetName" = "8:"
695 "Tag" = "8:"
696 "Folder" = "8:_5393EB12357E4BF29E8149058ABE909F"
697 "Condition" = "8:"
698 "Transitive" = "11:FALSE"
699 "Vital" = "11:TRUE"
700 "ReadOnly" = "11:FALSE"
701 "Hidden" = "11:FALSE"
702 "System" = "11:FALSE"
703 "Permanent" = "11:FALSE"
704 "SharedLegacy" = "11:FALSE"
705 "PackageAs" = "3:1"
706 "Register" = "3:1"
707 "Exclude" = "11:FALSE"
708 "IsDependency" = "11:FALSE"
709 "IsolateTo" = "8:"
710 "ProjectOutputGroupRegister" = "3:1"
711 "OutputConfiguration" = "8:"
712 "OutputGroupCanonicalName" = "8:Built"
713 "OutputProjectGuid" = "8:{CED79182-F36B-4D07-AD0E-249C15BFAD73}"
714 "ShowKeyOutput" = "11:TRUE"
715 "ExcludeFilters"
716 {
717 }
718 }
719 }
720 }
721}
diff --git a/Source/Main.cpp b/Source/Main.cpp index 0081808..86a784b 100644 --- a/Source/Main.cpp +++ b/Source/Main.cpp
@@ -118,7 +118,13 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
118 seed = _wtoi(text.c_str()); 118 seed = _wtoi(text.c_str());
119 } 119 }
120 srand(seed); 120 srand(seed);
121 Randomizer().Randomize(); 121 Randomizer randomizer;
122 randomizer.Randomize();
123 /*
124 if (adjustSpeed.isChecked()) {
125 randomizer.AdjustSpeed();
126 }
127 */
122 SetWindowText(hwndRandomize, L"Randomized!"); 128 SetWindowText(hwndRandomize, L"Randomized!");
123 } 129 }
124 } 130 }
diff --git a/Source/Panels.h b/Source/Panels.h index d7690b8..6aa0d47 100644 --- a/Source/Panels.h +++ b/Source/Panels.h
@@ -32,12 +32,6 @@ std::vector<int> leftRightPanels = {
32 0x17D02, // Town Windmill Control 32 0x17D02, // Town Windmill Control
33}; 33};
34 34
35// These panels are very tall (aka not square) and can't take symmetry panels on them.
36std::vector<int> tallUpDownPanels = {
37 0x09EEB, // Mountain 2 Elevator
38 0x17CC4, // Mill Elevator Control
39};
40
41// Note: Some of these (non-controls) are duplicated elsewhere 35// Note: Some of these (non-controls) are duplicated elsewhere
42std::vector<int> upDownPanels = { 36std::vector<int> upDownPanels = {
43 0x0008D, // Glass Factory Rotational Symmetry 1 37 0x0008D, // Glass Factory Rotational Symmetry 1
@@ -547,6 +541,72 @@ std::vector<int> junglePanels = {
547 0x03616, // Jungle Laser 541 0x03616, // Jungle Laser
548}; 542};
549 543
544
545std::vector<int> audiologs = {
546 0x3C0F7, // Boat Treehouse Rock
547 0x3C0FD, // Boat Broken Boat
548 0x32A00, // Bunker Green Room
549 0x3C0FE, // Desert Broken Wall
550// 0x338B0, // Easter Egg Ending Briefcase (?)
551// 0x338B7, // Easter Egg Ending Briefcase (?)
552// 0x338AD, // Easter Egg Ending Briefcase (iOS)
553// 0x338A5, // Easter Egg Ending Wine Table
554// 0x338AE, // Easter Egg Ending Briefcase
555// 0x338AF, // Easter Egg Ending Briefcase (?)
556// 0x338A7, // Easter Egg Ending Record
557// 0x338A3, // Easter Egg Ending Countertop
558// 0x338A4, // Easter Egg Ending Sunbathing
559// 0x3C108, // Easter Egg Ending Pool
560// 0x338EF, // Easter Egg Ending Pillow
561// 0x336E5, // Easter Egg Ending Apple
562// 0x338A6, // Easter Egg Ending Purple Flowers
563 0x3C100, // Jungle Entrance Right
564 0x3C0F4, // Jungle Entrance Left
565 0x3C102, // Jungle Laser
566 0x3C10D, // Jungle Beach
567 0x3C10E, // Keep Corridor
568 0x3C10B, // Keep Guitar Amp
569 0x0074F, // Keep Front Wall
570 0x012C7, // Keep Throne
571 0x329FF, // Mill Stairs
572 0x3C106, // Monastery Left Shutters
573 0x33AFF, // Mountain 1 Purple Path Panel
574 0x011F9, // Mountain 1 Junk Column
575 0x00763, // Mountain 1 Blue Panels
576 0x32A08, // Mountain 2 Blue Path Panel
577 0x3C101, // Mountain 3 Giant Floor
578 0x3C0FF, // Mountain 3 Peekaboo
579 0x3C103, // Mountainside Cloud Cycle
580 0x00A0F, // Mountaintop
581 0x339A9, // Outside Tutorial Discard
582 0x015C0, // Outside Tutorial Stones
583 0x33B36, // Peninsula
584 0x3C10C, // Shadows Laser
585 0x32A0E, // Shadows Orange Crate
586 0x329FE, // Shipwreck Bridge
587 0x32A07, // Swamp Purple Underwater
588 0x00761, // Swamp Shortcut
589 0x3C109, // Symmetry Island Behind Laser
590 0x33B37, // Symmetry Island Fading Lines
591 0x3C107, // Town Laser Redirect
592 0x3C0F3, // Town Bell Tower
593 0x015B7, // Town Obelisk
594 0x3C10A, // Town Lattice Panel Right
595 0x32A0A, // Town Lattice Panel Left
596 0x015C1, // Treehouse Green Bridge
597 0x3C12A, // Treehouse Shipwreck Shore
598 0x3C104, // Treehouse Docks
599// 0x3C105, // Tunnels Box
600 0x339A8, // Tutorial Patio Roof
601 0x0050A, // Tutorial Gate
602// 0x338BD, // UTM Town Shortcut
603// 0x3C135, // UTM Cave In
604// 0x338C9, // UTM Mountainside Shortcut
605// 0x338D7, // UTM Stairwell
606// 0x338C1, // UTM Challenge Water
607// 0x338CA, // UTM Invisible Dots
608};
609
550// There might be something to do with these, I haven't decided yet. 610// There might be something to do with these, I haven't decided yet.
551std::vector<int> nothingPanels = { 611std::vector<int> nothingPanels = {
552// Doors & Shortcuts & Shortcut doors & Door controls 612// Doors & Shortcuts & Shortcut doors & Door controls
@@ -684,69 +744,5 @@ std::vector<int> nothingPanels = {
684 0x0005C, // Glass Factory Vertical Symmetry 5 744 0x0005C, // Glass Factory Vertical Symmetry 5
685 0x17C31, // Desert Final Transparent 745 0x17C31, // Desert Final Transparent
686 0x19650, // Shadows Laser 746 0x19650, // Shadows Laser
687}; 747 0x09EEB, // Mountain 2 Elevator
688
689std::vector<int> audiologs = {
690 0x3C0F7, // Boat Treehouse Rock
691 0x3C0FD, // Boat Broken Boat
692 0x32A00, // Bunker Green Room
693 0x3C0FE, // Desert Broken Wall
694// 0x338B0, // Easter Egg Ending Briefcase (?)
695// 0x338B7, // Easter Egg Ending Briefcase (?)
696// 0x338AD, // Easter Egg Ending Briefcase (iOS)
697// 0x338A5, // Easter Egg Ending Wine Table
698// 0x338AE, // Easter Egg Ending Briefcase
699// 0x338AF, // Easter Egg Ending Briefcase (?)
700// 0x338A7, // Easter Egg Ending Record
701// 0x338A3, // Easter Egg Ending Countertop
702// 0x338A4, // Easter Egg Ending Sunbathing
703// 0x3C108, // Easter Egg Ending Pool
704// 0x338EF, // Easter Egg Ending Pillow
705// 0x336E5, // Easter Egg Ending Apple
706// 0x338A6, // Easter Egg Ending Purple Flowers
707 0x3C100, // Jungle Entrance Right
708 0x3C0F4, // Jungle Entrance Left
709 0x3C102, // Jungle Laser
710 0x3C10D, // Jungle Beach
711 0x3C10E, // Keep Corridor
712 0x3C10B, // Keep Guitar Amp
713 0x0074F, // Keep Front Wall
714 0x012C7, // Keep Throne
715 0x329FF, // Mill Stairs
716 0x3C106, // Monastery Left Shutters
717 0x33AFF, // Mountain 1 Purple Path Panel
718 0x011F9, // Mountain 1 Junk Column
719 0x00763, // Mountain 1 Blue Panels
720 0x32A08, // Mountain 2 Blue Path Panel
721 0x3C101, // Mountain 3 Giant Floor
722 0x3C0FF, // Mountain 3 Peekaboo
723 0x3C103, // Mountainside Cloud Cycle
724 0x00A0F, // Mountaintop
725 0x339A9, // Outside Tutorial Discard
726 0x015C0, // Outside Tutorial Stones
727 0x33B36, // Peninsula
728 0x3C10C, // Shadows Laser
729 0x32A0E, // Shadows Orange Crate
730 0x329FE, // Shipwreck Bridge
731 0x32A07, // Swamp Purple Underwater
732 0x00761, // Swamp Shortcut
733 0x3C109, // Symmetry Island Behind Laser
734 0x33B37, // Symmetry Island Fading Lines
735 0x3C107, // Town Laser Redirect
736 0x3C0F3, // Town Bell Tower
737 0x015B7, // Town Obelisk
738 0x3C10A, // Town Lattice Panel Right
739 0x32A0A, // Town Lattice Panel Left
740 0x015C1, // Treehouse Green Bridge
741 0x3C12A, // Treehouse Shipwreck Shore
742 0x3C104, // Treehouse Docks
743// 0x3C105, // Tunnels Box
744 0x339A8, // Tutorial Patio Roof
745 0x0050A, // Tutorial Gate
746// 0x338BD, // UTM Town Shortcut
747// 0x3C135, // UTM Cave In
748// 0x338C9, // UTM Mountainside Shortcut
749// 0x338D7, // UTM Stairwell
750// 0x338C1, // UTM Challenge Water
751// 0x338CA, // UTM Invisible Dots
752}; 748};
diff --git a/Source/Randomizer.cpp b/Source/Randomizer.cpp index 4d99461..508dff1 100644 --- a/Source/Randomizer.cpp +++ b/Source/Randomizer.cpp
@@ -1,20 +1,19 @@
1/* 1/*
2 * BUGS: 2 * BUGS:
3 * Tutorial back left is not protected anymore
4 * Shipwreck vault is solved reversed? 3 * Shipwreck vault is solved reversed?
5 * Verify UTM perspective?
6 * FEATURES: 4 * FEATURES:
7 * Speedrunner mode?
8 * Speed up some of the slow things (like swamp) 5 * Speed up some of the slow things (like swamp)
9 * Determine if the user has entered the seed, and re-randomize it if not 6 * Determine if the user has entered the seed, and re-randomize it if not
10 * Prevent re-randomization (?) 7 * Prevent re-randomization (?)
11 * Clear "Randomized" state on NG (?) 8 * Clear "Randomized" state on NG (?)
12 * Limit back distance to pillars (like before)
13 * Randomize audio logs -- Hard, seem to be unloaded some times? 9 * Randomize audio logs -- Hard, seem to be unloaded some times?
14 * Swap sounds in jungle (along with panels) -- maybe impossible 10 * Swap sounds in jungle (along with panels) -- maybe impossible
15 * Make orange 7 (all of oranges?) hard. Like big = hard. 11 * Make orange 7 (all of oranges?) hard. Like big = hard.
16 * Start the game if it isn't running? 12 * Start the game if it isn't running?
17 * Increase odds of mountain oranges garbage on other panels? [setting] 13 * SETTINGS:
14 * Speeds of certain things
15 * Speedrunner mode
16 * Increase odds of mountain oranges garbage on other panels
18*/ 17*/
19#include "Memory.h" 18#include "Memory.h"
20#include "Randomizer.h" 19#include "Randomizer.h"
@@ -36,7 +35,6 @@ int find(const std::vector<T> &data, T search, size_t startIndex = 0) {
36void Randomizer::Randomize() 35void Randomizer::Randomize()
37{ 36{
38 // Content swaps -- must happen before squarePanels 37 // Content swaps -- must happen before squarePanels
39 _core.Randomize(tallUpDownPanels, SWAP_LINES);
40 _core.Randomize(upDownPanels, SWAP_LINES); 38 _core.Randomize(upDownPanels, SWAP_LINES);
41 _core.Randomize(leftForwardRightPanels, SWAP_LINES); 39 _core.Randomize(leftForwardRightPanels, SWAP_LINES);
42 40
@@ -159,7 +157,7 @@ void Randomizer::RandomizeSwamp() {
159 157
160void Randomizer::RandomizeMountain() { 158void Randomizer::RandomizeMountain() {
161 _core.Randomize(lasers, SWAP_TARGETS); 159 _core.Randomize(lasers, SWAP_TARGETS);
162 _core.Randomize(pillars, SWAP_LINES); 160 _core.Randomize(pillars, SWAP_LINES | SWAP_BACK_DISTANCE);
163 _core.Randomize(mountainMultipanel, SWAP_LINES); 161 _core.Randomize(mountainMultipanel, SWAP_LINES);
164 162
165 // Read the target of keep front laser, and write it to keep back laser. 163 // Read the target of keep front laser, and write it to keep back laser.
diff --git a/Source/RandomizerCore.cpp b/Source/RandomizerCore.cpp index 11802f5..c673e2d 100644 --- a/Source/RandomizerCore.cpp +++ b/Source/RandomizerCore.cpp
@@ -30,6 +30,9 @@ void RandomizerCore::SwapPanels(int panel1, int panel2, int flags) {
30 if (flags & SWAP_AUDIO_NAMES) { 30 if (flags & SWAP_AUDIO_NAMES) {
31 offsets[AUDIO_LOG_NAME] = sizeof(void*); 31 offsets[AUDIO_LOG_NAME] = sizeof(void*);
32 } 32 }
33 if (flags & SWAP_BACK_DISTANCE) {
34 offsets[EXTRA_BACK_DISTANCE] = sizeof(float);
35 }
33 if (flags & SWAP_LINES) { 36 if (flags & SWAP_LINES) {
34 offsets[PATH_COLOR] = 16; 37 offsets[PATH_COLOR] = 16;
35 offsets[REFLECTION_PATH_COLOR] = 16; 38 offsets[REFLECTION_PATH_COLOR] = 16;
@@ -52,7 +55,6 @@ void RandomizerCore::SwapPanels(int panel1, int panel2, int flags) {
52 offsets[PUSH_SYMBOL_COLORS] = sizeof(int); 55 offsets[PUSH_SYMBOL_COLORS] = sizeof(int);
53 offsets[OUTER_BACKGROUND] = 16; 56 offsets[OUTER_BACKGROUND] = 16;
54 offsets[OUTER_BACKGROUND_MODE] = sizeof(int); 57 offsets[OUTER_BACKGROUND_MODE] = sizeof(int);
55 offsets[EXTRA_BACK_DISTANCE] = sizeof(float);
56 offsets[TRACED_EDGES] = 16; 58 offsets[TRACED_EDGES] = 16;
57 offsets[AUDIO_PREFIX] = sizeof(void*); 59 offsets[AUDIO_PREFIX] = sizeof(void*);
58// offsets[IS_CYLINDER] = sizeof(int); 60// offsets[IS_CYLINDER] = sizeof(int);
diff --git a/Source/RandomizerCore.h b/Source/RandomizerCore.h index 21ed0b6..2a8e42e 100644 --- a/Source/RandomizerCore.h +++ b/Source/RandomizerCore.h
@@ -8,6 +8,7 @@ __declspec(selectany) int SWAP_NONE = 0x0;
8__declspec(selectany) int SWAP_TARGETS = 0x1; 8__declspec(selectany) int SWAP_TARGETS = 0x1;
9__declspec(selectany) int SWAP_LINES = 0x2; 9__declspec(selectany) int SWAP_LINES = 0x2;
10__declspec(selectany) int SWAP_AUDIO_NAMES = 0x4; 10__declspec(selectany) int SWAP_AUDIO_NAMES = 0x4;
11__declspec(selectany) int SWAP_BACK_DISTANCE = 0x8;
11 12
12class RandomizerCore 13class RandomizerCore
13{ 14{