
import "sample_app.rs" ;


class	SpriteActionRunnable	implements Runnable
{
	public SampleApp	m_app ;

	public SpriteActionRunnable( SampleApp app )
	{
		m_app = app ;
	}

	public void run()
	{
		Sprite	sprGroup = new Sprite() ;

		// 矩形準備
		RectangleSprite	sprRect = new RectangleSprite() ;
		sprRect.setRectangleSize( 512, 512 ) ;
		sprRect.setRectangleColor( 0xff0080ff ) ;
		sprRect.setCenterPosition( 256, 256 ) ;
		sprRect.setPosition( 640, 360 ) ;
		sprGroup.addChild( sprRect ) ;

		// 回転アクション
		SpriteAction	action = new SpriteAction() ;
		action.setRotationTo( sprRect, 360, 1, 1 ) ;
		action.setActionType( SpriteAction.actionLoop ) ;
		action.setDuration( 3000 ) ;
		sprRect.addAction( action ) ;

		// 表示開始とフェードイン
		sprGroup.setTransparency( 0x100 ) ;
		sprGroup.setActionLinearTo( 1000, 0 ) ;
		m_app.getWindow().addChild( sprGroup ) ;
		m_app.waitFor( function() : boolean { return !sprGroup.isAction() ; } ) ;

		// 仮想ジョイスティック ① ボタン押下待ち
		// ※input_filter.xml で 'Z' / Return / マウス左ボタン割り当て
		VirtualInput	input = m_app.getInput() ;
		input.resetJoyButtonPushed( VirtualInput.joyButton1 ) ;
		//
		m_app.waitFor( function() : boolean
			{ return input.getJoyButtonPushed(VirtualInput.joyButton1) >= 1 ; } ) ;

		// フェードアウト
		sprGroup.setActionLinearTo( 1000, 0x100 ) ;
		m_app.waitFor( function() : boolean { return !sprGroup.isAction() ; } ) ;

		m_app.getWindow().detachChild( sprGroup ) ;
		sprGroup.detachChild( sprRect ) ;
		m_app.escapeAppExit() ;
	}
}


int main( String[] args )
{
	SampleApp	app = new SampleApp() ;
	app.initialize( "Sprite Action Sample" ) ;
	try
	{
		app.run( new SpriteActionRunnable(app) ) ;
	}
	finally
	{
		app.release() ;
	}
	return	0 ;
}


