* add map palettes per pulse to leverage shader caching
* use unregister blended with kaleido maps
* use Gfx_TextureCacheDelete for KD lava
* bump lus
* add miss tex clears for KD
* Add Collision Header XML parser
* Update CollisionHeaderFactory.cpp
* Remove "Num" attributes
* Fix crashes
Prevent crash when the camera setting is negative
Change some IntAttributes to UnsignedAttributes
* Add custom text message loading
* Use "override" folder for text mods
* Replace only existing messages
* Use std::find_if to check for existing messages
* Rearrange menus for better layout on smaller screens.
* Automatically calculate +/- increments for float sliders
* Add needed header
* Use stringstream instead of format since apparently most platforms don't actually support all of c++20 yet boooooo
* Add header that only Mac complained about for some reason
* Theoretical performance improvement
* Actual performance improvement
* Update z_fishing documentation from decomp
* undo sCameraAt/Eye rename
* forgot to include these defines Heehee
* adding enums, settings
* adding more stuff back in
* more work
* we're literally typing words into computer
* include unordered map
maybe this fixes mac build idk
* wahoo
* hmm
* add make sure disabled flag gets popped
* poggers in the chat?
* doing some refactoring
* fixing build
* documentation, moving fishsanity instance to rando
* move FS back to context, fixing build, mod progress
since FS is needed during rando generation & provides perpetual info abt. fishsanity in the seed, seems to make more sense if it lives on the context
* moving some stuff around
* it's starting to get real in here
* ELIMINATE FISHSANITYMETA
* IT WROKS
* Update trackers, fix pond fish flagging
* ZD fish shuffle initial checkpoint
* ZD fish "working"
aside from the crashing
* wrapping up
* fix for partial pond shuffle
* remove misc. unrelated debugconsole modification
* updating GI model
* get build working
* add a todo for this
* removeoopsie
* Rework hints a bit
* update hint loc
* Use visual indicator instead of despawning caught fish
---------
Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
* WIP biggoron and big poes hint
* commit v0 of biggoron and big poes hints
* adjust for settings update
* Add more hints
* Finish extra Basic Static Hints
* remove vestigial code
* Forgot to remove this
* try to fix windows build
* fix build post conflcit res
* remove StaticHintData as redundent
* last cleanup
* reimplement 3drando's hashtag color replacement system.
Also generates merchant text at seed gen time instead of runtime.
By merchants, I mean Bean Salesman, Medigoron, Granny, and Wasteland
Bombchu guy. Scrubs and shops are still dynamic at runtime.
* Improved auto-formatting and fixed altar text.
* Gets hint text for spoiler direct from context.
* Removal of now unused code.
* Change warp song hint generation/retrieval
Generates full warp location text instead of just location names and stores all six in the custom message tables for later retrieval as opposed to dynamically swapping in the location names every time the text is rendered.
* Change Frog Ocarina Game Hint generation/retrieval
Similar to previous changes, removes the on-the-fly generation aspect of it and just generates the full hint text once during seed generation.
* Update soh/soh/Enhancements/randomizer/3drando/text.hpp
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Fix submodules appearing as changed files.
* Fix WOTH/Foolish colors to match develop-macready.
* Fixes backwards colors for area and item in some hints.
---------
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Add right-stick aiming to third-person aim
* Add Z-aiming CVar and inversion to Z-aiming
* Create calculation for rel.right_stick and apply it in Z-aiming
* Move option to First-Person section to match shield
* Fix max/min aiming heights
* Expand min/max + comment
* block out vanilla + comments
* block vanilla code better
* Remove extra space
* new documentation formatting
* rewrite ==0 and !=0
* Convert `Rando::Logic` to a class.
* Readd `LogicReset` as `Logic::Reset` for resetting logic mid-generation-cycle to allow seed generation to actually work.
* Change `IsChild` and `IsAdult` to `CanBe` variants.
* Make it buildable.
* First LogicVar class.
* Revert CanBe changes to Is (adult & child) as I'm no longer sure that it's a good one.
* Update soh/soh/OTRGlobals.cpp
Use existing gRandoContext reference.
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Conflict resolution cleanup (plus removing SaveContext references).
---------
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Adds TrickOption subclass and fills in extra info.
Fills in the extra info from randomizer_tricks.cpp that other Options don't have (hence the subclass for Tricks specifically).
* Uses new definitions of tricks in ImGui menu.
* Removes randomizer_tricks.cpp/h
* Adds new tricks.cpp/h to hold some static data and functions.
* Refactors Tricks namespace into a class with only static memebers and functions.
* Fixes bug with Trick Tag system.
* Fix Fire Temple Boss Door Logic
* Update soh/soh/Enhancements/randomizer/3drando/location_access/locacc_fire_temple.cpp
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
---------
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
* Fix the calculation of `areaChecksGotten` to account for flags functionality setting invisible checks.
Change `areaChecksTotal` to dynamic calculation based on tracker visibility, now that all checks are being added to `checksByArea`.
Both are updated in realtime when either "Show all GS locations" or "Hide right side shop items" are toggled.
Reformat all remaining unencapsulated if statements.
* Changed helper variable change and call to `RecalculateAreaTotals()` to when the options are toggled instead of checking every frame.
Removed redundant if...else.
Clarified areaChecksGotten increment/decrement functionality based on current status and incoming status change.
* Removed unused code.
* Should fix seed bleed between multiple saves and loaded spoilers by resetting the Rando::Context before loading a save.
* Only reset for rando saves.
* Add Architecture Priority to Info.plist
This allows the app bundle to be launched natively on Arm without the need for Rosetta.
* Remove arch shenanigans in soh-macos.sh.in
Shouldn't be necessary now...
* Add back launching the binary in soh-macos.sh.in
Accidentally removed launching the binary from the script.
* First dirty testing process
* Forgot a 2 for the second Dlist patching of Shadow
* TWEAK: GI integration
* DEL: Unucessary includes + whitespace
* TWEAK: No stones refactor for now, sorry I'm kinda lazy right now, don't hate me, please! T_T
* Stone removal part 2, sometime I forget to save the changes :derp:
* Tiny last tweaks, hopefully
* Add to rando preset
* Tweak: typo
* TWEAK: Trigger on toggling on/off
* TWEAK: adressed reviews 💯
* Please mate, excuse my British typing
* Simplify item cycling
* Simplify selection variables
* Fix adult bunny hood and gray appropriate items
* Don't go into cycling mode when there's no items to cycle to
* Restore updating c buttons
This was previously done with `Inventory_ReplaceItem` but that led to problems when another slot had the same item as the one that's being cycled.
* Address review
* Fix various randomiser setting bugs
* Fix shuffle entrences metasetting getting locked on per savefile after an entrance rando seed is generated once
* Fixes pressing B on name entry after randomizer quest.
* Reverts to auto parsing previous spoiler file.
Also includes an option to press L to automatically gen a fresh seed. It still does regenerate the old spoiler to regen the hints in the user's current language, but it will now automatically do this instead of requiring dragging and dropping the spoiler every time.
* Fixes bug causing rando settings to come from CVars instead of a spoiler file when a spoiler is dropped/imported on boot.
* Pressing Generate Randomizer in ImGui doesn't use loaded spoilerfile.
* Adds tooltip to Generate Randomizer ImGui Button.
* Advanced Resolution Settings
first working version with most features implemented
* Update advancedResolutionEditor.cpp
Added auto-resizing logic for Pixel Perfect Mode.
Minor fixes.
* Tweaks and tidying up.
Disable integer scale slider if automatic sizing is overriding it.
Don't offer these UI options on Apple.
Removed unused code.
Updated LUS.
* Update libultraship
* Filenames and style fixes
Filenames and folders now more closely match rest of project.
Tidied newlines/comments.
(SohMenuBar.cpp) Label of button changed to fit menu.
(ResolutionEditor.cpp) Default window size improved.
* Update libultraship
(However, I still need to make the GUI controls acknowledge the new constraints.)
* Update libultraship
(and changed the name of some cvars)
* Added constraints to the inputs. Added a fps drop warning.
* Tweaks based on feedback
* Update libultraship
* Enabled on Apple - For currently ongoing Retina DPI troubleshooting.
(Also removed the duplicated N64 Mode toggle.)
* Update libultraship
* Update LUS, update CVar names, small tweaks
And one significant fix: Enhancement checkboxes in ResolutionEditor now default to off.
* Add Additional Settings and the accursed horizontal resolution field.
There's still a few bugs with it that I haven't squashed, but I need to stop for now and just commit what I've got.
(This is honestly causing more problems than it solves, but i'm tired of getting questions about it.)
* Resolved many of the lingering bugs with the previous commit
* Horizontal Resolution field now properly acknowledges resolution bounds.
* Don't show "Horiz. pixel count" field if not enforcing aspect ratio.
Additionally:
* Don't change settings if selecting "Custom" from preset dropdowns.
* Added a missing horizontal pixel count clamp check.
* Tidied up redundant behaviour.
* Additional comments, and a checkbox to disable aspect correction on consoles.
* Change how frame rate threshold is calculated.
* More minor UI tweaks.
* Added missing CVarSave() calls where needed.
Added a short update countdown for the numerical CVars. This is intended to prevent CVarSave() from being called too often.
* Added a helpful button to cover a potential support issue.
* "Fit Automatically" has been moved to LUS and is now smarter.
This will require another PR in LUS to be opened by me.
* Swap to new branch for libultraship
* Even more clever integer scaling behavior.
"IntegerScale" is itself now a CVar group.
* Tidy up comments.
* Fix a typo that prevented `IsDroppingFrames()` from working
(Maybe more than a mere typo, but a typo was involved.)
* Remove unused and unnecessary variables.
* Group "Integer Scaling" under its own collapsing header
* Changed label for the Enabled advanced settings checkbox.
* Update libultraship + Formatting pass on ResolutionEditor.cpp
* Add `(Select "Off" to disable.)` help text for the aspect ratio setting and hide UI elements accordingly.
Only show the fields if user chooses Custom.
Padding has been shifted accordingly too.
Also fixed a long standing error with the Y field disappearing when modifying X.
* Well I suppose that's no-longer necessary.
* Update libultraship with commits from main branch (up to e5df3a9)
* Tweak comments.
* Save current ImGui Combo items as a console variable
to improve user experience.
* Change language of NeverExceedBounds checkbox description
to be more affirmative, so it makes more sense.
Add tooltip for NeverExceedBounds checkbox.
Tweak some comments related to additional settings.
* Add list of colours to use with TextColored elements.
* Move some UI elements around.
Add an extra MSAA slider to the editor window.
* Integer Scaling header is DefaultOpen if player has Pixel Perfect Mode active upon window creation.
+ Amend tooltips.
* Fix a minor oversight with default configuration.
Fixes an issue where default aspect ratio settings on a fresh SoH configuration weren't matching the defaults assigned in libultraship.
The default values are now 16:9, matching LUS.
Additionally, the combo box now defaults specifically to the 16:9 preset instead of "Custom".
(Fixing the defaults in LUS to be 4:3 isn't worth a LUS bump, so this slight workaround will do for the sake of this PR.)
* Make resolution slider `disabled` condition a variable, for readability.
* Small tweak to combo item saving
* Use `SCREEN_HEIGHT` and `SCREEN_WIDTH` for constraints
* Simplify "Show a horizontal resolution field" logic
by using pixel dimensions as the aspect ratio directly, since now this view hides the aspect ratio setting from the user anyway.
* Correct aspect ratio visualiser to be un-inverted
+ actually display it as a ratio.
* Remove update flags from combo boxes + remove update countdown
+ remove non-functioning 'IsBoolArrayTrue' function.
(The countdown was an okay idea but I didn't implement it correctly. It's better to just keep it simple.)
* Code review suggestion: disable UI elements conditionally
(+ tweaks to code style)
* Invisible tweaks to the Integer Scaling-related Additional Settings
This looks like a lot but it's mostly just re-arranging a cluttered area of the code for clarity.
Actual changes to functionality are:
* Help text now "disabled" along with the checkbox.
* The NeverExceedBounds checkbox will now reset the unused ExceedBoundsBy cvar if it's been changed.
* Assorted small tweaks to comments and variable declarations.
* Code review suggestion: tweak "Window exceeded" warning condition
* Missed a thingy.
* Fixes off by one errors for a few settings.
* Removes disable of shuffle options when starting with corresponding items.
* Junks checks when shuffle is off and start with is on.
* Add player state dead check to Player_UseTunicBoots
* Update soh/src/overlays/actors/ovl_player_actor/z_player.c
---------
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Removes cvarSettings map.
Options now link with CVar names directly. So instead of passing the
cvarSettings map, the Option class can check a corresponding CVar
if a cvarName was provided during construction. Of note, it does not
automatically sync the Option selected index with the CVar value, as
we would not want this to happen in all cases, for example when dragging
a spoiler file, we don't want to overwrite all the CVars with the Options
from the spoiler file. Currently all Options are set to the value of the CVar
they are linked to right before generating a new seed, unless a spoiler file
has been dropped in which case those settings are used instead.
* Early version of ImGui Render function
Currently only the slider variant. Will allow for auto rendering of options
in ImGui, with tooltips and automatic display of the values in each Option's
options array while keeping the CVars at the selected index, preventing
Off By One Errors.
* Implementation of Checkbox and Combobox rendering.
Currently only in use for a couple of items, future commit will implement for all
options.
* Auto-render entire first tab of Randomizer Settings
* Switch remaining tabs to auto-render
* Implements disabling options
* Cleanup/Documentation
* Auto-render entire table columns
* Implement OptionGroup rendering for "Sections"
* Automates the rendering of tables in the Settings window.
With the exception of the Locations and Tricks tabs, those are special
and will need a lot more work.
* Adds ability for option groups to have descriptions,
These descriptions will automatically display as tooltips in ImGui,
if the widget container type accounts for it.
* Fix as many IDE warnings as possible in option.h/cpp
Trying out CLion Nova, and it highlighted some things I decided to fix, some from CLion itself and some from CLang-Tidy. Oddly, it didn't like a conversion from size_t to int whether I left it implicit or added a static_cast, so I guess that warning is staying.
* Fixes some simple bugs
* fix another small oopsie
* Fixes parsing some of the option changes
Specifically we went from storing the actual value in the CVar to storing an index, meaning sliders that started with 1 now have the index offset by 1. This is currently only Big Poe Count, Triforce Hunt total/required, and starting hearts. Everything else either already started at 0, or in the case of LACS/Bridge counts, we were starting the sliders at 1 but they would have always worked at 0 according to the 3drando logic.
* Fix bug with status of skip child stealth
* Renames the Settings::Setting function to GetOption
* Add `Settings` pointer as a member of `RandomizerSettingsWindow`.
* Replaces ctx->GetOption with direct access to mOptions
This is equivalent, the access through ctx in this case was completely unnecessary and a muscle-memory mistake on my part.
* Implements a few IDE/Linter suggestions
* Initial wothCandidates change, pushed early foreseeing conflicts
* Implement better barren handling, waiting on #3205
* pls save next time VS code
* Finish implementation of barren and randomizer area refactor
* Apply function changes to develop merge
* Fix double default decleration issue
* change some var types for uniformity
* Fix post merge differences to the point of building and generating randos
* Address reviews
* address more reviews
* Fixes some IDE warnings/linter-suggestions in context.*
Most of these come from CLion Nova. Some of these may be controversial, such as the if-init-statement related ones. Most of them should not be controversial though, like replacing C-style casts with static casts.
* Fixes IDE warnings/Linter suggestions in option.*
* Fixes some IDE warnings/linter suggestions.
Left a few about "Template Arguments can be deduced", and a "Redundant static_cast" for the sake of clarity.
* Fixes some IDE warnings/linter suggestions in item.*
* Fixes some IDE warnings/linter suggestions in location.*
* Fixes some IDE warnings/linter suggestions in item_location.*
* Fixes some IDE warnings/linter suggestions in item_override.*
* Fixes some IDE warnings/linter suggestions in dungeon.*
* Fixes some IDE warnings/linter suggestions in trial.*
* Use std::ranges::generate rather than manually looping.
* Fixes a typo
* Changes a TODO comment with more info.
Previously this TODO statement was a question of whether or not we ever want to not output a spoiler log. Eventually we may want different amounts or types of data to be output when generating a seed according to certain settings. For instance, maybe we want a human-readable spoiler log, that has item locations and hint content without the formatting info. Maybe we want a "Plandomizer File", which is that but the hint strings include formatting info so that the formatting/colors can be changed, and eventually we may want to let cosmetic info be specified in there as well. Or maybe we just want a Race/Patch file that just has the seed and settings, for Race files we could also specify non-rando settings that should be locked to certain values. Or maybe want one of each. All of that is stuff that should at least start being handled at the location of this TODO statement.
* Fixes a scope issue Windows didn't catch
* Removes std::ranges::generate as apparently AppleClang can't do it.
* Removes std::ranges::any_of as apparently AppleClang can't do it.
* Re-adds what I thought was an unused include.
* An attempt to fix the macos construct_at error
* Hook into flagset hooks for processing check tracking. Has some manual workarounds (some breaks still need to be found).
Remove areaChecks and looping functionality as redundant.
* Additional vanilla handling.
* Fix tracker not showing MQ checks in MQ non-rando.
Fix tracker marking non-MQ variants of dungeon checks (e.g. map chest, etc) when collecting in MQ.
* Set all areas to spoiled if not rando.
* Revert attempt to spoil in randomizer based on MQ dungeon count as I don't know how that works at the moment.
* Restore and update spoiling based on MQ dungeon settings (none, selection, or count of 12).
Fix Anju As Adult check.
* Remove Anchor-specific code :baguette:
* Use `ClearAreaTotals()` in `Teardown()` instead of the duplicate code there.
* Update to `ClearAreaChecksAndTotals()` with `vec.clear()` added.
* Fix type spoiling again. Now spoils on 0 MQ dungeons, not rando, if the option is enabled in check tracker settings, selection, or set number of 12.
Fix vanilla checks being marked collected in MQ dungeons.
* Fix 100 GS check.
* ACTUALLY fix 100 GS: change flag type to `RandomizerInf()` in `item_location.cpp`, add RC to RandoInf for it to the table. Also don't send GI for flag if father, falsely triggers ZR frogs minigame.
* Fix gravedigging tour tracking.
* Fix membership card check tracking.
Change scene and flag values to any existing enums.
Clarifying formatting for the checking loop vOrMQ conditions.
* Fix Gravedigging Tour tracking.
Simplify Always Win Gravedigging Tour and Fix Gravedigging Tour Glitch applications.
Modified all necessary paths to use vanilla GDT PoH collection flag instead of randomizer variant.
* Fix Kak Potion Shop being "seen" when entering as child.
* Document static variables
* Document enums and structs
* Document some functions
* Document more functions
* actionParam to itemAction and fix build
* Document some local variables and a define
* General cleanup
* Use PlayerMeleeWeaponAnimation enum when appropiate
* Document some function parameters and local variables
* Document some of player struct
* fix alt backgrounds not always loading
* include gfx lookup with the original unload
* Add hook for alt toggle
* handle cpu modified texture for kd lava
* malloc array instead of illegal initialize
* lay some groundwork
* use custom window (which is currently identical to the LUS window)
* start making it shippy
* start moving stuff out of gamecontroleditor
* clean up shouldrumble
* include the other way
* wii u
* latest lus main
* notch snap angle buttons
* buttons on all the sliders
* just use a hidden id
* handle debug for port 2 and rename tabs so everything fits
* button line buttons look better
* padding fixed
* clang format
* bump to latest LUS main
* big buttons
* just default the analog stick options to open for now
* fix wii u build
* bonus: make it all scale-aware
* clang format
* fix horizontal scrolling
* fix all +/- buttons
* keyboard set defaults
* axis threshold helper text
* bonus: test rumble button
* clang format
* fix otrexporter submodule
* bump to latest lus main
I had an Off By One Bug in a previous commit, and saves made on that commit ended up crashing on boot due to attempting to access a negative index of an array. Added a bounds check to prevent attempting to load that data.
* Move threadpool initialization and `OnExitGame` registration from `SaveManager::Init` to SM's constructor.
Comment on `Init` to mention it's not an initializer for `SaveManager`.
Added check for `SaveManager::SaveSection` to prevent firing a save worker if the game is already exited from a reset.
* Removed `IsSaveLoaded` check in favor of another `ThreadPoolWait()` at the start of `SaveManager::Init()`.
* Removes delayed save functionality, making autosave work everywhere except Ganon and Chamber of Sages scenes.
* Change AutoSave comment to remove the scenarios we no longer block autosave in.
* handle temp B on saving outside of kaleido
---------
Co-authored-by: Adam Bird <archez39@me.com>
* Extends `Assignable Boots and Tunics` functionality to check for and remove Goron and Zora tunics from item buttons when like likes steal them.
* Comment documentation.