// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Snake Platform Object
// Script Author: Christan Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

//-------Aliases-------//
private alias 53 : TYPE_SNAKEPLATFORM

// Function declarations
reserve function SnakePlatform_DebugDraw
reserve function SnakePlatform_DebugSpawn

// Static Values

// Tables
//0x12EE5
private table SnakePlatform_table0
0, 0, 0, 0, -40, 16, -32, 32, -40, 0, -32, 32, -40, -16, -32, 32, -40, -32, -32, 32
end table

function SnakePlatform_DebugDraw
	DrawSprite(16)
end function


function SnakePlatform_DebugSpawn
	CreateTempObject(TypeName[Snake Platform], 0, object.xpos, object.ypos)
end function


event ObjectMain
	temp0 = object.frame	
	if Slots.Power == 0
		object.frame = object.animationTimer
		object.frame >>= 4
		object.animationTimer++
		object.animationTimer &= 255
	end if
	object.value1 = 0
	if object.frame > temp0
		switch temp0
		case 1
		case 2
		case 3
			object.value1 = -0x100000
			break
		case 12
		case 13
		case 14
			object.value1 = 0x100000
			break
		end switch
	end if
	foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
		switch temp0
		case 1
			BoxCollisionTest(C_BOX, object.entityPos, -40, 16, -24, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 2
			BoxCollisionTest(C_BOX, object.entityPos, -40, 0, -24, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 3
			BoxCollisionTest(C_BOX, object.entityPos, -40, -16, -24, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 4
			BoxCollisionTest(C_BOX, object.entityPos, -40, -32, -24, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 5
			BoxCollisionTest(C_BOX, object.entityPos, -40, -32, -24, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			BoxCollisionTest(C_BOX, object.entityPos, -24, -32, -8, -16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 6
			BoxCollisionTest(C_BOX, object.entityPos, -40, -32, -24, 16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			BoxCollisionTest(C_BOX, object.entityPos, -24, -32, 8, -16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 7
			BoxCollisionTest(C_BOX, object.entityPos, -40, -32, -24, 0, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			BoxCollisionTest(C_BOX, object.entityPos, -24, -32, 24, -16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 8
			BoxCollisionTest(C_BOX, object.entityPos, -40, -32, 40, -16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 9
			BoxCollisionTest(C_BOX, object.entityPos, 24, -32, 40, 0, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			BoxCollisionTest(C_BOX, object.entityPos, -24, -32, 24, -16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 10
			BoxCollisionTest(C_BOX, object.entityPos, 24, -32, 40, 16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			BoxCollisionTest(C_BOX, object.entityPos, -8, -32, 24, -16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 11
			BoxCollisionTest(C_BOX, object.entityPos, 24, -32, 40, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			BoxCollisionTest(C_BOX, object.entityPos, 8, -32, 24, -16, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 12
			BoxCollisionTest(C_BOX, object.entityPos, 24, -32, 40, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 13
			BoxCollisionTest(C_BOX, object.entityPos, 24, -16, 40, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 14
			BoxCollisionTest(C_BOX, object.entityPos, 24, 0, 40, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		case 15
			BoxCollisionTest(C_BOX, object.entityPos, 24, 16, 40, 32, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
			break
		end switch
		if checkResult == 1
			object[currentPlayer].ypos += object.value1
		end if
	next
end event


event ObjectDraw
	DrawSprite(object.frame)
end event


event ObjectStartup
	LoadSpriteSheet("CNZ/Objects.gif")
	SpriteFrame(0, 0, 0, 0, 61, 66)
	SpriteFrame(-40, 16, 16, 16, 1, 82)
	SpriteFrame(-40, 0, 16, 32, 1, 66)
	SpriteFrame(-40, -16, 16, 48, 1, 50)
	SpriteFrame(-40, -32, 16, 64, 1, 34)
	SpriteFrame(-40, -32, 32, 64, 1, 34)
	SpriteFrame(-40, -32, 48, 48, 1, 34)
	SpriteFrame(-40, -32, 64, 32, 1, 34)
	SpriteFrame(-40, -32, 80, 16, 1, 34)
	SpriteFrame(-24, -32, 64, 32, 17, 34)
	SpriteFrame(-8, -32, 48, 48, 33, 34)
	SpriteFrame(8, -32, 32, 64, 49, 34)
	SpriteFrame(24, -32, 16, 64, 65, 34)
	SpriteFrame(24, -16, 16, 48, 65, 50)
	SpriteFrame(24, 0, 16, 32, 65, 66)
	SpriteFrame(24, 16, 16, 16, 65, 82)
	SpriteFrame(-40, -32, 80, 64, 1, 34)
	SetTableValue(TypeName[Snake Platform], DebugMode_ObjCount, DebugMode_TypesTable)
	SetTableValue(SnakePlatform_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
	SetTableValue(SnakePlatform_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
	DebugMode_ObjCount++
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 1, 143)
end event
