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

//-------Aliases-------//
private alias 17 : TYPE_GAMERESULTS

// Function declarations
reserve function GameResults_Function10

// Static Values

// Tables

function GameResults_Function10
	object.value3 = saveRAM[arrayPos0]
	arrayPos0++
	object.value4 = saveRAM[arrayPos0]
	arrayPos0++
	object.value5 = saveRAM[arrayPos0]
	arrayPos0 += 2
	temp2 = object.value3
	temp2 &= 15
	temp3 = object.value3
	temp3 >>= 4
	DrawNumbers(4, object.value9, object.value12, temp2, 1, 8, 0)
	DrawNumbers(4, object.value10, object.value12, temp3, 1, 8, 0)
	if temp2 == temp3
		DrawSpriteScreenXY(3, object.value11, object.value12)
	else
		if temp2 > temp3
			DrawSpriteScreenXY(1, object.value11, object.value12)
		else
			DrawSpriteScreenXY(2, object.value11, object.value12)
		end if
	end if
	object.value12 += 8
	temp2 = object.value4
	temp2 &= 15
	temp3 = object.value4
	temp3 >>= 4
	DrawNumbers(4, object.value9, object.value12, temp2, 1, 8, 0)
	DrawNumbers(4, object.value10, object.value12, temp3, 1, 8, 0)
	if temp2 == temp3
		DrawSpriteScreenXY(3, object.value11, object.value12)
	else
		if temp2 > temp3
			DrawSpriteScreenXY(1, object.value11, object.value12)
		else
			DrawSpriteScreenXY(2, object.value11, object.value12)
		end if
	end if
	object.value12 += 8
	if object.value5 > 0
		temp2 = object.value5
		temp2 &= 15
		temp3 = object.value5
		temp3 >>= 4
		DrawNumbers(4, object.value9, object.value12, temp2, 1, 8, 0)
		DrawNumbers(4, object.value10, object.value12, temp3, 1, 8, 0)
		if temp2 == temp3
			DrawSpriteScreenXY(3, object.value11, object.value12)
		else
			if temp2 > temp3
				DrawSpriteScreenXY(1, object.value11, object.value12)
			else
				DrawSpriteScreenXY(2, object.value11, object.value12)
			end if
		end if
	end if
	object.value12 += 16
end function


