// ----------------------------------
// 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 6 : TYPE_TITLECARD


// Static Values
public value TitleCard_value23 = 0;

// Tables

event ObjectMain
	switch object.state
	case 0
		object.alpha = 255
		object.value1 = 720
		object.value2 -= 720
		object.value4 = 432
		object.value5 = -320
		switch object.propertyValue
		case 0
			object.value6 = stage.actNum
			TitleCard_value23 = 0
			break
		case 1
			object.value6 = 1
			TitleCard_value23 = 0
			break
		case 2
			object.value6 = 2
			TitleCard_value23 = 0
			break
		case 3
			object.value6 = 3
			TitleCard_value23 = 0
			break
		default
			TitleCard_value23 = 1
		end switch
		if options.vsMode == 1
			object.value7 = 0
			object.value8 = 1
		else
			object.value7 = 1
			object.value8 = 0
		end if
		if credits.screen > 0
			object.state = 7
			object.value0 = 272
			stage.state = STAGE_RUNNING
			SetScreenFade(0, 0, 0, 255)
		else
			object.state++
		end if
		break
	case 1
		if object.value0 < 30
			object.value0++
		else
			if options.vsMode == 1
				CallNativeFunction2(SendEntity, object.entityPos, 0)
				if ReceiveValue == -1
					object.value7 = 1
				else
					CallNativeFunction2(ReceiveEntity, 0x400, 1)
					object.value7 = object[1024].value8
					ResetObjectEntity(0x400, TypeName[Blank Object], 0, 0, 0)
				end if
			end if
			if object.value7 == 1
				object.value0 = 0
				PlayMusic(0)	
				object.state++
			end if
		end if
		break
	case 2
		if options.vsMode == 1
			CallNativeFunction2(SendEntity, object.entityPos, 0)
		end if
		if object.value3 < 240
			object.value3 += 16
		end if
		if object.value4 > 0
			object.value4 -= 16
			object.value5 += 16
		end if
		if object.value1 > 0
			object.value1 -= 16
			object.value2 += 16
		else
			object.state++
		end if
		break
	case 3
		if object.value0 < 60
			if options.vsMode == 1
				CallNativeFunction2(SendEntity, object.entityPos, 0)
				CallNativeFunction2(ReceiveEntity, 0x400, 1)
				ResetObjectEntity(0x400, TypeName[Blank Object], 0, 0, 0)
			end if
			object.value0++
		else
			object.value0 = 0
			object.state++
		end if
		break
	case 4
		if object.value5 > -48
			object.value5 -= 32
		else
			if object.value4 < 424
				object.value4 += 32
				if options.vsMode == 1
					CallNativeFunction2(ReceiveEntity, 0x400, 1)
					ResetObjectEntity(0x400, TypeName[Blank Object], 0, 0, 0)
				end if
			else
				if options.vsMode == 1
					stage.state = 4
				else
					stage.state = STAGE_RUNNING
				end if
				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
		end if
		break
	case 5
		if object.value3 > 0
			object.value3 -= 32
		else
			currentPlayer = 0
			while currentPlayer < playerCount
				object[currentPlayer].controlMode = 0
				currentPlayer++
			loop
			if options.attractMode == 0
				stage.pauseEnabled = 1
			end if
			object.priority = PRIORITY_ACTIVE
			object.state++
		end if
		break
	case 6
		if object.value0 < 48
			object.value0++
		else
			object.value0 = 0
			stage.timeEnabled = 1
			CheckEqual(SuperTimeAttack, 1)
			temp0 = checkResult
			CheckEqual(options.gameMode, 2)
			temp0 &= checkResult
			CheckEqual(stage.playerListPos, 0)
			temp0 &= checkResult
			CheckEqual(stage.player2Enabled, 0)
			temp0 &= checkResult
			CheckEqual(stage.activeList, REGULAR_STAGE)
			temp0 &= checkResult
			if temp0 == 1			
				SuperTimeAttack = 2
			else
				SuperTimeAttack = 0
			end if
			object.state = 9
		end if
		break
	case 7
		if object.value0 > 0
			object.value0 -= 16
			SetScreenFade(0, 0, 0, object.value0)
		else
			currentPlayer = 0
			while currentPlayer < playerCount
				object[currentPlayer].controlMode = 0
				currentPlayer++
			loop
			ResetObjectEntity(object.entityPos, TypeName[Blank Object], 0, 0, 0)
		end if
		break
	case 8
		if object.value0 < 300
			object.value0 += 5
			if credits.screen == 0
				music.volume -= 2
			end if
		else
			stage.activeList = PRESENTATION_STAGE
			if credits.screen > 0
				stage.listPos = 2
			else
				stage.listPos = 0
				StopMusic()
			end if
			LoadStage()
		end if
		SetScreenFade(0, 0, 0, object.value0)
		break
	case 9
		object.value1 += 32
		object.value2 -= 32
		if object.value0 < 20
			object.value0++
		else
			object.value0 = 0		
			object.type = TypeName[Blank Object]
		end if
		break	
	case 10
		if object.value0 < 300
			object.value0 += 5
			if credits.screen == 0
				music.volume -= 2
			end if
		else
			if credits.screen > 0
				stage.activeList = PRESENTATION_STAGE
				stage.listPos = 2
			else
				StopMusic()
			end if
			LoadStage()
		end if
		SetScreenFade(0, 0, 0, object.value0)
		break
	case 11
	end switch
