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

//-------Aliases-------//
private alias 7 : TYPE_CONFIGSCREEN

public alias saveRAM[257] : saved.spindash


public alias saveRAM[260] : saved.spikeBehavior
public alias saveRAM[261] : saved.shieldType
public alias saveRAM[262] : saved.Title
public alias saveRAM[263] : saved.Jumplock
public alias saveRAM[264] : saved.Supermusic
public alias saveRAM[265] : saved.Dropdash
public alias saveRAM[266] : saved.Instashield
public alias saveRAM[267] : saved.Peelout
public alias saveRAM[268] : saved.FlightCancel
public alias saveRAM[269] : saved.PeeloutAnim
public alias saveRAM[270] : saved.Speen
public alias saveRAM[271] : saved.Supercancel
public alias saveRAM[272] : saved.Drowning
public alias saveRAM[273] : saved.Timer
public alias saveRAM[274] : saved.region
public alias saveRAM[275] : saved.elemental
public alias saveRAM[276] : saved.rotate
public alias saveRAM[277] : saved.invincibilityType
public alias saveRAM[278] : saved.speedCap
public alias saveRAM[279] : saved.airSpeedCap
public alias saveRAM[280] : saved.GoGoPlus
public alias saveRAM[281] : saved.lives
public alias saveRAM[282] : saved.bubble

// Static Values

// Tables

