Path: blob/master/Sonic 1/Scripts/SBZ/SpinPlatform.txt
1481 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Spin Platform 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.duration13private alias object.value2 : object.interval1415// Player Aliases16private alias object.value17 : debugMode.currentSelection171819// ========================20// Function Declarations21// ========================2223reserve function SpinPlatform_DebugDraw24reserve function SpinPlatform_DebugSpawn252627// ========================28// Static Values29// ========================3031private value SpinPlatform_startDebugID = 0323334// ========================35// Tables36// ========================3738private table SpinPlatform_frameTable390, 1, 2, 3, 4, 3, 2, 140end table4142private table SpinPlatform_directionTable430, 0, 0, 0440, 2, 2, 2452, 3, 3, 3463, 1, 1, 147end table484950// ========================51// Function Definitions52// ========================5354private function SpinPlatform_DebugDraw55DrawSprite(0)56end function575859private function SpinPlatform_DebugSpawn60CreateTempObject(TypeName[Spin Platform], 0, object.xpos, object.ypos)61object[tempObjectPos].interval = debugMode[0].currentSelection62object[tempObjectPos].interval -= SpinPlatform_startDebugID63object[tempObjectPos].interval <<= 464object[tempObjectPos].interval += 1665object[tempObjectPos].interval <<= 266object[tempObjectPos].interval--67object[tempObjectPos].drawOrder = 468end function697071// ========================72// Events73// ========================7475event ObjectUpdate76temp0 = SBZSetup_platformTimer77temp0 &= object.interval78if temp0 == 079object.state = 180object.priority = PRIORITY_ACTIVE81end if8283temp0 = false84if object.state != 085object.timer--86if object.timer < 087temp0 = true88object.timer = object.duration89object.state = 090end if91end if9293if object.rotation != 094object.rotation++95object.rotation &= 3196else97if temp0 != false98object.rotation++99end if100end if101102temp0 = object.rotation103temp0 >>= 1104GetTableValue(object.direction, temp0, SpinPlatform_directionTable)105temp0 &= 7106GetTableValue(object.frame, temp0, SpinPlatform_frameTable)107108if object.rotation == 0109foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)110BoxCollisionTest(C_SOLID, object.entityPos, -16, -7, 16, 7, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)111next112end if113end event114115116event ObjectDraw117DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)118end event119120121event ObjectStartup122LoadSpriteSheet("SBZ/Objects.gif")123SpriteFrame(-16, -7, 32, 14, 413, 166)124SpriteFrame(-16, -12, 32, 25, 446, 169)125SpriteFrame(-15, -15, 30, 30, 480, 166)126SpriteFrame(-13, -16, 25, 32, 449, 198)127SpriteFrame(-7, -16, 14, 32, 480, 198)128129foreach (TypeName[Spin Platform], arrayPos0, ALL_ENTITIES)130object[arrayPos0].priority = PRIORITY_XBOUNDS131object[arrayPos0].drawOrder = 4132133object[arrayPos0].duration = object[arrayPos0].propertyValue134object[arrayPos0].duration &= 0x0F135object[arrayPos0].duration *= 6136object[arrayPos0].timer = object[arrayPos0].duration137138object[arrayPos0].interval = object[arrayPos0].propertyValue139object[arrayPos0].interval &= 0x70140object[arrayPos0].interval += 16141object[arrayPos0].interval <<= 2142object[arrayPos0].interval--143next144145temp0 = 0146SpinPlatform_startDebugID = DebugMode_ObjCount147while temp0 < 8148SetTableValue(TypeName[Spin Platform], DebugMode_ObjCount, DebugMode_TypesTable)149SetTableValue(SpinPlatform_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)150SetTableValue(SpinPlatform_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)151DebugMode_ObjCount++152temp0++153loop154end event155156157// ========================158// Editor Events159// ========================160161event RSDKEdit162if editor.returnVariable == true163switch editor.variableID164case EDIT_VAR_PROPVAL // property value165checkResult = object.propertyValue166break167168case 0 // duration169checkResult = object.propertyValue170checkResult &= 0x0F171break172173case 1 // interval174checkResult = object.propertyValue175checkResult &= 0x70176checkResult >>= 4177break178179end switch180else181switch editor.variableID182case EDIT_VAR_PROPVAL // property value183object.propertyValue = editor.variableValue184break185186case 0 // duration187editor.variableValue &= 0x0F188189object.propertyValue &= 0xF0190object.propertyValue |= editor.variableValue191break192193case 1 // interval194editor.variableValue &= 7195editor.variableValue <<= 4196197object.propertyValue &= 0x0F198object.propertyValue |= temp0199break200201end switch202end if203end event204205206event RSDKDraw207DrawSprite(0)208end event209210211event RSDKLoad212LoadSpriteSheet("SBZ/Objects.gif")213SpriteFrame(-16, -7, 32, 14, 413, 166)214SpriteFrame(-16, -12, 32, 25, 446, 169)215SpriteFrame(-15, -15, 30, 30, 480, 166)216SpriteFrame(-13, -16, 25, 32, 449, 198)217SpriteFrame(-7, -16, 14, 32, 480, 198)218219AddEditorVariable("duration")220SetActiveVariable("duration")221AddEnumVariable("Every Frame", 0)222AddEnumVariable("Every 6 Frames", 1)223AddEnumVariable("Every 12 Frames", 2)224AddEnumVariable("Every 18 Frames", 3)225AddEnumVariable("Every 24 Frames", 4)226AddEnumVariable("Every 30 Frames", 5)227AddEnumVariable("Every 36 Frames", 6)228AddEnumVariable("Every 42 Frames", 7)229AddEnumVariable("Every 48 Frames", 8)230AddEnumVariable("Every 54 Frames", 9)231AddEnumVariable("Every 60 Frames", 10)232AddEnumVariable("Every 66 Frames", 11)233AddEnumVariable("Every 72 Frames", 12)234AddEnumVariable("Every 78 Frames", 13)235AddEnumVariable("Every 84 Frames", 14)236AddEnumVariable("Every 90 Frames", 15)237238AddEditorVariable("interval")239SetActiveVariable("interval")240AddEnumVariable("Every 64 Frames", 0)241AddEnumVariable("Every 128 Frames", 1)242AddEnumVariable("Every 192 Frames", 2)243AddEnumVariable("Every 256 Frames", 3)244AddEnumVariable("Every 320 Frames", 4)245AddEnumVariable("Every 384 Frames", 5)246AddEnumVariable("Every 448 Frames", 6)247AddEnumVariable("Every 512 Frames", 7)248end event249250251