end event


event ObjectDraw	
		temp2 = screen.xcenter
		temp2 -= 160
		temp2 >>= 1
		switch object.state
		case 0
		case 1
		case 2
		case 3
			SetActivePalette(0, 0, screen.ysize)
			if stage.playerListPos == 2
				DrawRect(0, 0, screen.xsize, object.value3, 0, 145, 0, 255)	
			else
				DrawRect(0, 0, screen.xsize, object.value3, color1, color2, color6, 255)
			end if		
			DrawRect(0, object.value3, screen.xsize, screen.ysize, 0, 0, 0, 255)
			if options.vsMode == 1
				if object.state == 1
					DrawSpriteScreenXY(32, screen.xsize, screen.ysize)
				end if
			end if
			DrawRect(object.value4, 168, screen.xsize, color3, color7, color7, 0, 255)
			temp0 = object.value4
			temp0 += screen.xcenter
			DrawSpriteScreenXY(31, temp0, 176)
			DrawRect(0, 0, object.value5, screen.ysize, color7, 0, 0, 255)
			DrawSpriteScreenXY(26, object.value5, 0)
			temp0 = screen.xcenter
			temp0 += temp2
			temp0 += 128
			temp0 += object.value1
			DrawActName(0, temp0, 64, 0, 0, 16, 0)
			temp0 = screen.xcenter
			temp0 += temp2
			temp0 += 41
			temp0 += object.value2
			DrawSpriteScreenXY(27, temp0, 88)
			if object.value6 > 0
				temp1 = 27
				temp1 += object.value6
				if temp1 > 30
					temp1 = 30
				end if
				DrawSpriteScreenXY(temp1, temp0, 88)
				DrawSpriteScreenXY(33, temp0, 107)
			end if
			break
		case 4
		case 5
			SetActivePalette(0, 0, screen.ysize)
			if stage.playerListPos == 2
				DrawRect(0, 0, screen.xsize, object.value3, 0, 145, 0, 255)	
			else
				DrawRect(0, 0, screen.xsize, object.value3, color1, color2, color6, 255)
			end if		
			DrawRect(object.value4, 168, screen.xsize, color3, color7, color7, 0, 255)
			temp0 = object.value4
			temp0 += screen.xcenter
			DrawSpriteScreenXY(31, temp0, 176)
			DrawRect(0, 0, object.value5, screen.ysize, color7, 0, 0, 255)
			DrawSpriteScreenXY(26, object.value5, 0)
			temp0 = screen.xcenter
			temp0 += temp2
			temp0 += 128
			temp0 += object.value1
			DrawActName(0, temp0, 64, 0, 0, 16, 0)
			temp0 = screen.xcenter
			temp0 += temp2
			temp0 += 41
			temp0 += object.value2
			DrawSpriteScreenXY(27, temp0, 88)
			if object.value6 > 0
				temp1 = 27
				temp1 += object.value6
				if temp1 > 30
					temp1 = 30
				end if
				DrawSpriteScreenXY(temp1, temp0, 88)
				DrawSpriteScreenXY(33, temp0, 107)
			end if
			break
		case 6
		case 9
			SetActivePalette(0, 0, screen.ysize)
			temp0 = screen.xcenter
			temp0 += temp2
			temp0 += 128
			temp0 += object.value1
			DrawActName(0, temp0, 64, 0, 0, 16, 0)
			temp0 = screen.xcenter
			temp0 += temp2
			temp0 += 41
			temp0 += object.value2
			DrawSpriteScreenXY(27, temp0, 88)
			if object.value6 > 0
				temp1 = 27
				temp1 += object.value6
				if temp1 > 30
					temp1 = 30
				end if
				DrawSpriteScreenXY(temp1, temp0, 88)
				DrawSpriteScreenXY(33, temp0, 107)
			end if
			break
		end switch
