Path: blob/master/Sonic 2/Scripts/MPZ/ButtonBridge.txt
1478 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Button Bridge Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.drawPos.x1314// States15private alias 0 : BUTTONBRIDGE_HIDDEN16private alias 1 : BUTTONBRIDGE_SHOWING17private alias 2 : BUTTONBRIDGE_SHOWN18private alias 3 : BUTTONBRIDGE_HIDING1920// Player Aliases21private alias object.state : player.state22private alias object.xpos : player.xpos23private alias object.animation : player.animation2425private alias object.value1 : player.timer26private alias object.value17 : debugMode.currentSelection2728// PushButton Aliases29private alias object.value0 : pushButton.pressed303132// ========================33// Function Declarations34// ========================3536reserve function ButtonBridge_Setup37reserve function ButtonBridge_DebugDraw38reserve function ButtonBridge_DebugSpawn394041// ========================42// Static Values43// ========================4445private value ButtonBridge_startDebugID = 0464748// ========================49// Function Defintions50// ========================5152private function ButtonBridge_Setup53object[arrayPos0].priority = PRIORITY_ACTIVE54object[arrayPos0].timer = 6455object[arrayPos0].drawPos.x = object[arrayPos0].xpos56if object[arrayPos0].direction == FLIP_NONE57object[arrayPos0].drawPos.x -= 0x4C000058else59object[arrayPos0].drawPos.x += 0x4C000060end if6162if object[arrayPos0].propertyValue == 163if object[arrayPos0].direction == FLIP_NONE64object[arrayPos0].xpos -= 0x80000065else66object[arrayPos0].xpos += 0x80000067end if68end if69end function707172private function ButtonBridge_DebugDraw73temp0 = debugMode[0].currentSelection74temp0 -= ButtonBridge_startDebugID7576temp1 = object.xpos77if object.direction == FLIP_NONE78temp1 -= 0x4C000079else80temp1 += 0x4C000081end if82DrawSpriteXY(0, temp1, object.ypos)8384temp1 = object.xpos85if temp0 == 186if object.direction == FLIP_NONE87temp1 -= 0x80000088else89temp1 += 0x80000090end if91end if92DrawSpriteXY(4, temp1, object.ypos)93end function949596private function ButtonBridge_DebugSpawn97temp0 = debugMode[0].currentSelection98temp0 -= ButtonBridge_startDebugID99CreateTempObject(TypeName[Button Bridge], temp0, object.xpos, object.ypos)100object[tempObjectPos].direction = object.direction101arrayPos0 = object[tempObjectPos].entityPos102CallFunction(ButtonBridge_Setup)103end function104105106// ========================107// Events108// ========================109110event ObjectUpdate111switch object.state112case BUTTONBRIDGE_HIDDEN113if pushButton[+1].pressed == true114if object.propertyValue == 0115object.state = BUTTONBRIDGE_SHOWING116else117object.state = BUTTONBRIDGE_HIDING118end if119end if120121foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)122BoxCollisionTest(C_SOLID, object.entityPos, -64, -12, 64, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)123next124break125126case BUTTONBRIDGE_SHOWING127temp0 = object.xpos128temp0 &= 0xFFFF0000129if object.direction == FLIP_NONE130object.xpos -= 0x20000131object.frame++132else133object.xpos += 0x20000134object.frame--135end if136137object.frame &= 3138139object.timer--140if object.timer <= 0141if object.propertyValue == 0142object.state = BUTTONBRIDGE_SHOWN143else144object.state = BUTTONBRIDGE_HIDDEN145object.timer = 64146end if147end if148149temp1 = object.xpos150temp1 &= 0xFFFF0000151temp1 -= temp0152temp2 = object.xpos153154object.xpos = temp0155foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)156BoxCollisionTest(C_SOLID, object.entityPos, -64, -12, 64, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)157switch checkResult158case COL_TOP159player[currentPlayer].xpos += temp1160break161162case COL_LEFT163case COL_RIGHT164if player[currentPlayer].state == Player_State_Climb165player[currentPlayer].timer = 0166player[currentPlayer].animation = ANI_GLIDING_DROP167player[currentPlayer].state = Player_State_GlideDrop168end if169break170end switch171next172object.xpos = temp2173break174175case BUTTONBRIDGE_SHOWN176object.timer++177if object.timer == 180178object.timer = 0179if object.propertyValue == 0180object.state = BUTTONBRIDGE_HIDING181else182object.state = BUTTONBRIDGE_SHOWING183end if184object.timer = 64185end if186187foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)188BoxCollisionTest(C_SOLID, object.entityPos, -64, -12, 64, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)189next190break191192case BUTTONBRIDGE_HIDING193temp0 = object.xpos194temp0 &= 0xFFFF0000195if object.direction == FLIP_NONE196object.xpos += 0x20000197object.frame--198else199object.xpos -= 0x20000200object.frame++201end if202object.frame &= 3203204object.timer--205if object.timer <= 0206if object.propertyValue == 0207object.state = BUTTONBRIDGE_HIDDEN208object.timer = 64209else210object.state = BUTTONBRIDGE_SHOWN211end if212end if213214temp1 = object.xpos215temp1 &= 0xFFFF0000216temp1 -= temp0217temp2 = object.xpos218219object.xpos = temp0220foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)221BoxCollisionTest(C_SOLID, object.entityPos, -64, -12, 64, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)222switch checkResult223case COL_TOP224player[currentPlayer].xpos += temp1225break226227case COL_LEFT228case COL_RIGHT229if player[currentPlayer].state == Player_State_Climb230player[currentPlayer].timer = 0231player[currentPlayer].animation = ANI_GLIDING_DROP232player[currentPlayer].state = Player_State_GlideDrop233end if234break235end switch236next237238object.xpos = temp2239break240241end switch242end event243244245event ObjectDraw246DrawSpriteXY(object.frame, object.drawPos.x, object.ypos)247DrawSprite(4)248end event249250251event ObjectStartup252LoadSpriteSheet("MPZ/Objects.gif")253SpriteFrame(-12, 8, 24, 24, 133, 126)254SpriteFrame(-12, 8, 24, 24, 158, 126)255SpriteFrame(-12, 8, 24, 24, 158, 126)256SpriteFrame(-12, 8, 24, 24, 183, 126)257SpriteFrame(-64, -12, 128, 24, 350, 182)258259foreach (TypeName[Button Bridge], arrayPos0, ALL_ENTITIES)260CallFunction(ButtonBridge_Setup)261next262263temp0 = 0264ButtonBridge_startDebugID = DebugMode_ObjCount265while temp0 < 2266SetTableValue(TypeName[Button Bridge], DebugMode_ObjCount, DebugMode_TypesTable)267SetTableValue(ButtonBridge_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)268SetTableValue(ButtonBridge_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)269DebugMode_ObjCount++270temp0++271loop272end event273274275// ========================276// Editor Events277// ========================278279event RSDKEdit280if editor.returnVariable == true281switch editor.variableID282case EDIT_VAR_PROPVAL // property value283checkResult = object.propertyValue284break285286case 0 // type287checkResult = object.propertyValue288break289290end switch291else292switch editor.variableID293case EDIT_VAR_PROPVAL // property value294object.propertyValue = editor.variableValue295break296297case 0 // type298object.propertyValue = editor.variableValue299break300301end switch302end if303end event304305306event RSDKDraw307temp1 = object.xpos308if object.direction == FLIP_NONE309temp1 -= 0x4C0000310else311temp1 += 0x4C0000312end if313DrawSpriteXY(0, temp1, object.ypos)314315temp1 = object.xpos316if object.propertyValue == 1317if object.direction == FLIP_NONE318temp1 -= 0x800000319else320temp1 += 0x800000321end if322end if323DrawSpriteXY(1, temp1, object.ypos)324end event325326327event RSDKLoad328LoadSpriteSheet("MPZ/Objects.gif")329SpriteFrame(-12, 8, 24, 24, 133, 126)330SpriteFrame(-64, -12, 128, 24, 350, 182)331332AddEditorVariable("type")333SetActiveVariable("type")334AddEnumVariable("Show On Activate", 0)335AddEnumVariable("Hide On Activate", 1)336337// Direction is to be set from editor338end event339340341