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

//-------Aliases-------//
private alias 25 : TYPE_TITLECARD
private alias 56 : nick.numberxoffset

private alias object.value14 : end.highlight

// Static Values

// Tables

event ObjectMain
	switch object.state
	case 0
		stage.pauseEnabled = 0
		object.alpha = 255
		object.value1 = screen.xcenter
		object.value1 += 128
		object.value2 = screen.xcenter
		FlipSign(object.value2)
		object.value2 -= 160
		object.value3 = screen.xcenter
		FlipSign(object.value3)
		object.value3 -= 96
		object.value4 = screen.xcenter
		object.value4 += 32
		object.state++
		player.lives = 3
		break
	case 1
		if object.value0 < 30
			object.value0++
		else
			object.value0 = 0
			PlayMusic(0)
			object.state++
		end if
		break
	case 2
		if object.value1 > 0
			object.value1 -= 16
			if object.value1 < 0
				object.value1 = 0
			end if
		end if
		if object.value2 < 0
			object.value2 += 16
			if object.value2 > 0
				object.value2 = 0
			end if
		else
			if object.value3 < 0
				object.value3 += 16
				if object.value3 > 0
					object.value3 = 0
				end if
			else
				if object.value4 > 0
					object.value4 -= 16
					if object.value4 < 0
						object.value4 = 0
					end if
				else
					object.state++
				end if
			end if
		end if
		break
	case 3
		if object.value0 < 60
			object.value0++
		else
			object.value0 = 0
			object.alpha = 248
			stage.state = STAGE_RUNNING
			
			currentPlayer = 0
			while currentPlayer < playerCount
				object[currentPlayer].controlMode = -1
				object[currentPlayer].up = 0
				object[currentPlayer].down = 0
				object[currentPlayer].left = 0
				object[currentPlayer].right = 0
				object[currentPlayer].jumpPress = 0
				object[currentPlayer].jumpHold = 0
				object[currentPlayer].value1 = 0
				currentPlayer++
			loop
			object.state++
		end if
		break
	case 4
		if object.alpha > 0
			object.alpha -= 8
		else
			object.state++
			currentPlayer = 0
			while currentPlayer < playerCount
				object[currentPlayer].controlMode = 0
				currentPlayer++
			loop
			object.priority = PRIORITY_ACTIVE
			stage.pauseEnabled = 1
		end if
		break
	case 5
		if object.value0 < 60
			object.value0++
		else
			object.value0 = 0
			stage.timeEnabled = 1
			object.state++
		end if
		break
	case 6
		object.value1 += 32
		object.value4 += 32
		object.value2 -= 32
		object.value3 -= 32
		if object.value0 < 20
			object.value0++
		else
			object.value0 = 0
			object.type = TypeName[Blank Object]
		end if
		break
	case 7		
		
		object.value1 = screen.xcenter
		object.value1 -= 264
		object.value2 = screen.xcenter
		object.value2 += 200
		object.value3 = screen.xcenter
		object.value3 -= 464
		object.value4 = screen.xcenter
		object.value4 += 400		
		
		object.value9 = 0
		
		object.state++
		break
	case 8		
		if object.value9 < 50
			object.value9 += 4
			music.volume -= 2
		else
			object.value10 = object[0].value0
			if object.value10 > saveRAM[620]
				saveRAM[620] = object.value10
				WriteSaveRAM()
			end if
			if object.value10 < 25
				PlayMusic(5)
			else
				PlayMusic(1)
			end if
			object.value9 = 0
			object.state++
		end if
		break
	case 9
		temp0 = screen.xcenter
		temp0 -= 72
		if object.value1 < temp0
			object.value1 += 16
			if object.value1 > temp0
				object.value1 = temp0
			end if
		end if
		if object.value3 < temp0
			object.value3 += 16
			if object.value3 > temp0
				object.value3 = temp0
			end if
		end if
		temp0 += 80
		if object.value2 > temp0
			object.value2 -= 16
			if object.value2 < temp0
				object.value2 = temp0
			end if
		end if
		if object.value4 > temp0
			object.value4 -= 16
			if object.value4 < temp0
				object.value4 = temp0
			end if
		end if
		
		temp0 = inputPress.left
		temp0 |= inputPress.right
		if temp0 == 1
			PlaySfx(SfxName[Score Add], 0)
			end.highlight ^= 1
		end if
		temp0 = inputPress.start
		temp0 |= inputPress.buttonA
		if temp0 == 1
			object.state++
			object.value9 = 0
			PlaySfx(SfxName[Star Post], 0)
		end if
		break
	case 10
		if object.value9 < 288
			object.value9 += 4
			music.volume -= 2
		else
			options.attractMode = 0
			player.lives = 3
			player.continues = 0
			player.score = 0
			player.scoreBonus = 0xC350
			starPostID = 0
			specialStage.listPos = 0
			specialStage.emeralds = 0
			specialStage.nextZone = 0
			if end.highlight == 1
				stage.activeList = PRESENTATION_STAGE
				stage.listPos = 6
			end if
			LoadStage()
		end if
		SetScreenFade(0, 0, 0, object.value9)
		break	
	end switch