end event


event ObjectStartup
	stage.pauseEnabled = 0
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(0, 0, 15, 16, 37, 79)
	SpriteFrame(0, 0, 16, 16, 53, 79)
	SpriteFrame(0, 0, 16, 16, 70, 79)
	SpriteFrame(0, 0, 16, 16, 87, 79)
	SpriteFrame(0, 0, 15, 16, 104, 79)
	SpriteFrame(0, 0, 15, 16, 120, 79)
	SpriteFrame(0, 0, 16, 16, 136, 79)
	SpriteFrame(0, 0, 16, 16, 153, 79)
	SpriteFrame(0, 0, 8, 16, 170, 79)
	SpriteFrame(0, 0, 16, 16, 179, 79)
	SpriteFrame(0, 0, 16, 16, 196, 79)
	SpriteFrame(0, 0, 16, 16, 213, 79)
	SpriteFrame(0, 0, 23, 16, 43, 96)
	SpriteFrame(0, 0, 16, 16, 67, 96)
	SpriteFrame(0, 0, 16, 16, 84, 96)
	SpriteFrame(0, 0, 16, 16, 101, 96)
	SpriteFrame(0, 0, 16, 16, 118, 96)
	SpriteFrame(0, 0, 16, 16, 135, 96)
	SpriteFrame(0, 0, 16, 16, 152, 96)
	SpriteFrame(0, 0, 16, 16, 169, 96)
	SpriteFrame(0, 0, 16, 16, 186, 96)
	SpriteFrame(0, 0, 16, 16, 203, 96)
	SpriteFrame(0, 0, 22, 16, 220, 96)
	SpriteFrame(0, 0, 15, 16, 43, 113)
	SpriteFrame(0, 0, 16, 16, 59, 113)
	SpriteFrame(0, 0, 16, 16, 76, 113)
	SpriteFrame(0, 0, 8, 256, 248, 0)
	SpriteFrame(0, 0, 62, 16, 83, 1)
	SpriteFrame(63, 0, 16, 29, 42, 1) // 28 1
	SpriteFrame(63, 0, 23, 29, 59, 1)
	SpriteFrame(63, 0, 23, 32, 42, 31)
	SpriteFrame(0, 0, 140, 5, 37, 73)
	if vs.playerID == 0
		SpriteFrame(-160, -16, 136, 7, 110, 172)
	else
		SpriteFrame(-160, -16, 136, 7, 110, 164)
	end if
	SpriteFrame(34, 0, 28, 10, 178, 69) //33 ACT	
	if options.vsMode == 1
		CallNativeFunction2(ReceiveEntity, 0x400, 1)
		ResetObjectEntity(0x400, TypeName[Blank Object], 0, 0, 0)
	end if
	arrayPos0 = 32
	while arrayPos0 < 0x420
		if object[arrayPos0].type == TypeName[Title Card]
			object[12].propertyValue = object[arrayPos0].propertyValue
			object[12].type = TypeName[Title Card]
			object[12].priority = PRIORITY_ACTIVE_PAUSED
			object[12].alpha = 255
			object[12].drawOrder = 6
			stage.state = STAGE_PAUSED
			object[arrayPos0].type = TypeName[Blank Object]
			if object[12].propertyValue == 5
				CheckCurrentStageFolder("ZoneM")
				if checkResult == 0
					stage.activeList = PRESENTATION_STAGE
					stage.listPos = 0
					LoadStage()
				end if
			end if
		end if
		arrayPos0++
	loop
end event

event RSDKDraw
	DrawSprite(0)
end event

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