// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Credits Eggman Object
// Script Author: Christian Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

//-------Aliases-------//
private alias 2 : TYPE_CREDITSEGGMAN


// Tables
public table CreditsEggman_table0
	7, 113, 7, 113
end table

public table CreditsEggman_table1
	4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 7, 5, 6, 5
	
end table


event ObjectMain
	switch object.propertyValue
	case 0
		GetTableValue(object.value1, object.frame, CreditsEggman_table0)
		object.value0++
		if object.value0 == object.value1
			object.value0 = 0
			object.frame++
			object.frame &= 3
		end if
		switch object.frame
		case 1
			if object.value0 == 0
				object[+1].angle = 32
				object[+2].angle = 32
				object[+3].angle = 32
				object[+4].angle = 32
				object[+5].angle = 32
				object[+6].angle = 32
				object[+7].angle = 32
			else
				arrayPos0 = 1
				while arrayPos0 < 8
					if object.value0 > object[+arrayPos0].value0
						object[+arrayPos0].angle += 4
						if object[+arrayPos0].angle > 256
							object[+arrayPos0].angle = 256
						end if
					end if
					arrayPos0++
				loop
			end if
			break
		case 3
			if object.value0 == 0
				object[+1].angle = 224
				object[+2].angle = 224
				object[+3].angle = 224
				object[+4].angle = 224
				object[+5].angle = 224
				object[+6].angle = 224
				object[+7].angle = 224
			else
				arrayPos0 = 1
				while arrayPos0 < 8
					if object.value0 > object[+arrayPos0].value0
						object[+arrayPos0].angle -= 4
						if object[+arrayPos0].angle < 0
							object[+arrayPos0].angle = 0
						end if
					end if
					arrayPos0++
				loop
			end if
			break
		end switch
		arrayPos0 = 1
		while arrayPos0 < 8
			Cos(object[+arrayPos0].xpos, object[+arrayPos0].angle)
			object[+arrayPos0].xpos *= -0xE00
			Sin(object[+arrayPos0].ypos, object[+arrayPos0].angle)
			object[+arrayPos0].ypos *= -0xE00
			object[+arrayPos0].ypos -= 0x80000
			object[+arrayPos0].xpos += object.xpos
			object[+arrayPos0].ypos += object.ypos
			arrayPos0++
		loop
		break
	case 1
		object.value0++
		if object.value0 == 8
			object.value0 = 0
			GetTableValue(object.frame, object.value2, CreditsEggman_table1)
			object.value2++
			object.value2 &= 15
		end if
		break
	end switch
end event


event ObjectDraw
	DrawSprite(object.frame)
end event


event ObjectStartup
	LoadSpriteSheet("Ending/Credits.gif")
	SpriteFrame(-29, -23, 60, 50, 1, 1)
	SpriteFrame(-29, -24, 58, 51, 62, 1)
	SpriteFrame(-31, -23, 60, 50, 121, 1)
	SpriteFrame(-29, -24, 58, 51, 182, 1)
	SpriteFrame(-29, -19, 58, 55, 1, 53)
	SpriteFrame(-29, -46, 58, 82, 62, 53)
	SpriteFrame(-29, -60, 58, 96, 121, 53)
	SpriteFrame(-32, -12, 64, 48, 182, 53)
	SpriteFrame(-6, -6, 12, 12, 1, 109)
	SpriteFrame(-6, -6, 12, 12, 14, 109)
	SpriteFrame(-6, -6, 12, 12, 27, 109)
	//if saved.superStates == 0
		SpriteFrame(-6, -6, 12, 12, 40, 109)
	//else
	//	SpriteFrame(-6, -6, 12, 12, 14, 135)
	//end if
	SpriteFrame(-6, -6, 12, 12, 1, 122)
	SpriteFrame(-6, -6, 12, 12, 14, 122)
	SpriteFrame(-6, -6, 12, 12, 27, 122)
	SpriteFrame(-6, -6, 12, 12, 1, 135)
	foreach (TypeName[Credits Eggman], arrayPos0, ALL_ENTITIES)
		object[arrayPos0].priority = PRIORITY_BOUNDS_SMALL
		switch object[arrayPos0].propertyValue
		case 0
			arrayPos1 = arrayPos0
			arrayPos1 += 7
			temp0 = 0
			temp2 = 0
			while temp0 < 7
				GetBit(temp1, specialStage.emeralds, temp0)
				if temp0 == 6
					if saved.superStates == 0
						temp1 = 1
					end if
				end if
				if temp1 == 0
					object[arrayPos1].propertyValue = temp0
					object[arrayPos1].propertyValue += 2
					object[arrayPos1].value0 = temp2
					object[arrayPos1].value0 *= 9
					arrayPos1--
					temp2++
				end if
				temp0++
			loop
			while arrayPos1 > arrayPos0
				object[arrayPos1].type = TypeName[Blank Object]
				arrayPos1--
			loop
			break
		case 1
			object[arrayPos0].frame = 4
			break
		case 2
		case 3
		case 4
		case 5
		case 6
		case 7
		case 8
			object[arrayPos0].frame = object[arrayPos0].propertyValue
			object[arrayPos0].frame += 7
			break
		end switch
	next
end event

event RSDKDraw
	DrawSprite(0)
end event

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