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

//-------Aliases-------//
private alias 9 : TYPE_2PVSMENU1

// Function declarations
reserve function 2PVSMenu1_Function2
reserve function 2PVSMenu1_Function3

// Static Values

// Tables

function 2PVSMenu1_Function2
	switch vs.gameLength
	case 0
		EditMenuEntry(MENU_1, "GAME: NO PREFERENCE", 0, 1)
		break
	case 1
		EditMenuEntry(MENU_1, "GAME: 1 MATCH ", 0, 1)
		break
	case 2
		EditMenuEntry(MENU_1, "GAME: 2 MATCHES", 0, 1)
		break
	case 3
		EditMenuEntry(MENU_1, "GAME: 3 MATCHES", 0, 1)
		break
	case 4
		EditMenuEntry(MENU_1, "GAME: 4 MATCHES", 0, 1)
		break
	case 5
		EditMenuEntry(MENU_1, "GAME: 5 MATCHES", 0, 1)
		break
	case 6
		EditMenuEntry(MENU_1, "GAME: 6 MATCHES", 0, 1)
		break
	case 7
		EditMenuEntry(MENU_1, "GAME: 7 MATCHES", 0, 1)
		break
	case 8
		EditMenuEntry(MENU_1, "GAME: 8 MATCHES", 0, 1)
		break
	end switch
end function


function 2PVSMenu1_Function3
	switch vs.itemMode
	case 0
		EditMenuEntry(MENU_1, "ITEMS: NO PREFERENCE", 8, 1)
		break
	case 1
		EditMenuEntry(MENU_1, "ITEMS: RANDOM", 8, 1)
		break
	case 2
		EditMenuEntry(MENU_1, "ITEMS: TELEPORT ONLY", 8, 1)
		break
	case 3
		EditMenuEntry(MENU_1, "ITEMS: FIXED", 8, 1)
		break
	end switch
end function


