Sly 1:WS: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
TheOnlyZac (talk | contribs) m (Added link) Tags: Mobile edit Mobile web edit Visual edit |
TheOnlyZac (talk | contribs) (Added struct declaration) |
||
Line 4: | Line 4: | ||
== Structure == |
== Structure == |
||
The WS struct is declared as follows: |
The WS struct is declared as follows:<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> |
|||
⚫ | |||
{{todo|Add C++ struct declaration}} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
* <code>als[2]</code> - <code>als[7]</code>: Generic levels |
|||
⚫ | |||
⚫ | |||
== World state flags == |
== World state flags == |
||
The current state of the world is defined by the FWS enum, which has the following possible values: |
The current state of the world is defined by the FWS enum, which has the following possible values: |
||
{| class="wikitable" |
|||
|FWS_Visited |
|||
{{todo|Add the enum values}} |
|||
|0x1 |
|||
|- |
|||
⚫ | |||
|FWS_Lock_0 |
|||
⚫ | |||
|0x2 |
|||
|- |
|||
⚫ | |||
|FWS_Lock_1 |
|||
⚫ | |||
|0x4 |
|||
⚫ | |||
|- |
|||
* 2-8: Generic levels |
|||
|FWS_Lock_2 |
|||
⚫ | |||
|0x8 |
|||
|- |
|||
⚫ | |||
|FWS_Lock_3 |
|||
|0x10 |
|||
|- |
|||
|GRFWS_Lock_All |
|||
|0x1e |
|||
|} |
|||
[[Category:Game mechanics]] |
[[Category:Game mechanics]] |
||
[[Category:Game mechanics in Sly 1]] |
[[Category:Game mechanics in Sly 1]] |
Revision as of 04:43, 12 July 2022
WS (World State) is a data structure in Sly 1. It stores an array of Level States, one for each level in the world.
Structure
The WS struct is declared as follows:
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 */
};
Level states array
Each WS
stores an array of 9 LS
structs, called als
, even if the world has fewer than 9 levels (such as Worlds 0 and 5). In the case of an unused level, the corresponding level state is blank and ignored.
The level states are always aligned in the als
array so the indices are as follows:
als[0]
: Intro levelals[1]
: Hub levelals[2]
-als[7]
: Generic levelsals[8]
: Boss fight
Because World 5 has no hub level and fewer than 6 generic levels, it is the only gameworld with gaps between levels in the als
array.
World state flags
The current state of the world is defined by the FWS enum, which has the following possible values:
FWS_Visited | 0x1 |
FWS_Lock_0 | 0x2 |
FWS_Lock_1 | 0x4 |
FWS_Lock_2 | 0x8 |
FWS_Lock_3 | 0x10 |
GRFWS_Lock_All | 0x1e |