event ObjectMain
	switch object.state
	case 0
		object.inkEffect = INK_ALPHA
		object.alpha = 0
		object.drawOrder = 6
		object.state++
		break
	case 1
		temp0 = 198
		temp0 -= object.value1
		temp0 >>= 3
		object.value1 += temp0
		temp0 = 216
		temp0 -= object.value2
		temp0 >>= 3
		object.value2 += temp0
		if object.value1 >= 188
			object.value1 = 188
			object.value2 = 208
			object.state++
		end if
		break
	case 2
		if object.alpha < 256
			object.alpha += 16
		else
			if options.physicalControls == 1
				object.value3 = 1
			else
				object.value3 = 0
			end if
			object.state++
		end if
		break
	case 3
		if options.physicalControls == 1
			if inputPress.up == 1
				object.value3--
				if object.value3 < 1
					object.value3 = 5
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.down == 1
				object.value3++
				if object.value3 > 5
					object.value3 = 1
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			switch object.value3
			case 1
				if inputPress.left == 1
					object.value4--
					if object.value4 < 0
						object.value4 = 4
					end if
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.right == 1
					object.value4++
					if object.value4 > 4
						object.value4 = 0
					end if
					PlaySfx(SfxName[Menu Move], 0)
				end if
				switch object.value4
				case 0
					stage.playerListPos = 0
					stage.player2Enabled = 1
					break
				case 1
					stage.playerListPos = 0
					stage.player2Enabled = 0
					break
				case 2
					stage.playerListPos = 1
					stage.player2Enabled = 0
					break
				case 3
					stage.playerListPos = 2
					stage.player2Enabled = 0
					break
				case 4
					stage.playerListPos = 2
					stage.player2Enabled = 1
					break
				end switch
				break
			case 2
				if inputPress.left == 1
					saved.shieldType--
					if saved.shieldType < 0
						saved.shieldType = 3
					end if
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.right == 1
					saved.shieldType++
					if saved.shieldType > 3
						saved.shieldType = 0
					end if
					PlaySfx(SfxName[Menu Move], 0)
				end if
				break
			case 3
				if inputPress.left == 1
					options.tailsFlight ^= 1
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.right == 1
					options.tailsFlight ^= 1
					PlaySfx(SfxName[Menu Move], 0)
				end if
				break
			case 4
				if inputPress.left == 1
					options.airSpeedCap ^= 1
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if inputPress.right == 1
					options.airSpeedCap ^= 1
					PlaySfx(SfxName[Menu Move], 0)
				end if
				break
			case 5
				if inputPress.buttonA == 1
					object.state = 4
					PlaySfx(SfxName[Menu Select], 0)
				end if
				if inputPress.start == 1
					object.state = 4
					PlaySfx(SfxName[Menu Select], 0)
				end if
				break
			end switch
			if inputPress.buttonB == 1
				object.state = 5
				PlaySfx(SfxName[Menu Back], 0)
			end if
			if object.state == 3
				CheckTouchRect(0, 0, screen.xsize, screen.ysize)
				if checkResult > -1
					options.physicalControls = 0
					object.value3 = 0
				end if
			end if
		else
			CheckTouchRect(0, 0, screen.xsize, screen.ysize)
			if checkResult > -1
				temp0 = screen.xcenter
				temp0 -= 26
				temp1 = temp0
				temp1 += 38
				CheckTouchRect(temp0, 36, temp1, 68)
				if checkResult > -1
					object.value5 = 1
				else
					object.value5 = 0
				end if
				CheckTouchRect(temp0, 76, temp1, 108)
				if checkResult > -1
					object.value6 = 1
				else
					object.value6 = 0
				end if
				temp0 = screen.xcenter
				temp0 += 58
				temp1 = temp0
				temp1 += 38
				CheckTouchRect(temp0, 36, temp1, 68)
				if checkResult > -1
					object.value7 = 1
				else
					object.value7 = 0
				end if
				CheckTouchRect(temp0, 76, temp1, 108)
				if checkResult > -1
					object.value8 = 1
				else
					object.value8 = 0
				end if
				temp0 = screen.xcenter
				temp0 -= 16
				temp1 = temp0
				temp1 += 54
				CheckTouchRect(temp0, 116, temp1, 148)
				if checkResult > -1
					object.value9 = 1
				else
					object.value9 = 0
				end if
				CheckTouchRect(temp0, 156, temp1, 188)
				if checkResult > -1
					object.value10 = 1
				else
					object.value10 = 0
				end if
				temp0 = screen.xcenter
				temp0 += 38
				temp1 = temp0
				temp1 += 54
				CheckTouchRect(temp0, 116, temp1, 148)
				if checkResult > -1
					object.value11 = 1
				else
					object.value11 = 0
				end if
				CheckTouchRect(temp0, 156, temp1, 188)
				if checkResult > -1
					object.value12 = 1
				else
					object.value12 = 0
				end if
				temp0 = screen.xcenter
				temp0 -= 27
				temp1 = temp0
				temp1 += 54
				CheckTouchRect(temp0, 192, temp1, 218)
				if checkResult > -1
					object.value13 = 1
				else
					object.value13 = 0
				end if
			else
				if object.value5 == 1
					object.value5 = 0
					object.value4--
					if object.value4 < 0
						object.value4 = 4
					end if
					switch object.value4
					case 0
						stage.playerListPos = 0
						stage.player2Enabled = 1
						break
					case 1
						stage.playerListPos = 0
						stage.player2Enabled = 0
						break
					case 2
						stage.playerListPos = 1
						stage.player2Enabled = 0
						break
					case 3
						stage.playerListPos = 2
						stage.player2Enabled = 0
						break
					case 4
						stage.playerListPos = 2
						stage.player2Enabled = 1
						break
					end switch
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value6 == 1
					object.value6 = 0
					saved.shieldType--
					if saved.shieldType < 0
						saved.shieldType = 3
					end if
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value7 == 1
					object.value7 = 0
					object.value4++
					if object.value4 > 4
						object.value4 = 0
					end if
					switch object.value4
					case 0
						stage.playerListPos = 0
						stage.player2Enabled = 1
						break
					case 1
						stage.playerListPos = 0
						stage.player2Enabled = 0
						break
					case 2
						stage.playerListPos = 1
						stage.player2Enabled = 0
						break
					case 3
						stage.playerListPos = 2
						stage.player2Enabled = 0
						break
					case 4
						stage.playerListPos = 2
						stage.player2Enabled = 1
						break
					end switch
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value8 == 1
					object.value8 = 0
					saved.shieldType++
					if saved.shieldType > 3
						saved.shieldType = 0
					end if
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value9 == 1
					object.value9 = 0
					options.tailsFlight = 1
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value11 == 1
					object.value11 = 0
					options.tailsFlight = 0
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value10 == 1
					object.value10 = 0
					options.airSpeedCap = 1
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value12 == 1
					object.value12 = 0
					options.airSpeedCap = 0
					PlaySfx(SfxName[Menu Move], 0)
				end if
				if object.value13 == 1
					object.value13 = 0
					object.state = 4
					PlaySfx(SfxName[Menu Select], 0)
				end if
			end if
			if inputPress.buttonB == 1
				object.state = 5
				PlaySfx(SfxName[Menu Back], 0)
			end if
			if object.state == 3
				if inputPress.up == 1
					options.physicalControls = 1
					object.value3 = 5
				end if
				if inputPress.down == 1
					options.physicalControls = 1
					object.value3 = 1
				end if
			end if
		end if
		break
	case 4
		if object.value0 < 32
			object.value0++
		else
			object.value0 = 0
			object.state++
		end if
		break
	case 5
		if object.alpha > 0
			object.alpha -= 16
		else
			object.state++
		end if
		break
	case 6
		temp0 = 0
		temp0 -= object.value1
		temp0 >>= 3
		object.value1 += temp0
		temp0 = 0
		temp0 -= object.value2
		temp0 >>= 3
		object.value2 += temp0
		if object.value1 < 4
			object.value1 = 0
			object.value2 = 0
			MenuControl_value2 = 0
			ResetObjectEntity(object.entityPos, TypeName[Blank Object], 0, 0, 0)
		end if
		break
	end switch
