Sly 1:WS: Difference between revisions

Fix field type
(Updated struct fields and enum tables)
(Fix field type)
 
(One intermediate revision by the same user not shown)
Line 5:
| sly1= y
}}
{{hatnote|This article is about the state of worlds in Sly 1. For the state of the world in in Sly 2 and 3, see [[DAG]].}}
 
'''WS''' (world state) is a data structure in {{Sly 1}}. It is responsible for tracking the state of eacha particular [[gameworld]].
 
== Fields ==
Line 14 ⟶ 13:
{{Struct top}}
{{Struct field|offset=0x0|size=0x438|type=LS[9]|name=als|description=Level states array}}
{{Struct field|offset=0x438|size=84|type=dwordint|name=ckey|description=Count of keys collected on world}}
{{Struct field|offset=0x43c|size=84|type=dwordint|name=cvault|description=Count of vaults opened on world}}
{{Struct field|offset=0x440|size=84|type=dwordint|name=ctimed|description=Count of MTSs completed on world}}
{{Struct field|offset=0x444|size=4|type=float|name=dt|description=Time spent in world}}
{{Struct field|offset=0x448|size=4|type=enum FWSint|name=fws|description=World state flags}}
{{Struct bottom}}
<!--
 
<!-- <syntaxhighlight lang="c++">
struct WS {
struct LS als[9]; /* Level states array */
Line 30 ⟶ 29:
enum FWS fws; /* World state flags */
};
</syntaxhighlight> -->
-->
 
== Level states array ==
 
{{See also|Sly 1:LS}}
Each <code>WS</code> has an array of 9 <code>LS</code> structs, even if the world has fewer than 9 levels. InThe theLS casestructs ofare analways unusedaligned level,in the corresponding<code>als</code> levelarray state inso the arrayindices are isas blank.follows:
* <code>als[0]</code>: Intro level
* <code>als[1]</code>: Hub level
* <code>als[2]</code> - <code>als[7]</code>: Generic levelsPlatforming/minigames
* <code>als[8]</code>: Boss fight
 
TheWorld level1 statesand areWorld always5 alignedhave infewer than 9 levels, so some some of the entries levels in their <code>als</code> array so the indicesarrays are as follows:blank/unused.
* <code>als[0]</code>: Intro level
* <code>als[1]</code>: Hub level
* <code>als[2]</code> - <code>als[7]</code>: Generic levels
* <code>als[8]</code>: Boss fight
 
== World state flags (FWS) ==
Because World 5 has no hub level and fewer than 6 generic levels, it is the only gameworld with gaps between levels in the <code>als</code> array.
 
== World state flags ==
 
The current state of the world is defined by the FWS enum, which has the following possible values:
{{Enum top}}
{{Enum value|FWS_Visited|0x1|World is unlocked and can be selected in {{Sly 1|The Hideout}}}}
{{Enum value|FWS_Lock_0|0x2|Corresponds to a particular {{Sly 1|LOCKG}} in the world being unlocked}}
{{Enum value|FWS_Lock_1|0x4|"}}
{{Enum value|FWS_Lock_2|0x8|"}}
{{Enum value|FWS_Lock_3|0x10|"}}
{{Enum value|GRFWS_Lock_All|0x1e|All of the locks in the world have been unlocked}}
{{Enum bottom}}
 
The <tt>fws</tt> acts as a bitfield and the game ORs the its value with the FWS enum values to check if a particular condition is met.
 
Note that the the order of locks is not the same for every world because each LOCKG independently decides which bit on the <code>fws</code> gets set when it gets unlocked.
 
== See also ==
* {{Sly 2|DAG}}
 
{{Navbox Sly 1}}