Sly 1:WS: Difference between revisions
Fix field type
TheOnlyZac (talk | contribs) (Created article for data structure) Tags: Mobile edit Mobile web edit |
TheOnlyZac (talk | contribs) (Fix field type) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1:
{{Infobox data structure
| name= WS
| size= 0x44c
| official= y
| sly1= y
}}
'''WS''' (
==
The WS struct has the following fields:
{{Struct top}}
{{Struct field|offset=0x0|size=0x438|type=LS[9]|name=als|description=Level states array}}
{{Struct field|offset=0x438|size=4|type=int|name=ckey|description=Count of keys collected on world}}
{{Struct field|offset=0x43c|size=4|type=int|name=cvault|description=Count of vaults opened on world}}
{{Struct field|offset=0x440|size=4|type=int|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=int|name=fws|description=World state flags}}
{{Struct bottom}}
<!--
<syntaxhighlight lang="c++">
struct WS {
struct LS als[9]; /* Level states array */
dword ckey; /* Count of keys collected on world */
dword cvault; /* Count of vaults opened on world */
dword ctimed; /* Count of MTS completed on world */
float dt; /* Time spent in world */
enum FWS fws; /* World state flags */
};
</syntaxhighlight>
-->
==
The current state of the world is defined by the FWS enum, which has the following possible values:▼
{{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. The LS structs are always aligned in the <code>als</code> array so the indices are as follows:
* <code>als[0]</code>: Intro
* <code>als[1]</code>: Hub
* <code>als[2]</code> - <code>als[7]</code>: Platforming/minigames
* <code>als[8]</code>: Boss
World 1 and World 5 have fewer than 9 levels, so some some of the entries levels in their <code>als</code> arrays are blank/unused.
== World state flags (FWS) ==
▲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}}
|