end event


event ObjectDraw
	if object.state < 7
		SetActivePalette(0, 0, screen.ysize)
		DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, object.alpha)
	end if
	if object.state > 8
		DrawSpriteScreenXY(0, object.value1, 64)
		DrawSpriteScreenXY(1, object.value2, 64)
		DrawSpriteScreenXY(2, object.value3, 99)
		DrawNumbers(3, object.value4, 112, object.value10, 3, 15, 0)
		switch end.highlight
			case 0 //to restart
				DrawSpriteScreenXY(15, object.value1, 144)
				DrawSpriteScreenXY(14, object.value2, 144)
				break
			case 1 //to exit
				DrawSpriteScreenXY(13, object.value1, 144)
				DrawSpriteScreenXY(16, object.value2, 144)
				break
		end switch
	end if
end event


event ObjectStartup
	if stage.actNum == 3
		foreach (TypeName[Title Card], arrayPos0, ALL_ENTITIES)
			object[arrayPos0].type = TypeName[Blank Title Card]
		next
	end if
	LoadSpriteSheet("Global/Over.gif")
	SpriteFrame(0, 0, 56, 16, 1, 1) //Time
	SpriteFrame(0, 0, 64, 16, 58, 1) //Over
	SpriteFrame(-8, 0, 68, 16, 1, 18) //Rings
	
	//Numbers
	SpriteFrame(nick.numberxoffset, 0, 14, 16, 70, 18)
	SpriteFrame(nick.numberxoffset, 0, 11, 16, 85, 18)
	SpriteFrame(nick.numberxoffset, 0, 11, 16, 97, 18)
	SpriteFrame(nick.numberxoffset, 0, 11, 16, 109, 18)
	SpriteFrame(nick.numberxoffset, 0, 11, 16, 1, 35)
	SpriteFrame(nick.numberxoffset, 0, 12, 16, 13, 35)
	SpriteFrame(nick.numberxoffset, 0, 12, 16, 26, 35)
	SpriteFrame(nick.numberxoffset, 0, 11, 16, 39, 35)
	SpriteFrame(nick.numberxoffset, 0, 12, 16, 51, 35)
	SpriteFrame(nick.numberxoffset, 0, 12, 16, 64, 35)
	
	//End Menu
	SpriteFrame(0, 0, 57, 11, 1, 52) //13 Restart
	SpriteFrame(24, 0, 30, 11, 59, 52) //14 Exit
	SpriteFrame(0, 0, 57, 14, 1, 64) //15 Restart HL
	SpriteFrame(24, 0, 30, 14, 59, 64) //16 Exit HL
end event

event RSDKDraw
	DrawSprite(0)
end event

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