Path: blob/master/Sonic 2/Scripts/CPZ/RotatePlatform.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Rotate Platform Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.centerPos.x12private alias object.value1 : object.centerPos.y13private alias object.value2 : object.drawPos.x14private alias object.value3 : object.drawPos.y15private alias object.value4 : object.hitboxL16private alias object.value5 : object.hitboxR17private alias object.value6 : object.stoodPlayers1819// Player Aliases20private alias object.xpos : player.xpos21private alias object.ypos : player.ypos2223private alias object.value17 : debugMode.currentSelection242526// ========================27// Function Declarations28// ========================2930reserve function RotatePlatform_DebugDraw31reserve function RotatePlatform_DebugSpawn323334// ========================35// Static Values36// ========================3738private value RotatePlatform_startDebugID = 0394041// ========================42// Function Definitions43// ========================4445private function RotatePlatform_DebugDraw46temp0 = debugMode[0].currentSelection47temp0 -= RotatePlatform_startDebugID48temp0 >>= 249DrawSprite(temp0)50end function515253private function RotatePlatform_DebugSpawn54temp0 = debugMode[0].currentSelection55temp0 -= RotatePlatform_startDebugID56temp2 = temp057temp0 &= 358temp2 >>= 259temp0 <<= 460temp1 = object.direction61temp1 <<= 662temp0 += temp163CreateTempObject(TypeName[Rotate Platform], temp0, object.xpos, object.ypos)6465object[tempObjectPos].centerPos.x = object.xpos66object[tempObjectPos].centerPos.y = object.ypos67object[tempObjectPos].frame = temp268if temp2 == 069object[tempObjectPos].hitboxL = -3270object[tempObjectPos].hitboxR = 3271else72object[tempObjectPos].hitboxL = -2473object[tempObjectPos].hitboxR = 2474end if75end function767778// ========================79// Events80// ========================8182event ObjectUpdate83temp4 = object.drawPos.x84temp5 = object.drawPos.y8586// Fetch MoveX value87GetTableValue(temp0, 28, StageSetup_oscillationTable)88temp0 <<= 889temp0 &= 0xFFFF000090temp0 -= 0x4000009192// Fetch MoveY value93GetTableValue(temp1, 30, StageSetup_oscillationTable)94temp1 <<= 895temp1 &= 0xFFFF000096temp1 -= 0x4000009798GetBit(temp2, object.propertyValue, 5) // flipMoveXY bit99if temp2 == true100FlipSign(temp0)101FlipSign(temp1)102end if103104GetBit(temp2, object.propertyValue, 6) // flipMoveX bit105if temp2 == true106FlipSign(temp0)107end if108109GetBit(temp2, object.propertyValue, 4) // flipMoveY bit110if temp2 == false111object.drawPos.x = temp0112object.drawPos.y = temp1113else114FlipSign(temp0)115object.drawPos.x = temp1116object.drawPos.y = temp0117end if118119object.drawPos.x += object.centerPos.x120object.drawPos.y += object.centerPos.y121122temp6 = object.drawPos.x123temp6 -= temp4124temp7 = object.drawPos.y125temp7 -= temp5126object.xpos = object.drawPos.x127object.ypos = object.drawPos.y128129temp2 = 0130foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)131GetBit(temp0, object.stoodPlayers, temp2)132if temp0 == true133player[currentPlayer].xpos += temp6134player[currentPlayer].ypos += temp7135end if136137SetBit(object.stoodPlayers, temp2, false)138BoxCollisionTest(C_PLATFORM, object.entityPos, object.hitboxL, -16, object.hitboxR, 0, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)139if checkResult == true140SetBit(object.stoodPlayers, temp2, true)141end if142143temp2++144next145146object.xpos = object.centerPos.x147object.ypos = object.centerPos.y148end event149150151event ObjectDraw152DrawSpriteXY(object.frame, object.drawPos.x, object.drawPos.y)153end event154155156event ObjectStartup157LoadSpriteSheet("CPZ/Objects.gif")158SpriteFrame(-32, -16, 64, 27, 136, 155)159SpriteFrame(-24, -16, 48, 26, 136, 183)160161foreach (TypeName[Rotate Platform], arrayPos0, ALL_ENTITIES)162object[arrayPos0].centerPos.x = object[arrayPos0].xpos163object[arrayPos0].centerPos.y = object[arrayPos0].ypos164object[arrayPos0].frame = object[arrayPos0].propertyValue165object[arrayPos0].frame &= 15166if object[arrayPos0].frame == 0167object[arrayPos0].hitboxL = -32168object[arrayPos0].hitboxR = 32169else170object[arrayPos0].hitboxL = -24171object[arrayPos0].hitboxR = 24172end if173next174175temp0 = 0176RotatePlatform_startDebugID = DebugMode_ObjCount177while temp0 < 8178SetTableValue(TypeName[Rotate Platform], DebugMode_ObjCount, DebugMode_TypesTable)179SetTableValue(RotatePlatform_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)180SetTableValue(RotatePlatform_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)181DebugMode_ObjCount++182temp0++183loop184end event185186187// ========================188// Editor Events189// ========================190191event RSDKEdit192if editor.returnVariable == true193switch editor.variableID194case EDIT_VAR_PROPVAL // property value195checkResult = object.propertyValue196break197198case 0 // frameID199GetBit(checkResult, object.propertyValue, 0)200break201202case 1 // flipMoveX203GetBit(checkResult, object.propertyValue, 6)204break205206case 2 // flipMoveY207GetBit(checkResult, object.propertyValue, 4)208break209210case 3 // flipMoveXY211GetBit(checkResult, object.propertyValue, 5)212break213214end switch215else216switch editor.variableID217case EDIT_VAR_PROPVAL // property value218object.propertyValue = editor.variableValue219break220221case 0 // frameID222CheckNotEqual(editor.variableValue, 0)223SetBit(object.propertyValue, 0, checkResult)224break225226case 1 // flipMoveX227CheckNotEqual(editor.variableValue, 0)228SetBit(object.propertyValue, 6, checkResult)229break230231case 2 // flipMoveY232CheckNotEqual(editor.variableValue, 0)233SetBit(object.propertyValue, 4, checkResult)234break235236case 3 // flipMoveXY237CheckNotEqual(editor.variableValue, 0)238SetBit(object.propertyValue, 5, checkResult)239break240241end switch242end if243end event244245246event RSDKDraw247temp0 = object.propertyValue248temp0 &= 15249DrawSprite(temp0)250end event251252253event RSDKLoad254LoadSpriteSheet("CPZ/Objects.gif")255SpriteFrame(-32, -16, 64, 27, 136, 155)256SpriteFrame(-24, -16, 48, 26, 136, 183)257258AddEditorVariable("frameID")259SetActiveVariable("frameID")260AddEnumVariable("Large", 0)261AddEnumVariable("Small", 1)262263AddEditorVariable("flipMoveX")264SetActiveVariable("flipMoveX")265AddEnumVariable("false", false)266AddEnumVariable("true", true)267268AddEditorVariable("flipMoveY")269SetActiveVariable("flipMoveY")270AddEnumVariable("false", false)271AddEnumVariable("true", true)272273AddEditorVariable("flipMoveXY")274SetActiveVariable("flipMoveXY")275AddEnumVariable("false", false)276AddEnumVariable("true", true)277end event278279280