end event


event ObjectDraw
	temp0 = object.value1
	temp0 >>= 1
	FlipSign(temp0)
	temp0 += screen.xcenter
	temp1 = object.value2
	temp1 >>= 1
	FlipSign(temp1)
	temp1 += screen.ycenter
	DrawRect(temp0, temp1, object.value1, object.value2, 0, 0, 96, 255)
	temp0 += 2
	temp1 += 2
	temp2 = object.value1
	temp2 -= 4
	temp3 = object.value2
	temp3 -= 4
	DrawRect(temp0, temp1, temp2, temp3, 0, 32, 192, 255)
	DrawSpriteScreenFX(0, FX_INK, screen.xcenter, 25)
	if object.value3 == 1
		DrawSpriteScreenFX(2, FX_INK, screen.xcenter, 49)
	else
		DrawSpriteScreenFX(1, FX_INK, screen.xcenter, 49)
	end if
	if object.value3 == 2
		DrawSpriteScreenFX(4, FX_INK, screen.xcenter, 89)
	else
		DrawSpriteScreenFX(3, FX_INK, screen.xcenter, 89)
	end if
	if object.value3 == 3
		DrawSpriteScreenFX(6, FX_INK, screen.xcenter, 129)
	else
		DrawSpriteScreenFX(5, FX_INK, screen.xcenter, 129)
	end if
	if object.value3 == 4
		DrawSpriteScreenFX(8, FX_INK, screen.xcenter, 169)
	else
		DrawSpriteScreenFX(7, FX_INK, screen.xcenter, 169)
	end if
	if object.value5 == 1
		DrawSpriteScreenFX(10, FX_INK, screen.xcenter, 43)
	else
		DrawSpriteScreenFX(9, FX_INK, screen.xcenter, 43)
	end if
	if object.value7 == 1
		DrawSpriteScreenFX(12, FX_INK, screen.xcenter, 43)
	else
		DrawSpriteScreenFX(11, FX_INK, screen.xcenter, 43)
	end if
	if object.value6 == 1
		DrawSpriteScreenFX(10, FX_INK, screen.xcenter, 83)
	else
		DrawSpriteScreenFX(9, FX_INK, screen.xcenter, 83)
	end if
	if object.value8 == 1
		DrawSpriteScreenFX(12, FX_INK, screen.xcenter, 83)
	else
		DrawSpriteScreenFX(11, FX_INK, screen.xcenter, 83)
	end if
	if object.value9 == 1
		DrawSpriteScreenFX(14, FX_INK, screen.xcenter, 123)
	else
		DrawSpriteScreenFX(13, FX_INK, screen.xcenter, 123)
	end if
	if object.value11 == 1
		DrawSpriteScreenFX(16, FX_INK, screen.xcenter, 123)
	else
		DrawSpriteScreenFX(15, FX_INK, screen.xcenter, 123)
	end if
	if options.tailsFlight == 1
		DrawSpriteScreenFX(19, FX_INK, screen.xcenter, 123)
	else
		DrawSpriteScreenFX(20, FX_INK, screen.xcenter, 123)
	end if
	if object.value10 == 1
		DrawSpriteScreenFX(14, FX_INK, screen.xcenter, 163)
	else
		DrawSpriteScreenFX(13, FX_INK, screen.xcenter, 163)
	end if
	if object.value12 == 1
		DrawSpriteScreenFX(16, FX_INK, screen.xcenter, 163)
	else
		DrawSpriteScreenFX(15, FX_INK, screen.xcenter, 163)
	end if
	if options.airSpeedCap == 1
		DrawSpriteScreenFX(19, FX_INK, screen.xcenter, 163)
	else
		DrawSpriteScreenFX(20, FX_INK, screen.xcenter, 163)
	end if
	temp0 = object.value0
	temp0 >>= 1
	temp0 &= 1
	temp0 += 17
	if object.value13 == 1
		temp0 = 18
	end if
	DrawSpriteScreenFX(temp0, FX_INK, screen.xcenter, 195)
	if options.physicalControls == 1
		if object.value3 == 5
			if object.state != 4
				DrawSpriteScreenFX(21, FX_INK, screen.xcenter, 195)
			end if
		end if
	end if
	switch object.value4
	case 0
		DrawSpriteScreenFX(22, FX_INK, screen.xcenter, 41)
		DrawSpriteScreenFX(23, FX_INK, screen.xcenter, 41)
		break
	case 1
		DrawSpriteScreenFX(24, FX_INK, screen.xcenter, 41)
		break
	case 2
		DrawSpriteScreenFX(25, FX_INK, screen.xcenter, 41)
		break
	case 3
		DrawSpriteScreenFX(26, FX_INK, screen.xcenter, 41)
		break
	case 4
		DrawSpriteScreenFX(27, FX_INK, screen.xcenter, 41)
		DrawSpriteScreenFX(28, FX_INK, screen.xcenter, 41)
		break
	end switch
	switch saved.shieldType
	case 0
		DrawSpriteScreenFX(29, FX_INK, screen.xcenter, 86)
		break
	case 1
		DrawSpriteScreenFX(30, FX_INK, screen.xcenter, 78)
		break
	case 2
		DrawSpriteScreenFX(31, FX_INK, screen.xcenter, 86)
		break
	case 3
		DrawSpriteScreenFX(30, FX_INK, screen.xcenter, 78)
		DrawSpriteScreenFX(32, FX_INK, screen.xcenter, 78)
		break
		break
	end switch
