// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Credits Eggman Object
// Script Author: Christan 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, 4, 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
			if object.frame == 4
				temp1 = object.ypos
				temp1 += 0x140000
				temp0 = object.xpos
				temp0 -= 0x150000
				CreateTempObject(TypeName[Credits Eggman], 10, temp0, temp1)
				object[tempObjectPos].xvel = -0x10000
				object[tempObjectPos].frame = 16
				temp0 = object.xpos
				temp0 += 0x150000
				CreateTempObject(TypeName[Credits Eggman], 10, temp0, temp1)
				object[tempObjectPos].xvel = 0x10000
				object[tempObjectPos].frame = 16
			end if
		end if
		break
	case 9
		if stage.playerListPos != 2
			if object.value0 < 166
				object.value0++
			else
				if object.alpha < 256
					object.alpha += 2
				end if
			end if
		end if
		break
	case 10
		object.animationTimer++
		if object.animationTimer >= 4
			object.animationTimer = 0
			object.frame++
			if object.frame >= 20
				object.type = TypeName[Blank Object]
			end if
		end if
		object.xpos += object.xvel
		object.ypos -= 0x10000
		if object.xvel != 0
			if object.xvel > 0
				object.xvel -= 0x1000
			else
				object.xvel += 0x1000
			end if
		end if
		break
	end switch
end event


event ObjectDraw
	DrawSprite(object.frame)
	if object.propertyValue == 9
		DrawSpriteFX(21, FX_INK, object.xpos, object.ypos)
	end if
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, 39, 52, 53)
	SpriteFrame(-29, -46, 58, 62, 52, 93)
	SpriteFrame(-29, -60, 58, 42, 52, 156)
	SpriteFrame(-29, -19, 58, 39, 52, 53)
	SpriteFrame(-8, -8, 16, 16, 1, 52)
	SpriteFrame(-8, -8, 16, 16, 1, 52)
	SpriteFrame(-8, -8, 16, 16, 18, 52)
	SpriteFrame(-8, -8, 16, 16, 35, 52)
	SpriteFrame(-8, -8, 16, 16, 1, 69)
	SpriteFrame(-8, -8, 16, 16, 18, 69)
	SpriteFrame(-8, -8, 16, 16, 35, 69)
	SpriteFrame(-8, -8, 16, 16, 1, 86)
	SpriteFrame(-4, -4, 8, 7, 18, 86)
	SpriteFrame(-4, -4, 8, 7, 27, 86)
	SpriteFrame(-4, -4, 8, 7, 36, 86)
	SpriteFrame(-3, -3, 6, 6, 45, 86)
	SpriteFrame(-85, -22, 170, 44, 52, 211)
	SpriteFrame(38, -5, 12, 7, 128, 203)
	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 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
