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/2PVS/ZoneButton.txt
1478 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Zone Button 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.propertyValue : object.zoneID
13
14
private alias object.value1 : object.zoneDetailsWidth
15
private alias object.value2 : object.disabled
16
private alias object.value3 : object.zoneIconFrame
17
private alias object.value4 : object.detailsFrameL
18
private alias object.value5 : object.detailsFrameM
19
private alias object.value6 : object.detailsFrameR
20
private alias object.value7 : object.zoneTextFrame
21
private alias object.value8 : object.buttonID
22
23
private alias 0 : ZONEBUTTON_SETUP
24
private alias 1 : ZONEBUTTON_ACTIVE
25
private alias 2 : ZONEBUTTON_NONE
26
27
// 2P VS Menu 3 Aliases
28
private alias 3 : 2PVSMENU3_SELECTING
29
30
// StageMenu aliases
31
private alias object.value3 : stageMenu.selectedIcon
32
private alias object.value4 : stageMenu.zoneTimer
33
34
private alias 4 : STAGEMENU_EXITZONES
35
36
37
// ========================
38
// Events
39
// ========================
40
41
event ObjectUpdate
42
switch object.state
43
case ZONEBUTTON_SETUP
44
object.zoneIconFrame = object.zoneID
45
object.zoneIconFrame += 7
46
object.zoneTextFrame = object.zoneID
47
object.zoneTextFrame += 20
48
49
object.inkEffect = INK_ALPHA
50
object.zoneDetailsWidth = 64
51
object.buttonID = object.entityPos
52
object.buttonID -= 9
53
54
if object[1].type == TypeName[2P VS Menu 3]
55
if object[1].state == 2PVSMENU3_SELECTING
56
object.alpha = 0x100
57
else
58
object.alpha = 0x80
59
end if
60
GetBit(object.disabled, vs.stageMask, object.zoneID)
61
else
62
object.alpha = 0x100
63
64
if object.zoneID == 13 // if we're HPZ zone icon button
65
if saveRAM[46] == false // and it's not unlocked
66
// we're disabled! sorry!
67
object.disabled = true
68
end if
69
end if
70
end if
71
72
object.state = ZONEBUTTON_ACTIVE
73
break
74
75
case ZONEBUTTON_ACTIVE
76
if options.physicalControls == false
77
CheckTouchRect(0, 0, screen.xsize, screen.ysize)
78
if checkResult > -1
79
temp0 = screen.xcenter
80
temp0 += object.xpos
81
temp0 -= 32
82
temp1 = temp0
83
temp1 += 64
84
temp2 = object.ypos
85
temp2 += 148
86
temp2 -= 28
87
temp3 = temp2
88
temp3 += 56
89
CheckTouchRect(temp0, temp2, temp1, temp3)
90
if checkResult > -1
91
stageMenu[1].selectedIcon = object.buttonID
92
end if
93
end if
94
end if
95
break
96
97
case ZONEBUTTON_NONE
98
break
99
100
end switch
101
end event
102
103
104
event ObjectDraw
105
if stageMenu[1].selectedIcon == object.buttonID
106
temp0 = stageMenu[1].zoneTimer
107
temp0 >>= 1
108
temp0 &= 1
109
if object[1].state < STAGEMENU_EXITZONES
110
temp0 = true
111
end if
112
else
113
temp0 = false
114
end if
115
116
if temp0 == true
117
object.detailsFrameL = 3
118
object.detailsFrameM = 4
119
object.detailsFrameR = 5
120
temp3 = 200
121
else
122
object.detailsFrameL = 0
123
object.detailsFrameM = 1
124
object.detailsFrameR = 2
125
temp3 = 151
126
end if
127
128
temp0 = object.zoneDetailsWidth
129
temp0 >>= 1
130
temp0 -= 4
131
FlipSign(temp0)
132
temp0 += object.xpos
133
temp0 += screen.xcenter
134
temp1 = object.ypos
135
temp1 += 148
136
DrawSpriteScreenFX(object.detailsFrameL, FX_INK, temp0, temp1)
137
138
temp2 = object.zoneDetailsWidth
139
temp2 -= 8
140
EditFrame(object.detailsFrameM, 0, -24, temp2, 48, 5, temp3)
141
DrawSpriteScreenFX(object.detailsFrameM, FX_INK, temp0, temp1)
142
143
temp0 += 7
144
if object.disabled == false
145
DrawSpriteScreenFX(6, FX_INK, temp0, temp1)
146
DrawSpriteScreenFX(object.zoneIconFrame, FX_INK, temp0, temp1)
147
else
148
DrawSpriteScreenFX(7, FX_INK, temp0, temp1)
149
end if
150
151
temp0--
152
temp0 += object.zoneDetailsWidth
153
temp0 -= 14
154
DrawSpriteScreenFX(object.detailsFrameR, FX_INK, temp0, temp1)
155
if object.zoneDetailsWidth == 224
156
temp0 -= object.zoneDetailsWidth
157
temp0 += 60
158
DrawSpriteScreenFX(object.zoneTextFrame, FX_INK, temp0, temp1)
159
end if
160
end event
161
162
163
event ObjectStartup
164
LoadSpriteSheet("LevelSelect/Icons.gif")
165
SpriteFrame(-4, -24, 4, 48, 1, 151) // Details Border L Unhighlighted - #0
166
SpriteFrame(0, -24, 40, 48, 5, 151) // Details Border M Unhighlighted - #1
167
SpriteFrame(0, -24, 4, 48, 221, 151) // Details Border R Unhighlighted - #2
168
169
SpriteFrame(-4, -24, 4, 48, 1, 200) // Details Border L Highlighted - #3
170
SpriteFrame(0, -24, 40, 48, 5, 200) // Details Border M Highlighted - #4
171
SpriteFrame(0, -24, 4, 48, 221, 200) // Details Border R Highlighted - #5
172
173
SpriteFrame(0, -17, 42, 34, 164, 314) // Blank Icon - #6
174
SpriteFrame(0, -17, 42, 34, 54, 50) // Red X Icon - #7
175
176
SpriteFrame(4, -13, 32, 24, 1, 85) // EHZ Icon - #8
177
SpriteFrame(4, -13, 32, 24, 34, 85) // CPZ Icon - #9
178
SpriteFrame(4, -13, 32, 24, 67, 85) // ARZ Icon - #10
179
SpriteFrame(4, -13, 32, 24, 100, 85) // CNZ Icon - #11
180
SpriteFrame(4, -13, 32, 24, 133, 85) // HTZ Icon - #12
181
SpriteFrame(4, -13, 32, 24, 166, 85) // MCZ Icon - #13
182
SpriteFrame(4, -13, 32, 24, 180, 1) // OOZ Icon - #14
183
SpriteFrame(4, -13, 32, 24, 213, 51) // Special Stage Icon - #15
184
SpriteFrame(4, -13, 32, 24, 213, 1) // MPZ Icon - #16
185
SpriteFrame(4, -13, 32, 24, 180, 26) // SCZ Icon - #17
186
SpriteFrame(4, -13, 32, 24, 213, 26) // WFZ Icon - #18
187
SpriteFrame(4, -13, 32, 24, 180, 51) // DEZ Icon - #19
188
SpriteFrame(4, -13, 32, 24, 199, 85) // HPZ Icon - #20
189
190
SpriteFrame(4, -3, 136, 7, 103, 350) // EHZ Text - #21
191
SpriteFrame(4, -3, 152, 7, 103, 358) // CPZ Text - #22
192
SpriteFrame(4, -3, 136, 7, 103, 366) // ARZ Text - #23
193
SpriteFrame(4, -3, 136, 7, 103, 374) // CNZ Text - #24
194
SpriteFrame(4, -3, 104, 7, 103, 382) // HTZ Text - #25
195
SpriteFrame(4, -3, 128, 7, 103, 390) // MCZ Text - #26
196
SpriteFrame(4, -3, 112, 7, 103, 398) // OOZ Text - #27
197
SpriteFrame(4, -3, 104, 7, 103, 406) // Special Stage Text - #28
198
SpriteFrame(4, -3, 120, 7, 103, 470) // MPZ Text - #29
199
SpriteFrame(4, -3, 112, 7, 103, 478) // SCZ Text - #30
200
SpriteFrame(4, -3, 144, 7, 103, 486) // WFZ Text - #31
201
SpriteFrame(4, -3, 112, 7, 103, 494) // DEZ Text - #32
202
SpriteFrame(4, -3, 144, 7, 103, 502) // HPZ Text - #33
203
end event
204
205
206
// ========================
207
// Editor Events
208
// ========================
209
210
event RSDKDraw
211
DrawSprite(0)
212
end event
213
214
215
event RSDKLoad
216
LoadSpriteSheet("LevelSelect/Icons.gif")
217
SpriteFrame(4, -13, 32, 24, 1, 85) // EHZ Icon
218
219
// Although used by the object, it's not to be set from the editor
220
// Instead, it's set when this object is spawned by a 2PVSMenu3/Stage Menu object
221
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
222
end event
223
224