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

//-------Aliases-------//
private alias 15 : TYPE_SSSINGLERESULT


// Static Values

// Tables

event ObjectMain
	switch object.state
	case 0
		SetupMenu(MENU_1, 0, 3, 0)
		LoadSpriteSheet("LevelSelect/Icons.gif")
		object.value1 = object.spriteSheet
		LoadSpriteSheet("LevelSelect/Text.gif")
		object.value2 = object.spriteSheet
		menu1.selection = -1
		if vs.tieBreaker == 0
			object.value15 = vs.listPos
			object.value15 -= 4
		else
			if vs.activeList == 3
				object.value15 = 2
			else
				object.value15 = 3
			end if
		end if
		object.value6 = vs.checkpoint1P
		object.value6 &= 255
		object.value7 = vs.checkpoint1P
		object.value7 >>= 8
		object.value7 &= 255
		object.value8 = vs.checkpoint1P
		object.value8 >>= 16
		object.value9 = vs.checkpoint2P
		object.value9 &= 255
		object.value10 = vs.checkpoint2P
		object.value10 >>= 8
		object.value10 &= 255
		object.value11 = vs.checkpoint2P
		object.value11 >>= 16
		switch object.value15
		case 0
			AddMenuEntry(MENU_1, "@@@@@@@SPECIAL STAGE@@@* 1 *", 1)
			break
		case 1
			AddMenuEntry(MENU_1, "@@@@@@@SPECIAL STAGE@@@* 2 *", 1)
			break
		case 2
			AddMenuEntry(MENU_1, "@@@@@@@SPECIAL STAGE@@@* 3 *", 1)
			break
		case 3
			AddMenuEntry(MENU_1, "@@@@@@@SPECIAL STAGE", 1)
			break
		end switch
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@1P@@@@@@2P@@@@WINS", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "CHECKPOINT", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@@* 1 *", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@@* 2 *", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@@* 3 *", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@* TOTAL *@@@@@@@@@:", 1)
		object.value12 = 0
		object.value13 = 0
		if object.value6 == object.value9
			object.value3 = 3
		else
			if object.value6 > object.value9
				object.value3 = 1
				object.value12++
			else
				object.value3 = 2
				object.value13++
			end if
		end if
		if object.value7 == object.value10
			object.value4 = 3
		else
			if object.value7 > object.value10
				object.value4 = 1
				object.value12++
			else
				object.value4 = 2
				object.value13++
			end if
		end if
		if object.value8 == object.value11
			object.value5 = 3
		else
			if object.value8 > object.value11
				object.value5 = 1
				object.value12++
			else
				object.value5 = 2
				object.value13++
			end if
		end if
		if object.value12 == object.value13
			object.value14 = 18
		else
			if object.value12 > object.value13
				object.value14 = 14
			else
				object.value14 = 16
			end if
		end if
		arrayPos0 = vs.match
		arrayPos0 <<= 2
		if vs.tieBreaker == 0
			arrayPos0 += object.value15
		else
			arrayPos0 += 2
		end if
		arrayPos0 += 0x400
		saveRAM[arrayPos0] = object.value13
		saveRAM[arrayPos0] <<= 4
		saveRAM[arrayPos0] += object.value12
		if object.value15 == 1
			arrayPos0++
			saveRAM[arrayPos0] = 0
			arrayPos0++
			saveRAM[arrayPos0] = 7
		end if
		object.state++
		break
	case 1
		CallNativeFunction2(ReceiveEntity, 0x400, 1)
		ResetObjectEntity(0x400, TypeName[Blank Object], 0, 0, 0)
		object.state++
		break
	case 2
		if object.value0 < 60
			object.value0++
		else
			CheckTouchRect(0, 0, screen.xsize, screen.ysize)
			if inputPress.start == 1
				checkResult = 0
			end if
			if inputPress.buttonA == 1
				checkResult = 0
			end if
			if inputPress.buttonB == 1
				checkResult = 0
			end if
			if inputPress.buttonC == 1
				checkResult = 0
			end if
			if checkResult > -1
				object.value0 = 0
				if vs.tieBreaker == 1
					object.state = 4
				else
					if object.value15 == 0
						vs.listPos++
						stage.activeList = vs.activeList
						stage.listPos = vs.listPos
						object.state = 3
						object[0].state = 4
						PlaySfx(SfxName[Warp], 0)
					else
						CallFunction(ActResults_Function9)
						if checkResult == 1
							stage.activeList = SPECIAL_STAGE
							stage.listPos = 6
							object.state = 3
							object[0].state = 4
							PlaySfx(SfxName[Warp], 0)
							vs.tieBreaker = 1
						else
							object.state = 4
						end if
					end if
				end if
			end if
		end if
		break
	case 3
		break
	case 4
		if object.value0 < 256
			object.value0 += 16
			SetScreenFade(0, 0, 0, object.value0)
		else
			if vs.activeList == 3
				ResetObjectEntity(1, TypeName[SS Results], 0, 0, 0)
			else
				ResetObjectEntity(1, TypeName[Zone Results], 0, 0, 0)
			end if
			object[1].priority = PRIORITY_ACTIVE
			object[0].state = 1
			object[0].value0 = 384
			SetScreenFade(0, 0, 0, 255)
		end if
		break
	end switch
	object.animationTimer++
	object.animationTimer &= 15
