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

//-------Aliases-------//
private alias 10 : TYPE_2PVSMENU2

// Function declarations
reserve function 2PVSMenu2_Function4
reserve function 2PVSMenu2_Function5
reserve function 2PVSMenu2_Function6

// Static Values

// Tables

function 2PVSMenu2_Function4
	temp0 = screen.xcenter
	temp0 -= object.value5
	if object.value3 == 1
		if object.state == 1
			temp1 = 3
		else
			temp1 = object.value4
			temp1 >>= 1
			temp1 &= 1
			temp1 += 2
		end if
	else
		temp1 = 2
	end if
	object.alpha = object.value7
	DrawSpriteScreenFX(temp1, FX_INK, temp0, object.value6)
	DrawSpriteScreenFX(4, FX_INK, temp0, object.value6)
end function


function 2PVSMenu2_Function5
	if object.value3 == 2
		if object.state == 1
			temp1 = 3
		else
			temp1 = object.value4
			temp1 >>= 1
			temp1 &= 1
			temp1 += 2
		end if
	else
		temp1 = 2
	end if
	object.alpha = object.value8
	DrawSpriteScreenFX(temp1, FX_INK, screen.xcenter, object.value6)
	DrawSpriteScreenFX(5, FX_INK, screen.xcenter, object.value6)
end function


function 2PVSMenu2_Function6
	temp0 = screen.xcenter
	temp0 += object.value5
	if object.value3 == 3
		if object.state == 1
			temp1 = 3
		else
			temp1 = object.value4
			temp1 >>= 1
			temp1 &= 1
			temp1 += 2
		end if
	else
		temp1 = 2
	end if
	object.alpha = object.value9
	DrawSpriteScreenFX(temp1, FX_INK, temp0, object.value6)
	DrawSpriteScreenFX(6, FX_INK, temp0, object.value6)
end function