event ObjectMain
	switch object.state
	case 0
		SetupMenu(MENU_1, 0, 3, 2)
		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
			menu1.selection = -1
			object.value3 = 0
		else
			menu1.selection = 0
			object.value3 = 1
		end if
		AddMenuEntry(MENU_1, "GAME: NO PREFERENCE", 1)
		CallFunction(2PVSMenu1_Function2)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "", 1)
		AddMenuEntry(MENU_1, "ITEMS: NO PREFERENCE", 1)
		CallFunction(2PVSMenu1_Function3)
		object.state++
		break
	case 1
		if options.physicalControls == 0
			CheckTouchRect(0, 0, screen.xsize, screen.ysize)
			if checkResult > -1
				temp0 = screen.xcenter
				temp0 -= 152
				temp1 = temp0
				temp1 += 38
				CheckTouchRect(temp0, 72, temp1, 104)
				if checkResult > -1
					object.value6 = 1
				else
					object.value6 = 0
				end if
				CheckTouchRect(temp0, 136, temp1, 168)
				if checkResult > -1
					object.value7 = 1
				else
					object.value7 = 0
				end if
				temp0 = screen.xcenter
				temp0 += 116
				temp1 = temp0
				temp1 += 38
				CheckTouchRect(temp0, 72, temp1, 104)
				if checkResult > -1
					object.value8 = 1
				else
					object.value8 = 0
				end if
				CheckTouchRect(temp0, 136, temp1, 168)
				if checkResult > -1
					object.value9 = 1
				else
					object.value9 = 0
				end if
				temp0 = screen.xcenter
				temp0 += 8
				temp1 = temp0
				temp1 += 64
				CheckTouchRect(temp0, 192, temp1, 224)
				if checkResult > -1
					object.value10 = 1
				else
					object.value10 = 0
				end if
				temp1 = screen.xcenter
				temp1 -= 8
				temp0 = temp1
				temp0 -= 64
				CheckTouchRect(temp0, 192, temp1, 224)
				if checkResult > -1
					object.value11 = 1
				else
					object.value11 = 0
				end if
			else
				if object.value6 == 1
					object.value6 = 0
					vs.gameLength--
					if vs.gameLength < 0
						vs.gameLength = 8
					end if
					CallFunction(2PVSMenu1_Function2)
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value7 == 1
					object.value7 = 0
					vs.itemMode--
					if vs.itemMode < 0
						vs.itemMode = 3
					end if
					CallFunction(2PVSMenu1_Function3)
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value8 == 1
					object.value8 = 0
					vs.gameLength++
					if vs.gameLength > 8
						vs.gameLength = 0
					end if
					CallFunction(2PVSMenu1_Function2)
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value9 == 1
					object.value9 = 0
					vs.itemMode++
					if vs.itemMode > 3
						vs.itemMode = 0
					end if
					CallFunction(2PVSMenu1_Function3)
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value10 == 1
					object.value10 = 0
					object.state = 2
					object.value4 = 0
					PlaySfx(SfxName[Menu Select], 0)
				end if
				if object.value11 == 1
					object.value11 = 0
					object.state = 2
					object.value4 = 1
					PlaySfx(SfxName[Menu Back], 0)
				end if
			end if
			if object.state != 2
				if inputPress.up == 1
					options.physicalControls = 1
					object.value3 = 3
				end if
				if inputPress.down == 1
					options.physicalControls = 1
					object.value3 = 1
				end if
			end if
		else
			if inputPress.up == 1
				object.value3--
				if object.value3 < 1
					object.value3 = 3
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.down == 1
				object.value3++
				if object.value3 > 3
					object.value3 = 1
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			switch object.value3
			case 1
				menu1.selection = 0
				if inputPress.left == 1
					vs.gameLength--
					if vs.gameLength < 0
						vs.gameLength = 8
					end if
					CallFunction(2PVSMenu1_Function2)
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.right == 1
					vs.gameLength++
					if vs.gameLength > 8
						vs.gameLength = 0
					end if
					CallFunction(2PVSMenu1_Function2)
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.buttonB == 1
					menu1.selection = -1
					object.value4 = 1
					object.state = 2
					PlaySfx(SfxName[Menu Back], 0)
				end if
				break
			case 2
				menu1.selection = 8
				if inputPress.left == 1
					vs.itemMode--
					if vs.itemMode < 0
						vs.itemMode = 3
					end if
					CallFunction(2PVSMenu1_Function3)
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.right == 1
					vs.itemMode++
					if vs.itemMode > 3
						vs.itemMode = 0
					end if
					CallFunction(2PVSMenu1_Function3)
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.buttonB == 1
					menu1.selection = -1
					object.value4 = 1
					object.state = 2
					PlaySfx(SfxName[Menu Back], 0)
				end if
				break
			case 3
				menu1.selection = -1
				if inputPress.left == 1
					object.value4 ^= 1
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.right == 1
					object.value4 ^= 1
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.start == 1
					object.state = 2
					PlaySfx(SfxName[Menu Select], 0)
				end if
				if inputPress.buttonA == 1
					object.state = 2
					PlaySfx(SfxName[Menu Select], 0)
				end if
				if inputPress.buttonB == 1
					object.value4 = 1
					object.state = 2
					PlaySfx(SfxName[Menu Back], 0)
				end if
				break
			end switch
			if object.state != 2
				CheckTouchRect(0, 0, screen.xsize, screen.ysize)
				if checkResult > -1
					options.physicalControls = 0
					object.value3 = 0
					menu1.selection = -1
				end if
			end if
		end if
		break
	case 2
		if object.value5 < 32
			object.value5++
		else
			object.value5 = 0
			if object.value4 == 0
				object.state = 3
			else
				object.state = 4
			end if
		end if
		break
	case 3
		if object.value0 < 256
			object.value0 += 16
			SetScreenFade(0, 0, 0, object.value0)
		else
			ResetObjectEntity(1, TypeName[2P VS Menu 2], 0, 0, 0)
			object[1].priority = PRIORITY_ACTIVE
			object[0].state = 1
			object[0].value0 = 384
			SetScreenFade(0, 0, 0, 255)
		end if
		break
	case 4
		if object.value0 < 256
			music.volume -= 10
			object.value0 += 16
			SetScreenFade(0, 0, 0, object.value0)
		else
			StopMusic()
			options.vsMode = 0
			engine.state = 8
			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.value3 == 1
		DrawSpriteScreenXY(3, screen.xcenter, 64)
	else
		DrawSpriteScreenXY(2, screen.xcenter, 64)
	end if
	if object.value3 == 2
		DrawSpriteScreenXY(3, screen.xcenter, 128)
	else
		DrawSpriteScreenXY(2, screen.xcenter, 128)
	end if
	switch object.value3
	case 0
		if object.value6 == 1
			DrawSpriteScreenXY(5, screen.xcenter, 88)
		else
			DrawSpriteScreenXY(4, screen.xcenter, 88)
		end if
		if object.value8 == 1
			DrawSpriteScreenXY(7, screen.xcenter, 88)
		else
			DrawSpriteScreenXY(6, screen.xcenter, 88)
		end if
		if object.value7 == 1
			DrawSpriteScreenXY(5, screen.xcenter, 152)
		else
			DrawSpriteScreenXY(4, screen.xcenter, 152)
		end if
		if object.value9 == 1
			DrawSpriteScreenXY(7, screen.xcenter, 152)
		else
			DrawSpriteScreenXY(6, screen.xcenter, 152)
		end if
		break
	case 1
		if inputDown.left == 1
			DrawSpriteScreenXY(5, screen.xcenter, 88)
		else
			DrawSpriteScreenXY(4, screen.xcenter, 88)
		end if
		if inputDown.right == 1
			DrawSpriteScreenXY(7, screen.xcenter, 88)
		else
			DrawSpriteScreenXY(6, screen.xcenter, 88)
		end if
		break
	case 2
		if inputDown.left == 1
			DrawSpriteScreenXY(5, screen.xcenter, 152)
		else
			DrawSpriteScreenXY(4, screen.xcenter, 152)
		end if
		if inputDown.right == 1
			DrawSpriteScreenXY(7, screen.xcenter, 152)
		else
			DrawSpriteScreenXY(6, screen.xcenter, 152)
		end if
		break
	end switch
	temp0 = object.value5
	temp0 >>= 1
	temp0 &= 1
	if temp0 == 0
		if object.value10 == 1
			DrawSpriteScreenXY(9, screen.xcenter, 210)
		else
			DrawSpriteScreenXY(8, screen.xcenter, 210)
		end if
		if object.value11 == 1
			DrawSpriteScreenXY(11, screen.xcenter, 210)
		else
			DrawSpriteScreenXY(10, screen.xcenter, 210)
		end if
	else
		if object.value4 == 0
			DrawSpriteScreenXY(9, screen.xcenter, 210)
			DrawSpriteScreenXY(10, screen.xcenter, 210)
		else
			DrawSpriteScreenXY(8, screen.xcenter, 210)
			DrawSpriteScreenXY(11, screen.xcenter, 210)
		end if
	end if
	if object.state < 2
		if object.value3 == 3
			if object.value4 == 0
				DrawSpriteScreenXY(12, screen.xcenter, 210)
			else
				DrawSpriteScreenXY(13, screen.xcenter, 210)
			end if
		end if
	end if
	object.spriteSheet = object.value2
	temp0 = screen.xcenter
	temp0 -= 8
	DrawMenu(MENU_1, screen.xcenter, 84)
end event


event ObjectStartup
	LoadSpriteSheet("LevelSelect/Icons.gif")
	LoadSpriteSheet("LevelSelect/Text.gif")
	SpriteFrame(-56, 0, 32, 14, 185, 124)
	SpriteFrame(-8, 0, 64, 14, 185, 109)
	SpriteFrame(-112, 0, 224, 48, 1, 151)
	SpriteFrame(-112, 0, 224, 48, 1, 200)
	SpriteFrame(-142, -10, 20, 20, 138, 22)
	SpriteFrame(-142, -10, 20, 20, 138, 64)
	SpriteFrame(122, -10, 20, 20, 159, 22)
	SpriteFrame(122, -10, 20, 20, 159, 64)
	SpriteFrame(20, -10, 40, 20, 1, 320)
	SpriteFrame(20, -10, 40, 20, 42, 320)
	SpriteFrame(-60, -10, 40, 20, 1, 341)
	SpriteFrame(-60, -10, 40, 20, 42, 341)
	SpriteFrame(18, -12, 42, 22, 1, 362)
	SpriteFrame(-62, -12, 42, 22, 1, 362)
	foreach (TypeName[2P VS Menu 1], 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
