Path: blob/master/Sonic 1/Scripts/LevelSelect/ZoneButton.txt
1482 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Zone Button Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.propertyValue : object.zoneID1213private alias object.value1 : object.zoneDetailsWidth14private alias object.value2 : object.disabled15private alias object.value3 : object.zoneIconFrame16private alias object.value4 : object.detailsFrameL17private alias object.value5 : object.detailsFrameM18private alias object.value6 : object.detailsFrameR19private alias object.value7 : object.zoneTextFrame20private alias object.value8 : object.buttonID2122private alias 0 : ZONEBUTTON_SETUP23private alias 1 : ZONEBUTTON_ACTIVE24private alias 2 : ZONEBUTTON_NONE2526// StageMenu aliases27private alias object.value3 : stageMenu.selectedIcon28private alias object.value4 : stageMenu.zoneTimer2930private alias 4 : STAGEMENU_EXITZONES313233// ========================34// Events35// ========================3637event ObjectUpdate38switch object.state39case ZONEBUTTON_SETUP40object.zoneIconFrame = object.zoneID41object.zoneIconFrame += 742object.zoneTextFrame = object.zoneID43object.zoneTextFrame += 1444object.inkEffect = INK_ALPHA45object.zoneDetailsWidth = 6446object.buttonID = object.entityPos47object.buttonID -= 948object.alpha = 25649object.state = ZONEBUTTON_ACTIVE50break5152case ZONEBUTTON_ACTIVE53if options.physicalControls == false54CheckTouchRect(0, 0, screen.xsize, screen.ysize)55if checkResult > -156// left57temp0 = screen.xcenter58temp0 += object.xpos59temp0 -= 326061// right62temp1 = temp063temp1 += 646465// top66temp2 = object.ypos67temp2 += 14868temp2 -= 286970// bottom71temp3 = temp272temp3 += 567374CheckTouchRect(temp0, temp2, temp1, temp3)75if checkResult > -176stageMenu[1].selectedIcon = object.buttonID77end if78end if79end if80break8182case ZONEBUTTON_NONE83break8485end switch86end event878889event ObjectDraw90if stageMenu[1].selectedIcon == object.buttonID91temp0 = stageMenu[1].zoneTimer92temp0 >>= 193temp0 &= 194if object[1].state < STAGEMENU_EXITZONES95temp0 = true96end if97else98temp0 = false99end if100101if temp0 == true102// Highlighted103object.detailsFrameL = 3104object.detailsFrameM = 4105object.detailsFrameR = 5106temp3 = 159107else108// Unhighlighted109object.detailsFrameL = 0110object.detailsFrameM = 1111object.detailsFrameR = 2112temp3 = 110113end if114115temp0 = object.zoneDetailsWidth116temp0 >>= 1117temp0 -= 4118FlipSign(temp0)119temp0 += object.xpos120temp0 += screen.xcenter121temp1 = object.ypos122temp1 += 148123DrawSpriteScreenFX(object.detailsFrameL, FX_INK, temp0, temp1)124125temp2 = object.zoneDetailsWidth126temp2 -= 8127EditFrame(object.detailsFrameM, 0, -24, temp2, 48, 5, temp3)128DrawSpriteScreenFX(object.detailsFrameM, FX_INK, temp0, temp1)129130temp0 += 7131if object.disabled == false // In S1, stages are never disabled - the functionality is just leftover from copying from S2's version where HPZ and 2PVS stages would need to be disabled sometimes132DrawSpriteScreenFX(6, FX_INK, temp0, temp1)133DrawSpriteScreenFX(object.zoneIconFrame, FX_INK, temp0, temp1)134else135// If disabled, draw a red X136// (Or at least, that's what it was meant to be)137DrawSpriteScreenFX(7, FX_INK, temp0, temp1)138end if139140temp0--141temp0 += object.zoneDetailsWidth142temp0 -= 14143DrawSpriteScreenFX(object.detailsFrameR, FX_INK, temp0, temp1)144if object.zoneDetailsWidth == 224145temp0 -= object.zoneDetailsWidth146temp0 += 60147DrawSpriteScreenFX(object.zoneTextFrame, FX_INK, temp0, temp1)148end if149end event150151152event ObjectStartup153LoadSpriteSheet("LevelSelect/Icons.gif")154SpriteFrame(-4, -24, 4, 48, 1, 110) // Details Border L Unhighlighted - #0155SpriteFrame(0, -24, 40, 48, 5, 110) // Details Border M Unhighlighted - #1156SpriteFrame(0, -24, 4, 48, 221, 110) // Details Border R Unhighlighted - #2157158SpriteFrame(-4, -24, 4, 48, 1, 159) // Details Border L Highlighted - #3159SpriteFrame(0, -24, 40, 48, 5, 159) // Details Border M Highlighted - #4160SpriteFrame(0, -24, 4, 48, 221, 159) // Details Border R Highlighted - #5161162SpriteFrame(0, -17, 42, 34, 180, 1) // Blank Icon - #6163SpriteFrame(0, -17, 42, 34, 180, 1) // Blank Icon Again (Was Red X in S2) - #7164165SpriteFrame(4, -13, 32, 24, 1, 85) // GHZ Icon - #8166SpriteFrame(4, -13, 32, 24, 34, 85) // MZ Icon - #9167SpriteFrame(4, -13, 32, 24, 67, 85) // SYZ Icon - #10168SpriteFrame(4, -13, 32, 24, 100, 85) // LZ Icon - #11169SpriteFrame(4, -13, 32, 24, 133, 85) // SLZ Icon - #12170SpriteFrame(4, -13, 32, 24, 166, 85) // SBZ Icon - #13171SpriteFrame(4, -13, 32, 24, 199, 85) // FZ Icon - #14172173SpriteFrame(4, -3, 120, 7, 1, 223) // GHZ Text - #15174SpriteFrame(4, -3, 88, 7, 122, 223) // MZ Text - #16175SpriteFrame(4, -3, 128, 7, 1, 231) // SYZ Text - #17176SpriteFrame(4, -3, 112, 7, 130, 231) // LZ Text - #18177SpriteFrame(4, -3, 120, 7, 1, 239) // SLZ Text - #19178SpriteFrame(4, -3, 128, 7, 122, 239) // SBZ Text - #20179SpriteFrame(4, -3, 80, 7, 1, 247) // FZ Text - #21180end event181182183// ========================184// Editor Events185// ========================186187event RSDKDraw188DrawSprite(8)189end event190191192event RSDKLoad193LoadSpriteSheet("LevelSelect/Icons.gif")194SpriteFrame(4, -13, 32, 24, 1, 85) // GHZ Icon195196// Although used by the object, it's not to be set from the editor197// Instead, it's set when this object is spawned by a Stage Menu object198SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")199end event200201202