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

//-------Aliases-------//
private alias 13 : TYPE_ACTRESULTS

// Function declarations
reserve function ActResults_Function9

// Static Values

// Tables

function ActResults_Function9
	arrayPos0 = vs.match
	arrayPos0 <<= 2
	arrayPos0 += 0x400
	temp0 = saveRAM[arrayPos0]
	temp0 &= 15
	temp1 = saveRAM[arrayPos0]
	temp1 >>= 4
	if temp0 == temp1
		temp0 = 0
		temp1 = 0
	else
		if temp0 > temp1
			temp0 = 1
			temp1 = 0
		else
			temp0 = 0
			temp1 = 1
		end if
	end if
	arrayPos0++
	temp2 = saveRAM[arrayPos0]
	temp2 &= 15
	temp3 = saveRAM[arrayPos0]
	temp3 >>= 4
	if temp2 == temp3
		temp2 = 0
		temp3 = 0
	else
		if temp2 > temp3
			temp2 = 1
			temp3 = 0
		else
			temp2 = 0
			temp3 = 1
		end if
	end if
	temp0 += temp2
	temp1 += temp3
	if temp0 == temp1
		checkResult = 1
	else
		checkResult = 0
	end if
end function


event ObjectMain
	switch object.state
	case 0
		if ReceiveValue > -1
			CallNativeFunction2(ReceiveEntity, 0x400, 1)
			ResetObjectEntity(0x400, TypeName[Blank Object], 0, 0, 0)
			CallNativeFunction2(TransmitGlobal, "player.score2", player.score)
			CallNativeFunction2(TransmitGlobal, "player.lives2", player.lives)
			if vs.playerID == 0
				CallNativeFunction2(TransmitGlobal, "vs.time1P", vs.time1P)
				CallNativeFunction2(TransmitGlobal, "vs.rings1P", vs.rings1P)
				CallNativeFunction2(TransmitGlobal, "vs.totalRings1P", vs.totalRings1P)
				CallNativeFunction2(TransmitGlobal, "vs.items1P", vs.items1P)
			else
				CallNativeFunction2(TransmitGlobal, "vs.time2P", vs.time2P)
				CallNativeFunction2(TransmitGlobal, "vs.rings2P", vs.rings2P)
				CallNativeFunction2(TransmitGlobal, "vs.totalRings2P", vs.totalRings2P)
				CallNativeFunction2(TransmitGlobal, "vs.items2P", vs.items2P)
			end if
			CallNativeFunction2(TransmitGlobal, "vs.dataSent", 1)
			object[0].state = 2
			object.state = 1
		else
			object.state = 2
		end if
		break
	case 1
		if vs.dataSent == 1
			object[0].state = 1
			object[0].value0 = 384
			SetScreenFade(0, 0, 0, 255)
			object.state = 2
		end if
		break
	case 2
		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
		object.value24 = vs.listPos
		object.value24 >>= 1
		object.value23 = vs.listPos
		object.value23 &= 1
		if object.value23 == 0
			AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@@@@@@@@@@@@* 1 *", 1)
		else
			AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@@@@@@@@@@@@* 2 *", 1)
		end if
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@@@@@@@@@@@@@@@1P@@@@@@@@2P@@@@WINS", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@SCORE", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@TIME@@@@@@@@:@@:@@@@@@:@@:", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@RING", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@TOTAL RING", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "@@ITEM BOX", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "* TOTAL *@@@@@@@@@@@@:", 1)
		object.value20 = 0
		object.value21 = 0
		if vs.playerID == 0
			object.value25 = player.score
			object.value26 = player.score2
		else
			object.value25 = player.score2
			object.value26 = player.score
		end if
		if object.value25 == object.value26
			object.value3 = 11
		else
			if object.value25 > object.value26
				object.value3 = 9
				object.value20++
			else
				object.value3 = 10
				object.value21++
			end if
		end if
		object.value8 = vs.time1P
		object.value8 %= 100
		object.value10 = vs.time1P
		object.value10 /= 100
		object.value10 %= 60
		object.value12 = vs.time1P
		object.value12 /= 0x1770
		object.value9 = vs.time2P
		object.value9 %= 100
		object.value11 = vs.time2P
		object.value11 /= 100
		object.value11 %= 60
		object.value13 = vs.time2P
		object.value13 /= 0x1770
		if vs.time1P == vs.time2P
			object.value4 = 11
		else
			if vs.time1P < vs.time2P
				object.value4 = 9
				object.value20++
			else
				object.value4 = 10
				object.value21++
			end if
		end if
		object.value14 = vs.rings1P
		object.value15 = vs.rings2P
		if object.value14 == object.value15
			object.value5 = 11
		else
			if object.value14 > object.value15
				object.value5 = 9
				object.value20++
			else
				object.value5 = 10
				object.value21++
			end if
		end if
		object.value16 = vs.totalRings1P
		object.value17 = vs.totalRings2P
		if object.value16 == object.value17
			object.value6 = 11
		else
			if object.value16 > object.value17
				object.value6 = 9
				object.value20++
			else
				object.value6 = 10
				object.value21++
			end if
		end if
		object.value18 = vs.items1P
		object.value19 = vs.items2P
		if object.value18 == object.value19
			object.value7 = 11
		else
			if object.value18 > object.value19
				object.value7 = 9
				object.value20++
			else
				object.value7 = 10
				object.value21++
			end if
		end if
		if object.value20 == object.value21
			object.value22 = 26
		else
			if object.value20 > object.value21
				object.value22 = 22
			else
				object.value22 = 24
			end if
		end if
		arrayPos0 = vs.match
		arrayPos0 <<= 2
		arrayPos0 += object.value23
		arrayPos0 += 0x400
		saveRAM[arrayPos0] = object.value21
		saveRAM[arrayPos0] <<= 4
		saveRAM[arrayPos0] += object.value20
		if object.value23 == 1
			arrayPos0++
			saveRAM[arrayPos0] = 0
			arrayPos0++
			saveRAM[arrayPos0] = object.value24
		end if
		object.state = 3
		break
	case 3
		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 object.value23 == 0
					vs.listPos++
					stage.activeList = vs.activeList
					stage.listPos = vs.listPos
					object.state = 4
					object[0].state = 3
				else
					CallFunction(ActResults_Function9)
					if checkResult == 1
						stage.activeList = SPECIAL_STAGE
						stage.listPos = object.value24
						object.state = 4
						object[0].state = 4
						PlaySfx(SfxName[Warp], 0)
						vs.tieBreaker = 1
					else
						object.state = 5
					end if
				end if
			end if
		end if
		break
	case 4
		break
	case 5
		if object.value0 < 256
			object.value0 += 16
			SetScreenFade(0, 0, 0, object.value0)
		else
			ResetObjectEntity(1, TypeName[Zone Results], 0, 0, 0)
			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
	if object.state < 2
		object.spriteSheet = object.value1
		DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, 255)
		DrawSpriteScreenXY(28, screen.xsize, screen.ysize)
	else
		object.spriteSheet = object.value1
		DrawSpriteScreenXY(8, screen.xcenter, 17)
		DrawSpriteScreenXY(object.value24, screen.xcenter, 57)
		temp0 = screen.xcenter
		temp0 += 8
		DrawNumbers(12, temp0, 89, object.value25, 6, 8, 0)
		DrawNumbers(12, temp0, 121, object.value14, 3, 8, 0)
		DrawNumbers(12, temp0, 137, object.value16, 3, 8, 0)
		DrawNumbers(12, temp0, 153, object.value18, 3, 8, 0)
		DrawNumbers(12, temp0, 105, object.value8, 2, 8, 1)
		temp0 -= 24
		DrawNumbers(12, temp0, 105, object.value10, 2, 8, 1)
		temp0 -= 24
		DrawNumbers(12, temp0, 105, object.value12, 1, 8, 1)
		temp0 = screen.xcenter
		temp0 += 88
		DrawNumbers(12, temp0, 89, object.value26, 6, 8, 0)
		DrawNumbers(12, temp0, 121, object.value15, 3, 8, 0)
		DrawNumbers(12, temp0, 137, object.value17, 3, 8, 0)
		DrawNumbers(12, temp0, 153, object.value19, 3, 8, 0)
		DrawNumbers(12, temp0, 105, object.value9, 2, 8, 1)
		temp0 -= 24
		DrawNumbers(12, temp0, 105, object.value11, 2, 8, 1)
		temp0 -= 24
		DrawNumbers(12, temp0, 105, object.value13, 1, 8, 1)
		temp0 = screen.xcenter
		temp0 += 8
		DrawNumbers(12, temp0, 185, object.value20, 1, 8, 1)
		temp0 += 32
		DrawNumbers(12, temp0, 185, object.value21, 1, 8, 1)
		temp0 = screen.xcenter
		temp0 += 128
		DrawSpriteScreenXY(object.value3, temp0, 89)
		DrawSpriteScreenXY(object.value4, temp0, 105)
		DrawSpriteScreenXY(object.value5, temp0, 121)
		DrawSpriteScreenXY(object.value6, temp0, 137)
		DrawSpriteScreenXY(object.value7, temp0, 153)
		temp0 = object.animationTimer
		temp0 >>= 3
		temp0 += object.value22
		DrawSpriteScreenXY(temp0, screen.xcenter, 210)
		object.spriteSheet = object.value2
		temp0 = screen.xcenter
		temp0 -= 144
		DrawMenu(MENU_1, temp0, 56)
	end if
end event


event ObjectStartup
	LoadSpriteSheet("LevelSelect/Icons.gif")
	LoadSpriteSheet("LevelSelect/Text.gif")
	SpriteFrame(-88, 0, 136, 7, 103, 350)
	SpriteFrame(-104, 0, 152, 7, 103, 358)
	SpriteFrame(-88, 0, 136, 7, 103, 366)
	SpriteFrame(-88, 0, 136, 7, 103, 374)
	SpriteFrame(-56, 0, 104, 7, 103, 382)
	SpriteFrame(-80, 0, 128, 7, 103, 390)
	SpriteFrame(-64, 0, 112, 7, 103, 398)
	SpriteFrame(-56, 0, 104, 7, 103, 406)
	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)
	if vs.playerID == 0
		SpriteFrame(-160, -16, 136, 7, 103, 422)
	else
		SpriteFrame(-160, -16, 136, 7, 103, 414)
	end if
	foreach (TypeName[Act 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
