From caddad668bd8fe0a2b4fbed410787f7134b8d701 Mon Sep 17 00:00:00 2001 From: jbzdarkid Date: Mon, 29 Oct 2018 18:49:30 -0700 Subject: Fix mountain elevator, fix back distance --- Installer/Installer.vdproj | 721 +++++++++++++++++++++++++++++++++++++++++++++ Source/Main.cpp | 8 +- Source/Panels.h | 138 +++++---- Source/Randomizer.cpp | 12 +- Source/RandomizerCore.cpp | 4 +- Source/RandomizerCore.h | 1 + 6 files changed, 804 insertions(+), 80 deletions(-) create mode 100644 Installer/Installer.vdproj 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 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:Installer" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_E86F0F0DE4B646B6956C8E30890951D2" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\Installer.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Installer.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:3" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" + { + "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.6.1" + } + } + } + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + } + } + "File" + { + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_4D19640D10EA43E68046262546954A5E" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_5393EB12357E4BF29E8149058ABE909F" + { + "DefaultLocation" = "8:[ProgramFiles64Folder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_B2294C987D6245B881C99CC1494F9A53" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:Witness Randomizer" + "ProductCode" = "8:{6F5835BB-A6A5-431A-8375-F8992CD74B86}" + "PackageCode" = "8:{88F29213-17E5-4446-A1F4-97D01C6DF2C5}" + "UpgradeCode" = "8:{4CB5496B-A47E-41D3-B4A7-677E29AB7513}" + "AspNetVersion" = "8:2.0.50727.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:2.0.1" + "Manufacturer" = "8:jbzdarkid" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:https://www.github.com/jbzdarkid/witness-randomizer/issues" + "Title" = "8:Witness Randomizer" + "Subject" = "8:" + "ARPCONTACT" = "8:jbzdarkid" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:Randomizer for The Witness" + "ARPURLINFOABOUT" = "8:https://www.github.com/jbzdarkid/witness-randomizer" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:1" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_3AE5560C1C264507AB6064EFD59C1D29" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_63A12348E59E4B23AF4A320B583CE259" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_8B27FF000D99412E935E3A18279A2050" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_4BF3DC672AFD411A93142B3B6422DB19" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_B30BF820F5E14F0DA12BBD906ADF0C86" + { + "Name" = "8:WitnessRandomizer" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_E86F0F0DE4B646B6956C8E30890951D2" + "Folder" = "8:_B2294C987D6245B881C99CC1494F9A53" + "WorkingFolder" = "8:_5393EB12357E4BF29E8149058ABE909F" + "Icon" = "8:" + "Feature" = "8:" + } + } + "UserInterface" + { + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_38760CCB3C7C473E8E648E0E721B588D" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_3A89F4E5009C49478B393C505B87F9E1" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_53574943921E4B3DB4C03DD3D6CA432C" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E1C9373AA1F84906A77B0A402FC41089" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E9B774D828F444DBB21D89182BC27A21" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_525FC4F1C72C4EE3984593146DD26634" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8808DD7C245240A9954C040BF06F2B9D" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F7031E39D9854967A8FBADF12A890B0B" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_9359F122FC5E433F9E5A9EFF22C28425" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_7B03CE8F39FF4BA2B82BFADB5CE02784" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A1DF86A3EDDD44E594A0CDFC7F58D821" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_19BB8ECC0C3A4153BF658C0F22142794" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_3433DFF95F204C7B8A83783FA361BFCE" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AF4B4DA9EB504C71B314DF4C68CE15EA" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_AAE51F7F58C64A4B996423B01E3D8921" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_4AF1C2264E804EE9BA6E2E014EFACBD1" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C45FE7F2B865461AB6313DD4AEB2833D" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_640F85EA14454CEEAD495CDCCD0BCB76" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E86F0F0DE4B646B6956C8E30890951D2" + { + "SourcePath" = "8:..\\x64\\Release\\Source.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_5393EB12357E4BF29E8149058ABE909F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{CED79182-F36B-4D07-AD0E-249C15BFAD73}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} 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) seed = _wtoi(text.c_str()); } srand(seed); - Randomizer().Randomize(); + Randomizer randomizer; + randomizer.Randomize(); + /* + if (adjustSpeed.isChecked()) { + randomizer.AdjustSpeed(); + } + */ SetWindowText(hwndRandomize, L"Randomized!"); } } 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 leftRightPanels = { 0x17D02, // Town Windmill Control }; -// These panels are very tall (aka not square) and can't take symmetry panels on them. -std::vector tallUpDownPanels = { - 0x09EEB, // Mountain 2 Elevator - 0x17CC4, // Mill Elevator Control -}; - // Note: Some of these (non-controls) are duplicated elsewhere std::vector upDownPanels = { 0x0008D, // Glass Factory Rotational Symmetry 1 @@ -547,6 +541,72 @@ std::vector junglePanels = { 0x03616, // Jungle Laser }; + +std::vector audiologs = { + 0x3C0F7, // Boat Treehouse Rock + 0x3C0FD, // Boat Broken Boat + 0x32A00, // Bunker Green Room + 0x3C0FE, // Desert Broken Wall +// 0x338B0, // Easter Egg Ending Briefcase (?) +// 0x338B7, // Easter Egg Ending Briefcase (?) +// 0x338AD, // Easter Egg Ending Briefcase (iOS) +// 0x338A5, // Easter Egg Ending Wine Table +// 0x338AE, // Easter Egg Ending Briefcase +// 0x338AF, // Easter Egg Ending Briefcase (?) +// 0x338A7, // Easter Egg Ending Record +// 0x338A3, // Easter Egg Ending Countertop +// 0x338A4, // Easter Egg Ending Sunbathing +// 0x3C108, // Easter Egg Ending Pool +// 0x338EF, // Easter Egg Ending Pillow +// 0x336E5, // Easter Egg Ending Apple +// 0x338A6, // Easter Egg Ending Purple Flowers + 0x3C100, // Jungle Entrance Right + 0x3C0F4, // Jungle Entrance Left + 0x3C102, // Jungle Laser + 0x3C10D, // Jungle Beach + 0x3C10E, // Keep Corridor + 0x3C10B, // Keep Guitar Amp + 0x0074F, // Keep Front Wall + 0x012C7, // Keep Throne + 0x329FF, // Mill Stairs + 0x3C106, // Monastery Left Shutters + 0x33AFF, // Mountain 1 Purple Path Panel + 0x011F9, // Mountain 1 Junk Column + 0x00763, // Mountain 1 Blue Panels + 0x32A08, // Mountain 2 Blue Path Panel + 0x3C101, // Mountain 3 Giant Floor + 0x3C0FF, // Mountain 3 Peekaboo + 0x3C103, // Mountainside Cloud Cycle + 0x00A0F, // Mountaintop + 0x339A9, // Outside Tutorial Discard + 0x015C0, // Outside Tutorial Stones + 0x33B36, // Peninsula + 0x3C10C, // Shadows Laser + 0x32A0E, // Shadows Orange Crate + 0x329FE, // Shipwreck Bridge + 0x32A07, // Swamp Purple Underwater + 0x00761, // Swamp Shortcut + 0x3C109, // Symmetry Island Behind Laser + 0x33B37, // Symmetry Island Fading Lines + 0x3C107, // Town Laser Redirect + 0x3C0F3, // Town Bell Tower + 0x015B7, // Town Obelisk + 0x3C10A, // Town Lattice Panel Right + 0x32A0A, // Town Lattice Panel Left + 0x015C1, // Treehouse Green Bridge + 0x3C12A, // Treehouse Shipwreck Shore + 0x3C104, // Treehouse Docks +// 0x3C105, // Tunnels Box + 0x339A8, // Tutorial Patio Roof + 0x0050A, // Tutorial Gate +// 0x338BD, // UTM Town Shortcut +// 0x3C135, // UTM Cave In +// 0x338C9, // UTM Mountainside Shortcut +// 0x338D7, // UTM Stairwell +// 0x338C1, // UTM Challenge Water +// 0x338CA, // UTM Invisible Dots +}; + // There might be something to do with these, I haven't decided yet. std::vector nothingPanels = { // Doors & Shortcuts & Shortcut doors & Door controls @@ -684,69 +744,5 @@ std::vector nothingPanels = { 0x0005C, // Glass Factory Vertical Symmetry 5 0x17C31, // Desert Final Transparent 0x19650, // Shadows Laser -}; - -std::vector audiologs = { - 0x3C0F7, // Boat Treehouse Rock - 0x3C0FD, // Boat Broken Boat - 0x32A00, // Bunker Green Room - 0x3C0FE, // Desert Broken Wall -// 0x338B0, // Easter Egg Ending Briefcase (?) -// 0x338B7, // Easter Egg Ending Briefcase (?) -// 0x338AD, // Easter Egg Ending Briefcase (iOS) -// 0x338A5, // Easter Egg Ending Wine Table -// 0x338AE, // Easter Egg Ending Briefcase -// 0x338AF, // Easter Egg Ending Briefcase (?) -// 0x338A7, // Easter Egg Ending Record -// 0x338A3, // Easter Egg Ending Countertop -// 0x338A4, // Easter Egg Ending Sunbathing -// 0x3C108, // Easter Egg Ending Pool -// 0x338EF, // Easter Egg Ending Pillow -// 0x336E5, // Easter Egg Ending Apple -// 0x338A6, // Easter Egg Ending Purple Flowers - 0x3C100, // Jungle Entrance Right - 0x3C0F4, // Jungle Entrance Left - 0x3C102, // Jungle Laser - 0x3C10D, // Jungle Beach - 0x3C10E, // Keep Corridor - 0x3C10B, // Keep Guitar Amp - 0x0074F, // Keep Front Wall - 0x012C7, // Keep Throne - 0x329FF, // Mill Stairs - 0x3C106, // Monastery Left Shutters - 0x33AFF, // Mountain 1 Purple Path Panel - 0x011F9, // Mountain 1 Junk Column - 0x00763, // Mountain 1 Blue Panels - 0x32A08, // Mountain 2 Blue Path Panel - 0x3C101, // Mountain 3 Giant Floor - 0x3C0FF, // Mountain 3 Peekaboo - 0x3C103, // Mountainside Cloud Cycle - 0x00A0F, // Mountaintop - 0x339A9, // Outside Tutorial Discard - 0x015C0, // Outside Tutorial Stones - 0x33B36, // Peninsula - 0x3C10C, // Shadows Laser - 0x32A0E, // Shadows Orange Crate - 0x329FE, // Shipwreck Bridge - 0x32A07, // Swamp Purple Underwater - 0x00761, // Swamp Shortcut - 0x3C109, // Symmetry Island Behind Laser - 0x33B37, // Symmetry Island Fading Lines - 0x3C107, // Town Laser Redirect - 0x3C0F3, // Town Bell Tower - 0x015B7, // Town Obelisk - 0x3C10A, // Town Lattice Panel Right - 0x32A0A, // Town Lattice Panel Left - 0x015C1, // Treehouse Green Bridge - 0x3C12A, // Treehouse Shipwreck Shore - 0x3C104, // Treehouse Docks -// 0x3C105, // Tunnels Box - 0x339A8, // Tutorial Patio Roof - 0x0050A, // Tutorial Gate -// 0x338BD, // UTM Town Shortcut -// 0x3C135, // UTM Cave In -// 0x338C9, // UTM Mountainside Shortcut -// 0x338D7, // UTM Stairwell -// 0x338C1, // UTM Challenge Water -// 0x338CA, // UTM Invisible Dots + 0x09EEB, // Mountain 2 Elevator }; 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 @@ /* * BUGS: - * Tutorial back left is not protected anymore * Shipwreck vault is solved reversed? - * Verify UTM perspective? * FEATURES: - * Speedrunner mode? * Speed up some of the slow things (like swamp) * Determine if the user has entered the seed, and re-randomize it if not * Prevent re-randomization (?) * Clear "Randomized" state on NG (?) - * Limit back distance to pillars (like before) * Randomize audio logs -- Hard, seem to be unloaded some times? * Swap sounds in jungle (along with panels) -- maybe impossible * Make orange 7 (all of oranges?) hard. Like big = hard. * Start the game if it isn't running? - * Increase odds of mountain oranges garbage on other panels? [setting] + * SETTINGS: + * Speeds of certain things + * Speedrunner mode + * Increase odds of mountain oranges garbage on other panels */ #include "Memory.h" #include "Randomizer.h" @@ -36,7 +35,6 @@ int find(const std::vector &data, T search, size_t startIndex = 0) { void Randomizer::Randomize() { // Content swaps -- must happen before squarePanels - _core.Randomize(tallUpDownPanels, SWAP_LINES); _core.Randomize(upDownPanels, SWAP_LINES); _core.Randomize(leftForwardRightPanels, SWAP_LINES); @@ -159,7 +157,7 @@ void Randomizer::RandomizeSwamp() { void Randomizer::RandomizeMountain() { _core.Randomize(lasers, SWAP_TARGETS); - _core.Randomize(pillars, SWAP_LINES); + _core.Randomize(pillars, SWAP_LINES | SWAP_BACK_DISTANCE); _core.Randomize(mountainMultipanel, SWAP_LINES); // 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) { if (flags & SWAP_AUDIO_NAMES) { offsets[AUDIO_LOG_NAME] = sizeof(void*); } + if (flags & SWAP_BACK_DISTANCE) { + offsets[EXTRA_BACK_DISTANCE] = sizeof(float); + } if (flags & SWAP_LINES) { offsets[PATH_COLOR] = 16; offsets[REFLECTION_PATH_COLOR] = 16; @@ -52,7 +55,6 @@ void RandomizerCore::SwapPanels(int panel1, int panel2, int flags) { offsets[PUSH_SYMBOL_COLORS] = sizeof(int); offsets[OUTER_BACKGROUND] = 16; offsets[OUTER_BACKGROUND_MODE] = sizeof(int); - offsets[EXTRA_BACK_DISTANCE] = sizeof(float); offsets[TRACED_EDGES] = 16; offsets[AUDIO_PREFIX] = sizeof(void*); // 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; __declspec(selectany) int SWAP_TARGETS = 0x1; __declspec(selectany) int SWAP_LINES = 0x2; __declspec(selectany) int SWAP_AUDIO_NAMES = 0x4; +__declspec(selectany) int SWAP_BACK_DISTANCE = 0x8; class RandomizerCore { -- cgit 1.4.1