event ObjectMain
	switch object.state
	case 0
		LoadSpriteSheet("LevelSelect/Icons.gif")
		object.value1 = object.spriteSheet
		LoadSpriteSheet("LevelSelect/Text.gif")
		object.value2 = object.spriteSheet
		if engine.deviceType == RETRO_STANDARD
			options.physicalControls = 1
		end if
		if options.physicalControls == 0
			object.value3 = 0
		else
			object.value3 = 1
		end if
		object.value5 = 80
		object.value6 = 120
		object.value7 = 256
		object.value8 = 256
		object.value9 = 256
		object.inkEffect = INK_ALPHA
		object.state++
		break
	case 1
		if options.physicalControls == 0
			CheckTouchRect(0, 0, screen.xsize, screen.ysize)
			if checkResult > -1
				temp0 = screen.xcenter
				temp0 -= object.value5
				temp0 -= 32
				temp1 = temp0
				temp1 += 64
				temp2 = object.value6
				temp2 -= 32
				temp3 = temp2
				temp3 += 64
				object.value3 = 0
				CheckTouchRect(temp0, temp2, temp1, temp3)
				if checkResult > -1
					object.value3 = 1
				end if
				temp0 = screen.xcenter
				temp0 -= 32
				temp1 = temp0
				temp1 += 64
				CheckTouchRect(temp0, temp2, temp1, temp3)
				if checkResult > -1
					object.value3 = 2
				end if
				temp0 = screen.xcenter
				temp0 += object.value5
				temp0 -= 32
				temp1 = temp0
				temp1 += 64
				CheckTouchRect(temp0, temp2, temp1, temp3)
				if checkResult > -1
					object.value3 = 3
				end if
				temp0 = screen.xcenter
				temp0 -= 24
				temp1 = temp0
				temp1 += 48
				CheckTouchRect(temp0, 192, temp1, 224)
				if checkResult > -1
					object.value3 = 4
				end if
			else
				switch object.value3
				case 1
				case 2
				case 3
					object.state = 2
					object.value4 = 0
					PlaySfx(SfxName[Star Post], 0)
					break
				case 4
					object.state = 3
					object.value4 = 0
					PlaySfx(SfxName[Menu Back], 0)
					break
				end switch
			end if
			if object.state != 2
				if inputPress.left == 1
					options.physicalControls = 1
					object.value3 = 3
				end if
				if inputPress.right == 1
					options.physicalControls = 1
					object.value3 = 1
				end if
				if inputPress.up == 1
					options.physicalControls = 1
					object.value3 = 4
				end if
				if inputPress.down == 1
					options.physicalControls = 1
					object.value3 = 2
				end if
			end if
		else
			if inputPress.left == 1
				object.value3--
				if object.value3 < 1
					object.value3 = 3
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.right == 1
				object.value3++
				if object.value3 > 3
					object.value3 = 1
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.up == 1
				if object.value3 < 4
					object.value3 = 4
				else
					object.value3 = 2
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.down == 1
				if object.value3 < 4
					object.value3 = 4
				else
					object.value3 = 2
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.start == 1
				if object.value3 < 4
					object.state = 2
					object.value4 = 0
					PlaySfx(SfxName[Star Post], 0)
				else
					object.state = 3
					object.value4 = 0
					PlaySfx(SfxName[Menu Back], 0)
				end if
			end if
			if inputPress.buttonA == 1
				object.state = 2
				object.value4 = 0
				PlaySfx(SfxName[Star Post], 0)
			end if
			if inputPress.buttonB == 1
				object.state = 3
				object.value3 = 4
				object.value4 = 0
				PlaySfx(SfxName[Menu Back], 0)
			end if
			if object.state != 2
				CheckTouchRect(0, 0, screen.xsize, screen.ysize)
				if checkResult > -1
					options.physicalControls = 0
					object.value3 = 0
				end if
			end if
		end if
		break
	case 2
		switch object.value3
		case 1
			object.value8 -= 8
			object.value9 -= 8
			break
		case 2
			object.value7 -= 8
			object.value9 -= 8
			break
		case 3
			object.value7 -= 8
			object.value8 -= 8
			break
		end switch
		if object.value4 < 32
			object.value4++
			object.value5 = 32
			object.value5 -= object.value4
			object.value5 *= 80
			object.value5 >>= 5
		else
			object.value4 = 0
			object.value5 = 0
			object.value0 = -256
			object.state = 4
		end if
		break
	case 3
		if object.value4 < 32
			object.value4++
		else
			object.value4 = 0
			object.state = 5
		end if
		break
	case 4
		if object.value0 < 256
			object.value0 += 16
			if object.value0 > 0
				SetScreenFade(0, 0, 0, object.value0)
			end if
		else
			stage.playerListPos = object.value3
			stage.playerListPos--
			ResetObjectEntity(1, TypeName[2P VS Menu 3], 0, 0, 0)
			object[1].priority = PRIORITY_ACTIVE
			object[0].state = 1
			object[0].value0 = 384
			SetScreenFade(0, 0, 0, 255)
			CallNativeFunction2(Connect2PVS, vs.gameLength, vs.itemMode)
		end if
		break
	case 5
		if object.value0 < 256
			object.value0 += 16
			SetScreenFade(0, 0, 0, object.value0)
		else
			ResetObjectEntity(1, TypeName[2P VS Menu 1], 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
end event


event ObjectDraw
	object.spriteSheet = object.value1
	DrawSpriteScreenXY(0, screen.xcenter, 17)
	DrawSpriteScreenXY(1, screen.xcenter, 17)
	if object.state == 3
		temp0 = object.value4
		temp0 >>= 1
		temp0 &= 1
		temp0 += 7
	else
		if options.physicalControls == 0
			if object.value3 == 4
				temp0 = 1
			else
				temp0 = 0
			end if
		else
			temp0 = 0
		end if
		temp0 += 7
	end if
	DrawSpriteScreenXY(temp0, screen.xcenter, 210)
	switch object.value3
	case 0
	case 1
		CallFunction(2PVSMenu2_Function5)
		CallFunction(2PVSMenu2_Function6)
		CallFunction(2PVSMenu2_Function4)
		break
	case 2
		CallFunction(2PVSMenu2_Function6)
		CallFunction(2PVSMenu2_Function4)
		CallFunction(2PVSMenu2_Function5)
		break
	case 3
		CallFunction(2PVSMenu2_Function5)
		CallFunction(2PVSMenu2_Function4)
		CallFunction(2PVSMenu2_Function6)
		break
	case 4
		CallFunction(2PVSMenu2_Function4)
		CallFunction(2PVSMenu2_Function5)
		CallFunction(2PVSMenu2_Function6)
		if object.state != 3
			if options.physicalControls == 1
				DrawSpriteScreenXY(9, screen.xcenter, 210)
			end if
		end if
		break
	end switch
end event


event ObjectStartup
	LoadSpriteSheet("LevelSelect/Icons.gif")
	LoadSpriteSheet("LevelSelect/Text.gif")
	SpriteFrame(-104, 0, 96, 14, 1, 249)
	SpriteFrame(8, 0, 96, 14, 1, 264)
	SpriteFrame(-32, -32, 64, 64, 98, 249)
	SpriteFrame(-32, -32, 64, 64, 163, 249)
	SpriteFrame(-12, -20, 24, 40, 1, 279)
	SpriteFrame(-16, -20, 32, 40, 54, 279)
	SpriteFrame(-14, -20, 27, 40, 26, 279)
	SpriteFrame(-20, -10, 40, 20, 1, 341)
	SpriteFrame(-20, -10, 40, 20, 42, 341)
	SpriteFrame(-22, -12, 42, 22, 1, 362)
	foreach (TypeName[2P VS Menu 2], 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
