WorldMgr and EventInfo.product.sbyml: Difference between pages

From ZeldaMods (Breath of the Wild)
(Difference between pages)
Jump to navigation Jump to search
imported>Leoetlino
 
imported>Leoetlino
(add stub)
 
Line 1: Line 1:
{{stub}}
{{stub}}
{{Subsystem infobox|name=WorldMgr|init_addr_switch150=00000071010F2920|is_name_official=1|description=Manages world state (time, blood moons, climates, weather, etc.)}}
{{resloc|locations=[[Bootup.pack]]|path=Event/EventInfo.product.byml}}
The '''World Manager''' (WorldMgr) is responsible for managing time, blood moons, climates, weather, fog, wind, lighting, procedural generation of clouds, whether the Lord of the Mountain appears, etc.
<onlyinclude>'''EventInfo.product.sbyml''' is a [[Yaz0]]-compressed file that stores information about all game [[event]]s. It is used by the [[event manager]] to load events.</onlyinclude>


Because of the massive amount of state to handle, functionality is split across the main WorldMgr and 9 sub-managers.
EventInfo is a machine generated file. It is not meant to be edited directly; much of the information it includes are either automatically generated or copied from event flows and other source-only files.


== WorldMgr ==
[[Category:Content (BotW)]]
{{empty section}}
[[Category:Content (BotW, product)]]
 
== Sub-managers ==
Sub-managers are created in WorldMgr::init (0x71010F43C0) and inserted into a pointer array (@WorldMgr+0x5c0). All names below are unofficial.
 
{|class="wikitable"
|+ Sub-managers by ID
! ID !! Description
|-
| 0 || TimeMgr
|-
| 1 || CloudPr? Handles cloud procedural generation.
|-
| 2 || ???
|-
| 3 || Weather? Handles "rain splash" and climate weathers.
|-
| 4 || TemperatureMgr? (Reasonably sure about this one.)
|-
| 5 || ???
|-
| 6 || Sky and fog? Holds the configuration for all EnvPalettes, EnvAttributes, WeatherInfluences, Remains palettes, Indoor palettes and dungeon fogs.
|-
| 7 || DofMgr? Holds depth of field related parameters.
|-
| 8 || ??? (contains a BaseProcLink, so it might have something to do with actors.)
|}
 
=== TimeMgr ===
TimeMgr handles everything to do with time, including Blood Moons and the Lord of the Mountain's apparition.
 
Internally, time of day is stored as a float in the [0.0, 360.0] range.
 
==== TimeMgr::init ====
* Time is set to 78.75 (05:15).
* Time for TotS environment is set to 78.75 (05:15) as well.
* "Bloody Moon end reserve timer" is set to 0.
 
==== TimeMgr::reset ====
This is called whenever a stage is unloaded (essentially every time the loading screen is shown).
* Blood Moon checks are delayed.
* The AnimalMaster_Appearance flag is cleared, meaning the Lord of the Mountain will not appear.
 
==== TimeMgr::calc ====
* Reload some internal state from GameDataMgr.
* If both [[Demo]]103_0 and Demo997_0 have not been played, time of day is reset to 78.75 (05:15).
* If [[AIDef:Action/AdvanceTime]] or anything else that changes time of day was called, the actual time is updated at this moment.
* Blood Moon checks.
* Update time of day.
* If FindDungeon_Activated is false (if the player hasn't received the ''The Isolated Plateau'' quest) and if the current time is >= 165.0 (11:00), the time is forcefully set to 11:00.
* Update Blood Moon timer.
* Update Daytime, Night time, is morning, is noon, is evening flags.
* Update time division.
* Update "Bloody moon end reverse timer".
* Update GameDataMgr state (time, number of days, Blood Moon timers).
* Update Lord of the Mountain flags (in particular, determine if it should appear).
 
[[Category:Internals]]
[[Category:Subsystems (BotW)]]

Revision as of 07:55, 18 February 2020

This resource is found in Bootup.pack.

Its canonical resource path is "Event/EventInfo.product.byml".

EventInfo.product.sbyml is a Yaz0-compressed file that stores information about all game events. It is used by the event manager to load events.

EventInfo is a machine generated file. It is not meant to be edited directly; much of the information it includes are either automatically generated or copied from event flows and other source-only files.