end event


event ObjectDraw
	object.spriteSheet = object.value1
	DrawSpriteScreenXY(0, screen.xcenter, 17)
	temp0 = screen.xcenter
	temp0 += 8
	DrawNumbers(4, temp0, 129, object.value6, 3, 8, 0)
	DrawNumbers(4, temp0, 145, object.value7, 3, 8, 0)
	DrawNumbers(4, temp0, 161, object.value8, 3, 8, 0)
	temp0 = screen.xcenter
	temp0 += 72
	DrawNumbers(4, temp0, 129, object.value9, 3, 8, 0)
	DrawNumbers(4, temp0, 145, object.value10, 3, 8, 0)
	DrawNumbers(4, temp0, 161, object.value11, 3, 8, 0)
	temp0 = screen.xcenter
	temp0 += 8
	DrawNumbers(4, temp0, 185, object.value12, 1, 8, 1)
	temp0 += 32
	DrawNumbers(4, temp0, 185, object.value13, 1, 8, 1)
	temp0 = screen.xcenter
	temp0 += 112
	DrawSpriteScreenXY(object.value3, temp0, 129)
	DrawSpriteScreenXY(object.value4, temp0, 145)
	DrawSpriteScreenXY(object.value5, temp0, 161)
	temp0 = object.animationTimer
	temp0 >>= 3
	temp0 += object.value14
	DrawSpriteScreenXY(temp0, screen.xcenter, 210)
	object.spriteSheet = object.value2
	temp0 = screen.xcenter
	temp0 -= 128
	DrawMenu(MENU_1, temp0, 64)
end event


event ObjectStartup
	LoadSpriteSheet("LevelSelect/Icons.gif")
	LoadSpriteSheet("LevelSelect/Text.gif")
	SpriteFrame(-48, 0, 96, 14, 1, 136)
	SpriteFrame(-8, 0, 16, 7, 98, 136)
	SpriteFrame(-8, 0, 16, 7, 115, 136)
	SpriteFrame(-16, 0, 32, 7, 132, 136)
	SpriteFrame(0, 0, 8, 7, 175, 140)
	SpriteFrame(0, 0, 8, 7, 183, 140)
	SpriteFrame(0, 0, 8, 7, 191, 140)
	SpriteFrame(0, 0, 8, 7, 199, 140)
	SpriteFrame(0, 0, 8, 7, 207, 140)
	SpriteFrame(0, 0, 8, 7, 215, 140)
	SpriteFrame(0, 0, 8, 7, 223, 140)
	SpriteFrame(0, 0, 8, 7, 231, 140)
	SpriteFrame(0, 0, 8, 7, 239, 140)
	SpriteFrame(0, 0, 8, 7, 247, 140)
	SpriteFrame(-47, 0, 91, 12, 1, 110)
	SpriteFrame(-47, 0, 91, 12, 1, 123)
	SpriteFrame(-47, 0, 91, 12, 93, 110)
	SpriteFrame(-47, 0, 91, 12, 93, 123)
	SpriteFrame(-22, 0, 44, 12, 1, 385)
	SpriteFrame(-22, 0, 44, 12, 1, 398)
	foreach (TypeName[SS Single Result], arrayPos0, ALL_ENTITIES)
		object[arrayPos0].priority = PRIORITY_ACTIVE
	next
end event

event RSDKDraw
	DrawSprite(0)
end event

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