Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 2/Scripts/Special/HUD.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: HUD Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// ========================
9
// Aliases
10
// ========================
11
12
private alias object.value1 : object.totalRings
13
private alias object.value2 : object.drawPos.x
14
private alias object.value3 : object.character
15
16
// Player Aliases
17
private alias object.value0 : player.rings
18
private alias object.value19 : player.vsCheckpointID
19
20
21
// ========================
22
// Function Declarations
23
// ========================
24
25
reserve function HUD_GetCharacterFrame
26
reserve function HUD_DrawRingCount
27
28
29
// ========================
30
// Function Definitions
31
// ========================
32
33
private function HUD_GetCharacterFrame
34
#platform: USE_ORIGINS
35
// Introduced in Origins Plus
36
if object.character != PLAYER_AMY
37
object.frame = object.character
38
object.frame += 12
39
else
40
object.frame = 15
41
end if
42
#endplatform
43
end function
44
45
46
private function HUD_DrawRingCount
47
DrawSpriteScreenXY(object.frame, object.drawPos.x, 20)
48
object.drawPos.x += 44
49
50
if player[currentPlayer].rings > 99
51
// Draw 3 digits
52
temp1 = player[currentPlayer].rings
53
temp1 /= 100
54
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
55
56
object.drawPos.x += 8
57
temp1 = player[currentPlayer].rings
58
temp1 %= 100
59
temp1 /= 10
60
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
61
62
object.drawPos.x += 8
63
temp1 = player[currentPlayer].rings
64
temp1 %= 10
65
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
66
else
67
if player[currentPlayer].rings > 9
68
// Draw 2 digits
69
temp1 = player[currentPlayer].rings
70
temp1 /= 10
71
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
72
73
object.drawPos.x += 8
74
temp1 = player[currentPlayer].rings
75
temp1 %= 10
76
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
77
else
78
// Only draw a single digit
79
DrawSpriteScreenXY(player[currentPlayer].rings, object.drawPos.x, 29)
80
end if
81
end if
82
end function
83
84
85
// ========================
86
// Events
87
// ========================
88
89
event ObjectDraw
90
if options.vsMode == false
91
#platform: USE_ORIGINS
92
currentPlayer = 2
93
object.drawPos.x = screen.xcenter
94
object.character = stage.playerListPos
95
CallFunction(HUD_GetCharacterFrame)
96
#endplatform
97
98
if stage.player2Enabled == false
99
#platform: USE_STANDALONE
100
currentPlayer = 2
101
object.drawPos.x = screen.xcenter
102
object.drawPos.x -= 24
103
object.frame = stage.playerListPos
104
object.frame += 10
105
CallFunction(HUD_DrawRingCount)
106
#endplatform
107
#platform: USE_ORIGINS
108
object.drawPos.x -= 24
109
CallFunction(HUD_DrawRingCount)
110
#endplatform
111
else
112
#platform: USE_STANDALONE
113
currentPlayer = 2
114
object.drawPos.x = screen.xcenter
115
object.drawPos.x -= 104
116
object.frame = stage.playerListPos
117
object.frame += 10
118
CallFunction(HUD_DrawRingCount)
119
#endplatform
120
#platform: USE_ORIGINS
121
object.drawPos.x -= 104
122
CallFunction(HUD_DrawRingCount)
123
#endplatform
124
125
currentPlayer = 3
126
object.drawPos.x = screen.xcenter
127
object.drawPos.x += 48
128
#platform: USE_STANDALONE
129
object.frame = 11
130
#endplatform
131
#platform: USE_ORIGINS
132
object.frame = 13
133
#endplatform
134
CallFunction(HUD_DrawRingCount)
135
136
object.totalRings = player[2].rings
137
object.totalRings += player[3].rings
138
#platform: USE_STANDALONE
139
DrawSpriteScreenXY(13, screen.xcenter, 21)
140
#endplatform
141
#platform: USE_ORIGINS
142
DrawSpriteScreenXY(10, screen.xcenter, 21)
143
#endplatform
144
145
object.drawPos.x = screen.xcenter
146
if object.totalRings > 99
147
object.drawPos.x -= 12
148
temp1 = object.totalRings
149
temp1 /= 100
150
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
151
152
object.drawPos.x += 8
153
temp1 = object.totalRings
154
temp1 %= 100
155
temp1 /= 10
156
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
157
158
object.drawPos.x += 8
159
temp1 = object.totalRings
160
temp1 %= 10
161
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
162
else
163
if object.totalRings > 9
164
object.drawPos.x -= 8
165
temp1 = object.totalRings
166
temp1 /= 10
167
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
168
169
object.drawPos.x += 8
170
temp1 = object.totalRings
171
temp1 %= 10
172
DrawSpriteScreenXY(temp1, object.drawPos.x, 29)
173
else
174
object.drawPos.x -= 4
175
DrawSpriteScreenXY(object.totalRings, object.drawPos.x, 29)
176
end if
177
end if
178
end if
179
else
180
currentPlayer = 2
181
object.drawPos.x = screen.xcenter
182
object.drawPos.x -= 104
183
#platform: USE_STANDALONE
184
object.frame = stage.playerListPos
185
object.frame += 10
186
#endplatform
187
#platform: USE_ORIGINS
188
object.character = stage.playerListPos
189
CallFunction(HUD_GetCharacterFrame)
190
#endplatform
191
CallFunction(HUD_DrawRingCount)
192
193
temp0 = 0
194
object.drawPos.x = screen.xcenter
195
object.drawPos.x -= 96
196
while temp0 < player[2].vsCheckpointID
197
#platform: USE_STANDALONE
198
DrawSpriteScreenXY(14, object.drawPos.x, 45)
199
#endplatform
200
#platform: USE_ORIGINS
201
DrawSpriteScreenXY(11, object.drawPos.x, 45)
202
#endplatform
203
object.drawPos.x += 16
204
temp0++
205
loop
206
207
currentPlayer = 3
208
object.drawPos.x = screen.xcenter
209
object.drawPos.x += 48
210
#platform: USE_STANDALONE
211
object.frame = vs.player2Type
212
object.frame += 10
213
#endplatform
214
#platform: USE_ORIGINS
215
object.character = vs.player2Type
216
CallFunction(HUD_GetCharacterFrame)
217
#endplatform
218
CallFunction(HUD_DrawRingCount)
219
220
temp0 = 0
221
object.drawPos.x = screen.xcenter
222
object.drawPos.x += 56
223
while temp0 < player[3].vsCheckpointID
224
#platform: USE_STANDALONE
225
DrawSpriteScreenXY(14, object.drawPos.x, 45)
226
#endplatform
227
#platform: USE_ORIGINS
228
DrawSpriteScreenXY(11, object.drawPos.x, 45)
229
#endplatform
230
object.drawPos.x += 16
231
temp0++
232
loop
233
end if
234
end event
235
236
237
event ObjectStartup
238
LoadSpriteSheet("Special/Objects.gif")
239
SpriteFrame(0, 0, 8, 15, 291, 42) // Number 0 - #0/0
240
SpriteFrame(0, 0, 8, 15, 300, 42) // Number 1 - #1/1
241
SpriteFrame(0, 0, 8, 15, 309, 42) // Number 2 - #2/2
242
SpriteFrame(0, 0, 8, 15, 318, 42) // Number 3 - #3/3
243
SpriteFrame(0, 0, 8, 15, 327, 42) // Number 4 - #4/4
244
SpriteFrame(0, 0, 8, 15, 336, 42) // Number 5 - #5/5
245
SpriteFrame(0, 0, 8, 15, 345, 42) // Number 6 - #6/6
246
SpriteFrame(0, 0, 8, 15, 354, 42) // Number 7 - #7/7
247
SpriteFrame(0, 0, 8, 15, 363, 42) // Number 8 - #8/8
248
SpriteFrame(0, 0, 8, 15, 372, 42) // Number 9 - #9/9
249
#platform: USE_STANDALONE
250
SpriteFrame(0, 0, 48, 24, 250, 1) // Sonic Rings - #10/X
251
if options.region == 0
252
SpriteFrame(0, 0, 48, 24, 299, 1) // Tails Rings - #11/X
253
else
254
SpriteFrame(0, 0, 48, 24, 348, 1) // Miles Rings - #11/X
255
end if
256
SpriteFrame(0, 0, 48, 24, 397, 1) // KTE Rings - #12/X
257
#endplatform
258
SpriteFrame(-20, 0, 40, 28, 250, 26) // Total box - #13/10
259
SpriteFrame(-8, 0, 16, 8, 442, 42) // Vs box - #14/11
260
#platform: USE_ORIGINS
261
SpriteFrame(0, 0, 48, 24, 250, 1) // Sonic Rings - #X/12
262
if options.region == 0
263
SpriteFrame(0, 0, 48, 24, 299, 1) // Tails Rings - #X/13
264
else
265
SpriteFrame(0, 0, 48, 24, 348, 1) // Miles Rings - #X/13
266
end if
267
SpriteFrame(0, 0, 48, 24, 397, 1) // KTE Rings - #X/14
268
SpriteFrame(0, 0, 48, 24, 446, 1) // Amy Rings - #X/15
269
#endplatform
270
end event
271
272
273
// ========================
274
// Editor Events
275
// ========================
276
277
event RSDKDraw
278
DrawSprite(0)
279
end event
280
281
282
event RSDKLoad
283
LoadSpriteSheet("Global/Display.gif")
284
SpriteFrame(-16, -16, 32, 32, 1, 143)
285
286
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
287
end event
288
289