Sly 1:Game state: Difference between revisions

Removed stub tag
(Created Sly 1 subsystem article)
 
(Removed stub tag)
 
(2 intermediate revisions by the same user not shown)
Line 1:
{{Infobox subsystem
| description= Manages the current state of the game world
| startup= 0x160070
| update= 1607d0
}}
 
'''Game state''' is the subsystem that handlesmanages datathe whichcurrent getsstate saved toof the savegame fileworld. It’sIt cornerstone ismanages a global instance of the {{Sly 1|GS}} struct, <code>g_gs</code>{{check}}which keeps track of things such as the quantity of keys, locatedcoins, and charms collected; unlocked powerups; which cutscenes have been watched; atand more.
 
== Global values Startup==
The startup function, <code>StartupGame</code>, only calls <code>StartGame</code>.
 
=== StartGame ===
<code>StartGame</code> calls <code>UnloadGame</code> followed by <code>WipeToWorldWarp</code>.
 
==== UnloadGame ====
<code>UnloadGame</code> is called during startup and during a level transition if the ClearGame transition flag is set. It calls <code>InitGameState</code>, <code>OnDifficultyGameLoad</code>, and <code>RetryGame</code>. It also disables cheat codes by setting <code>g_grfcht</code> to <code>GRFCHT::None</code> and it sets the stored value for the previous level ID to <tt>-1</tt>.
 
===== InitGameState =====
The <code>InitGameState</code> function at 1605e8 resets fields on the global <code>g_gs</code> instance to their defaults. Specifically, it sets the following values:
{| class="wikitable"
|+
|+ Caption text
!Field
!Value
|-
|gameworldCur
! Address !! Type !! Name
|GAMEWORLD::Intro
|-
|grfvault
| g_pgsCur || GS* || 0x2623c0
|0
|-
|gsv
| g_pwsCur || WS* || 0x2623c4
|0x12
|-
|cbThis
| g_plsCur || LS* || 0x2623c8
|0x1a00
|-
|worldlevelCur
|WORLDLEVEL_2
|-
|clife
|5
|-
|last_powerup
| -1
|}
It then calls a function which resets the game settings to their defaults.
==Update==
The update function, <code>UpdateGameState</code>, takes the current frame's <code>dt</code> as input and updates the play times on the global <code>g_gs</code> instance. Specifically, it adds the <code>dt</code> value to the current game play time (<code>g_pgsCur->dt</code>), the current world play time (<code>g_wsCur->dt</code>), and the current level play time (<code>g_lsCur->dt</code>). It does not call any other functions.
 
==Global values==
{| class="wikitable"
! Address !! Type !! Name!!Description
|-
|g_pgsCur||GS*||0x2623c0||Pointer to current game state
|-
|g_pwsCur||WS*||0x2623c4||Pointer to current world state
|-
|g_plsCur||LS*||0x2623c8||Pointer to current level state
|}
 
== See also ==
* [[Sly 1:GS]]
* [[Sly 1:WS]]
* [[Sly 1:LS]]
 
{{Navbox Sly 1}}
{{stub}}