end event


event ObjectStartup
	LoadSpriteSheet("LevelSelect/Icons.gif")
	SpriteFrame(-52, 0, 104, 7, 103, 430)
	SpriteFrame(-82, 0, 48, 7, 158, 454)
	SpriteFrame(-82, 0, 48, 7, 207, 454)
	SpriteFrame(-82, 0, 40, 7, 158, 446)
	SpriteFrame(-82, 0, 40, 7, 207, 446)
	SpriteFrame(-82, 0, 48, 7, 158, 438)
	SpriteFrame(-82, 0, 48, 7, 207, 438)
	SpriteFrame(-82, 0, 56, 7, 46, 378)
	SpriteFrame(-82, 0, 56, 7, 199, 462)
	SpriteFrame(-16, 0, 20, 20, 138, 22)
	SpriteFrame(-16, 0, 20, 20, 138, 64)
	SpriteFrame(64, 0, 20, 20, 159, 22)
	SpriteFrame(64, 0, 20, 20, 159, 64)
	SpriteFrame(-8, 0, 40, 20, 1, 411)
	SpriteFrame(-8, 0, 40, 20, 42, 411)
	SpriteFrame(44, 0, 40, 20, 1, 432)
	SpriteFrame(44, 0, 40, 20, 42, 432)
	SpriteFrame(-20, 0, 40, 20, 1, 320)
	SpriteFrame(-20, 0, 40, 20, 42, 320)
	SpriteFrame(-10, -2, 42, 22, 1, 362)
	SpriteFrame(42, -2, 42, 22, 1, 362)
	SpriteFrame(-22, -2, 42, 22, 1, 362)
	SpriteFrame(16, 0, 16, 23, 46, 386)
	SpriteFrame(36, 0, 16, 23, 63, 386)
	SpriteFrame(26, 0, 16, 23, 46, 386)
	SpriteFrame(26, 0, 16, 23, 63, 386)
	SpriteFrame(26, 0, 16, 23, 80, 386)
	SpriteFrame(16, 0, 16, 23, 80, 386)
	SpriteFrame(36, 0, 16, 23, 63, 386)
	SpriteFrame(26, 0, 16, 14, 207, 314)
	SpriteFrame(17, 0, 34, 30, 207, 314)
	SpriteFrame(26, 0, 16, 14, 228, 299)
	SpriteFrame(17, 0, 16, 14, 228, 299)
end event

event RSDKDraw
	DrawSprite(0)
end event

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