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

//-------Aliases-------//
private alias 47 : TYPE_VFAN

// Function declarations
reserve function VFan_DebugDraw
reserve function VFan_DebugSpawn

// Static Values

// Tables

function VFan_DebugDraw
	DrawSprite(0)
end function


function VFan_DebugSpawn
	CreateTempObject(TypeName[V Fan], 0, object.xpos, object.ypos)
	object[tempObjectPos].speed = 48
end function


event ObjectMain
	switch object.state
	case 0
		if object.speed > 0
			object.speed--
		else
			object.state++
		end if
		object.frame = object.animationTimer
		object.frame /= 48
		object.animationTimer += object.speed
		object.animationTimer %= 288
		break
	case 1
		object.value0++
		if object.value0 == 30
			object.value0 = 0
			object.speed = 48
			object.state++
		end if
		break
	case 2
		object.frame = object.animationTimer
		object.frame /= 48
		object.animationTimer += object.speed
		object.animationTimer %= 288
		object.value0++
		if object.value0 == 180
			object.value0 = 0
			object.state = 0
		end if
		temp0 = oscillation
		temp0 <<= 2
		GetTableValue(object.value2, 10, StageSetup_table9)
		object.value2 >>= 8
		object.value3 = object.value2
		object.value2 -= 112
		object.value3 += 32
		object.value1 = object.value2
		object.value1 <<= 16
		object.value1 += object.ypos
		foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
			BoxCollisionTest(C_TOUCH, object.entityPos, -64, object.value2, 64, object.value3, currentPlayer, 0, 0, 0, 0)
			if checkResult == 1
				object[currentPlayer].animation = ANI_TWIRL
				object[currentPlayer].animationSpeed = 80
				object[currentPlayer].scrollTracking = 1
				object[currentPlayer].gravity = GRAVITY_AIR
				object[currentPlayer].state = PlayerObject_HandleAir
				object[currentPlayer].tileCollisions = 1
				object[currentPlayer].speed = object[currentPlayer].xvel
				object[currentPlayer].value1 = 0
				object[currentPlayer].yvel = 0
				temp1 = object.value1
				temp1 -= object[currentPlayer].ypos
				temp1 >>= 4
				object[currentPlayer].ypos += temp1
			end if
		next
		break
	end switch
end event


event ObjectDraw
	DrawSprite(object.frame)
end event


event ObjectStartup
	CheckCurrentStageFolder("Zone07")
	if checkResult == 1
		LoadSpriteSheet("OOZ/Objects.gif")
		SpriteFrame(-16, -12, 32, 24, 206, 181)
		SpriteFrame(-16, -12, 32, 24, 239, 181)
		SpriteFrame(-16, -12, 32, 24, 206, 206)
		SpriteFrame(-16, -12, 32, 24, 239, 206)
		SpriteFrame(-16, -12, 32, 24, 206, 231)
		SpriteFrame(-16, -12, 32, 24, 239, 231)
	else
		LoadSpriteSheet("MBZ/Objects.gif")
		SpriteFrame(-16, -12, 32, 24, 376, 820)
		SpriteFrame(-16, -12, 32, 24, 409, 820)
		SpriteFrame(-16, -12, 32, 24, 376, 845)
		SpriteFrame(-16, -12, 32, 24, 409, 845)
		SpriteFrame(-16, -12, 32, 24, 376, 870)
		SpriteFrame(-16, -12, 32, 24, 409, 870)
	end if
	foreach (TypeName[V Fan], arrayPos0, ALL_ENTITIES)
		object[arrayPos0].speed = 36
	next
	SetTableValue(TypeName[V Fan], DebugMode_ObjCount, DebugMode_TypesTable)
	SetTableValue(VFan_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
	SetTableValue(VFan_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