event ObjectMain
	switch object.state
	case 0
		SetupMenu(MENU_1, 0, 3, 0)
		SetupMenu(MENU_2, 0, 3, 0)
		options.vsMode = 0
		LoadSpriteSheet("LevelSelect/Icons.gif")
		object.value1 = object.spriteSheet
		LoadSpriteSheet("LevelSelect/Text.gif")
		object.value2 = object.spriteSheet
		menu1.selection = -1
		temp0 = 0
		temp1 = vs.gameLength
		if temp1 > 4
			arrayPos0 = 0x400
			AddMenuEntry(MENU_1, "@@@@@@@@@@@@@WINS@@@@@@@@@@@@@@WINS", 1)
			AddMenuEntry(MENU_1, "", 1)
			object.value13 = 0
			while temp0 < vs.gameLength
				object.value3 = saveRAM[arrayPos0]
				arrayPos0++
				object.value4 = saveRAM[arrayPos0]
				arrayPos0++
				object.value5 = saveRAM[arrayPos0]
				arrayPos0++
				temp2 = saveRAM[arrayPos0]
				arrayPos0++
				temp3 = object.value3
				temp3 &= 15
				temp4 = object.value3
				temp4 >>= 4
				if temp3 != temp4
					if temp3 > temp4
						object.value6++
					else
						object.value7++
					end if
				end if
				temp3 = object.value4
				temp3 &= 15
				temp4 = object.value4
				temp4 >>= 4
				if temp3 != temp4
					if temp3 > temp4
						object.value6++
					else
						object.value7++
					end if
				end if
				temp3 = object.value5
				temp3 &= 15
				temp4 = object.value5
				temp4 >>= 4
				if temp3 != temp4
					if temp3 > temp4
						object.value6++
					else
						object.value7++
					end if
				end if
				switch temp2
				case 0
					AddMenuEntry(object.value13, "@EHZ 1*@@:", 1)
					AddMenuEntry(object.value13, "@@@@ 2*@@:", 1)
					if object.value5 > 0
						AddMenuEntry(object.value13, "@@@@ SS@@:", 1)
					else
						AddMenuEntry(object.value13, "@@@@ SS@NO GAME", 1)
					end if
					break
				case 1
					AddMenuEntry(object.value13, "@CPZ 1*@@:", 1)
					AddMenuEntry(object.value13, "@@@@ 2*@@:", 1)
					if object.value5 > 0
						AddMenuEntry(object.value13, "@@@@ SS@@:", 1)
					else
						AddMenuEntry(object.value13, "@@@@ SS@NO GAME", 1)
					end if
					break
				case 2
					AddMenuEntry(object.value13, "@ARZ 1*@@:", 1)
					AddMenuEntry(object.value13, "@@@@ 2*@@:", 1)
					if object.value5 > 0
						AddMenuEntry(object.value13, "@@@@ SS@@:", 1)
					else
						AddMenuEntry(object.value13, "@@@@ SS@NO GAME", 1)
					end if
					break
				case 3
					AddMenuEntry(object.value13, "@CNZ 1*@@:", 1)
					AddMenuEntry(object.value13, "@@@@ 2*@@:", 1)
					if object.value5 > 0
						AddMenuEntry(object.value13, "@@@@ SS@@:", 1)
					else
						AddMenuEntry(object.value13, "@@@@ SS@NO GAME", 1)
					end if
					break
				case 4
					AddMenuEntry(object.value13, "@HTZ 1*@@:", 1)
					AddMenuEntry(object.value13, "@@@@ 2*@@:", 1)
					if object.value5 > 0
						AddMenuEntry(object.value13, "@@@@ SS@@:", 1)
					else
						AddMenuEntry(object.value13, "@@@@ SS@NO GAME", 1)
					end if
					break
				case 5
					AddMenuEntry(object.value13, "@MCZ 1*@@:", 1)
					AddMenuEntry(object.value13, "@@@@ 2*@@:", 1)
					if object.value5 > 0
						AddMenuEntry(object.value13, "@@@@ SS@@:", 1)
					else
						AddMenuEntry(object.value13, "@@@@ SS@NO GAME", 1)
					end if
					break
				case 6
					AddMenuEntry(object.value13, "@OOZ 1*@@:", 1)
					AddMenuEntry(object.value13, "@@@@ 2*@@:", 1)
					if object.value5 > 0
						AddMenuEntry(object.value13, "@@@@ SS@@:", 1)
					else
						AddMenuEntry(object.value13, "@@@@ SS@NO GAME", 1)
					end if
					break
				case 7
					AddMenuEntry(object.value13, "@S.S 1*@@:", 1)
					AddMenuEntry(object.value13, "@@@@ 2*@@:", 1)
					if object.value5 > 0
						AddMenuEntry(object.value13, "@@@@ 3*@@:", 1)
					else
						AddMenuEntry(object.value13, "@@@@ 3*@NO GAME", 1)
					end if
					break
				end switch
				AddMenuEntry(object.value13, "", 1)
				temp0++
				if temp0 == 4
					object.value13 = 1
				end if
			loop
			while temp0 < 4
				AddMenuEntry(MENU_1, "", 1)
				AddMenuEntry(MENU_1, "", 1)
				AddMenuEntry(MENU_1, "", 1)
				AddMenuEntry(MENU_1, "", 1)
				temp0++
			loop
		else
			arrayPos0 = 0x400
			AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WINS", 1)
			AddMenuEntry(MENU_1, "", 1)
			while temp0 < temp1
				object.value3 = saveRAM[arrayPos0]
				arrayPos0++
				object.value4 = saveRAM[arrayPos0]
				arrayPos0++
				object.value5 = saveRAM[arrayPos0]
				arrayPos0++
				temp2 = saveRAM[arrayPos0]
				arrayPos0++
				temp3 = object.value3
				temp3 &= 15
				temp4 = object.value3
				temp4 >>= 4
				if temp3 != temp4
					if temp3 > temp4
						object.value6++
					else
						object.value7++
					end if
				end if
				temp3 = object.value4
				temp3 &= 15
				temp4 = object.value4
				temp4 >>= 4
				if temp3 != temp4
					if temp3 > temp4
						object.value6++
					else
						object.value7++
					end if
				end if
				temp3 = object.value5
				temp3 &= 15
				temp4 = object.value5
				temp4 >>= 4
				if temp3 != temp4
					if temp3 > temp4
						object.value6++
					else
						object.value7++
					end if
				end if
				switch temp2
				case 0
					AddMenuEntry(MENU_1, "@@EMERALD HILL *1*@@@@:", 1)
					AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *2*@@@@:", 1)
					if object.value5 > 0
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@@@:", 1)
					else
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@NO GAME", 1)
					end if
					break
				case 1
					AddMenuEntry(MENU_1, "CHEMICAL PLANT *1*@@@@:", 1)
					AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *2*@@@@:", 1)
					if object.value5 > 0
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@@@:", 1)
					else
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@NO GAME", 1)
					end if
					break
				case 2
					AddMenuEntry(MENU_1, "@@AQUATIC RUIN *1*@@@@:", 1)
					AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *2*@@@@:", 1)
					if object.value5 > 0
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@@@:", 1)
					else
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@NO GAME", 1)
					end if
					break
				case 3
					AddMenuEntry(MENU_1, "@@CASINO NIGHT *1*@@@@:", 1)
					AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *2*@@@@:", 1)
					if object.value5 > 0
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@@@:", 1)
					else
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@NO GAME", 1)
					end if
					break
				case 4
					AddMenuEntry(MENU_1, "@@@@@@HILL TOP *1*@@@@:", 1)
					AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *2*@@@@:", 1)
					if object.value5 > 0
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@@@:", 1)
					else
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@NO GAME", 1)
					end if
					break
				case 5
					AddMenuEntry(MENU_1, "@@@MYSTIC CAVE *1*@@@@:", 1)
					AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *2*@@@@:", 1)
					if object.value5 > 0
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@@@:", 1)
					else
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@NO GAME", 1)
					end if
					break
				case 6
					AddMenuEntry(MENU_1, "@@@@@OIL OCEAN *1*@@@@:", 1)
					AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *2*@@@@:", 1)
					if object.value5 > 0
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@@@:", 1)
					else
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ S.S@@NO GAME", 1)
					end if
					break
				case 7
					AddMenuEntry(MENU_1, "@SPECIAL STAGE *1*@@@@:", 1)
					AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *2*@@@@:", 1)
					if object.value5 > 0
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *3*@@@@:", 1)
					else
						AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@ *3*@@NO GAME", 1)
					end if
					break
				end switch
				AddMenuEntry(MENU_1, "", 1)
				temp0++
			loop
			while temp0 < 4
				AddMenuEntry(MENU_1, "", 1)
				AddMenuEntry(MENU_1, "", 1)
				AddMenuEntry(MENU_1, "", 1)
				AddMenuEntry(MENU_1, "", 1)
				temp0++
			loop
		end if
		AddMenuEntry(MENU_1, "@@@@@@@* TOTAL *@@@@@@:", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@THE GAME", 1)
		if object.value6 == object.value7
			object.value8 = 18
		else
			if object.value6 > object.value7
				object.value8 = 14
				if vs.playerID == 0
					//CallNativeFunction2(SetAchievement, 8, 100)
				end if
			else
				object.value8 = 16
				if vs.playerID == 1
					//CallNativeFunction2(SetAchievement, 8, 100)
				end if
			end if
		end if
		object.state++
		break
	case 1
		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
				object.state = 3
			end if
		end if
		break
	case 3
		if object.value0 < 256
			music.volume -= 10
			object.value0 += 16
			SetScreenFade(0, 0, 0, object.value0)
		else
			StopMusic()
			CallNativeFunction(Disconnect2PVS)
			engine.state = 8
			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)
	arrayPos0 = 0x400
	if vs.gameLength <= 4
		object.value9 = screen.xcenter
		object.value9 += 16
		object.value10 = object.value9
		object.value10 += 32
		object.value11 = screen.xcenter
		object.value11 += 120
		object.value12 = 57
		temp0 = 0
		while temp0 < vs.gameLength
			CallFunction(GameResults_Function10)
			temp0++
		loop
	else
		object.value9 = screen.xcenter
		object.value9 -= 80
		object.value10 = object.value9
		object.value10 += 16
		object.value11 = screen.xcenter
		object.value11 -= 24
		object.value12 = 57
		temp0 = 0
		while temp0 < 4
			CallFunction(GameResults_Function10)
			temp0++
		loop
		object.value9 = screen.xcenter
		object.value9 += 64
		object.value10 = object.value9
		object.value10 += 16
		object.value11 = screen.xcenter
		object.value11 += 120
		object.value12 = 57
		while temp0 < vs.gameLength
			CallFunction(GameResults_Function10)
			temp0++
		loop
	end if
	object.value9 = screen.xcenter
	object.value9 += 24
	object.value10 = object.value9
	object.value10 += 24
	DrawNumbers(4, object.value9, 185, object.value6, 2, 8, 1)
	DrawNumbers(4, object.value10, 185, object.value7, 2, 8, 1)
	temp0 = object.animationTimer
	temp0 >>= 3
	temp0 += object.value8
	DrawSpriteScreenXY(temp0, screen.xcenter, 198)
	object.spriteSheet = object.value2
	temp0 = screen.xcenter
	temp0 -= 144
	DrawMenu(MENU_1, temp0, 40)
	if vs.gameLength > 4
		DrawMenu(MENU_2, screen.xcenter, 56)
	end if
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[Game Results], 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
