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

public table Tornado_menu_table39
	5, 9, 6, 9, 5, 9, 6, 9, 5, 9, 6, 9, 5, 9, 6, 9
end table


//-------Aliases-------//
private alias object.value0 : face.sprite
private alias object.value1 : face.timer
private alias object.value2 : face.ticker

private alias object.value3 : tornado.xpos
private alias object.value4 : tornado.ypos
private alias object.value5 : tornado.xvel
private alias object.value6 : tornado.yvel

private alias object.value7 : tornado.isKnux

private alias 0x800 : tornado.accel
private alias 0 : tornado.deccel

private alias object[9].value8 : menu.zigzag.yoffset

private alias  0x80000 : tornado.xvelmax
private alias -0x40000 : tornado.xvelmin
private alias  0x10000 : tornado.yvelmax
private alias -0x10000 : tornado.yvelmin


event ObjectMain
	object.frame++
	object.frame &= 3
	
	if face.timer < 2
		GetTableValue(face.sprite, face.ticker, Tornado_menu_table39)
		face.ticker++
		GetTableValue(face.timer, face.ticker, Tornado_menu_table39)
		face.ticker++
		face.ticker &= 15
	else
		face.timer--
	end if
	
	if object[9].state == Menu.firstcontrol
		temp1 = 0
		SetBit(temp1, 0, inputDown.down)
		SetBit(temp1, 1, inputDown.up)
		
		switch temp1
			case 2
				if tornado.yvel > tornado.yvelmin
					tornado.yvel -= tornado.accel
				end if
				break
			case 1
				if tornado.yvel < tornado.yvelmax
					tornado.yvel += tornado.accel
				end if
				break
			default			
				temp0 = tornado.yvel
				Abs(temp0)
				if temp0 < tornado.deccel
					tornado.yvel = 0
				end if
				if tornado.yvel > 0
					tornado.yvel -= tornado.deccel
				else
					if tornado.yvel < 0
						tornado.yvel += tornado.deccel		
					end if
				end if
				break	
		end switch
		
		temp1 = 0
		SetBit(temp1, 0, inputDown.buttonZ)
		SetBit(temp1, 1, inputDown.buttonX)
		
		switch temp1
			case 2
				if tornado.xvel > tornado.xvelmin
					tornado.xvel -= tornado.accel
				end if
				break
			case 1
				if tornado.xvel < tornado.xvelmax
					tornado.xvel += tornado.accel
				end if
				break
			default
				temp0 = tornado.xvel
				Abs(temp0)
				if temp0 < tornado.deccel
					tornado.xvel = 0
				end if
				if tornado.xvel > 0
					tornado.xvel -= tornado.deccel
				else
					if tornado.xvel < 0
						tornado.xvel += tornado.deccel			
					end if
				end if
				break	
		end switch
	end if
	
	tornado.xpos += tornado.xvel
	tornado.ypos += tornado.yvel
	
	temp0 = screen.xsize
	temp0 += 200
	temp0 <<= 16
	temp1 = 200
	temp1 <<= 16
	FlipSign(temp1)
	temp2 = screen.xsize
	temp2 += 350
	temp2 <<= 16
	
	if tornado.xpos > temp0
		tornado.xpos -= temp2
	end if
	if tornado.xpos < temp1
		tornado.xpos += temp2
	end if
	
	temp0 = screen.ysize
	temp0 += 100
	temp0 <<= 16
	temp1 = 100
	temp1 <<= 16
	FlipSign(temp1)
	temp2 = screen.ysize
	temp2 += 175
	temp2 <<= 16
	
	if tornado.ypos > temp0
		tornado.ypos -= temp2
	end if
	if tornado.ypos < temp1
		tornado.ypos += temp2
	end if
	
end event


event ObjectDraw	
	temp0 = tornado.xpos
	temp0 >>= 16
	temp1 = tornado.ypos
	temp1 >>= 16
	
	if tornado.isKnux == 1
		DrawSpriteScreenXY(7, temp0, temp1)
		DrawSpriteScreenXY(8, temp0, temp1)
	else
		DrawSpriteScreenXY(object.frame, temp0, temp1)
		DrawSpriteScreenXY(4, temp0, temp1)
		DrawSpriteScreenXY(face.sprite, temp0, temp1)
	end if
end event

event ObjectStartup
	LoadSpriteSheet("Menus/MainMenuNewCore.gif")
	SpriteFrame(21, 8, 4, 24, 118, 447) //0 Propeller 1
	SpriteFrame(21, 11, 4, 18, 118, 472) //1 Propeller 2
	SpriteFrame(21, 16, 4, 8, 118, 491) //2 Propeller 3
	SpriteFrame(21, 11, 4, 18, 123, 447) //3 Propeller 4
	
	SpriteFrame(-95, -16, 116, 64, 1, 447) //4 Plane Body
	
	SpriteFrame(-50, -8, 24, 16, 1, 430) //5 Sonic Face
	SpriteFrame(-50, -8, 24, 16, 26, 430) //6
	
	SpriteFrame(-24, -13, 48, 24, 51, 422) //7 Knuck
	SpriteFrame(-24, -18, 48, 12, 51, 409) //8 Hat
	
	SpriteFrame(0, 0, 10, 7, 172, 145) //9 0
	SpriteFrame(0, 0, 8, 7, 183, 145) //10 1
	SpriteFrame(0, 0, 9, 7, 192, 145) //11 2
	SpriteFrame(0, 0, 9, 7, 202, 145) //12 3
	SpriteFrame(0, 0, 9, 7, 212, 145) //13 4
	SpriteFrame(0, 0, 9, 7, 222, 145) //14 5
	SpriteFrame(0, 0, 10, 7, 232, 145) //15 6
	SpriteFrame(0, 0, 9, 7, 243, 145) //16 7
	SpriteFrame(0, 0, 9, 7, 253, 145) //17 8
	SpriteFrame(0, 0, 10, 7, 263, 145) //18 9
	SpriteFrame(0, 0, 4, 7, 233, 153) //19 dot

	SpriteFrame(-24, -13, 48, 24, 100, 422) //20 Knuck2
	
	versionone = 	1
	versiontwo = 	2
	versionthree = 	1
	versionsub = 	023 11 17 15
end event

event RSDKDraw
	DrawSprite(0)
end event

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