X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fblocks%2Fblocks-example.cpp;h=901828350dbfcfa1b90100e3f50162da64ee317c;hb=1a473d5189ca7e7d55aca3a64a8a4ff2dc3b6c67;hp=9aa0894f83b1bfc71557977fe36737c7e1a29ffc;hpb=3429cdb9f1fc3864dff4505bf42012e2f09fb6f4;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/blocks/blocks-example.cpp b/examples/blocks/blocks-example.cpp index 9aa0894..9018283 100644 --- a/examples/blocks/blocks-example.cpp +++ b/examples/blocks/blocks-example.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ #include #include +#include #include "shared/view.h" using namespace Dali; @@ -31,17 +32,17 @@ using namespace DemoHelper; namespace { -const char* BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-blocks.jpg" ); -const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" ); +const char* BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-blocks.jpg" ); +const char* TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" ); const char* APPLICATION_TITLE( "DALi Blocks" ); -const char* BALL_IMAGE = DALI_IMAGE_DIR "blocks-ball.png"; -const char* PADDLE_IMAGE = DALI_IMAGE_DIR "blocks-paddle.png"; -const char* PADDLE_HANDLE_IMAGE = DALI_IMAGE_DIR "blocks-paddle-handle.png"; +const char* BALL_IMAGE = DEMO_IMAGE_DIR "blocks-ball.png"; +const char* PADDLE_IMAGE = DEMO_IMAGE_DIR "blocks-paddle.png"; +const char* PADDLE_HANDLE_IMAGE = DEMO_IMAGE_DIR "blocks-paddle-handle.png"; -const char* BRICK_IMAGE_PATH[] = { DALI_IMAGE_DIR "blocks-brick-1.png", - DALI_IMAGE_DIR "blocks-brick-2.png", - DALI_IMAGE_DIR "blocks-brick-3.png", - DALI_IMAGE_DIR "blocks-brick-4.png" }; +const char* BRICK_IMAGE_PATH[] = { DEMO_IMAGE_DIR "blocks-brick-1.png", + DEMO_IMAGE_DIR "blocks-brick-2.png", + DEMO_IMAGE_DIR "blocks-brick-3.png", + DEMO_IMAGE_DIR "blocks-brick-4.png" }; const int TOTAL_BRICKS(4); ///< Total bricks in game. const Vector3 ICON_SIZE(100.0f, 100.0f, 0.0f); @@ -56,15 +57,15 @@ const Vector3 PADDLE_COLLISION_MARGIN(0.0f, 0.0f, 0.0f); ///< const Vector3 BRICK_COLLISION_MARGIN(0.0f, 0.0f, 0.0f); ///< Collision margin for ball-brick detection. const Vector3 INITIAL_BALL_DIRECTION(1.0f, 1.0f, 0.0f); ///< Initial ball direction. -const std::string WOBBLE_PROPERTY_NAME("wobble-property"); ///< Wobble property name. -const std::string COLLISION_PROPERTY_NAME("collision-property"); ///< Collision property name. +const std::string WOBBLE_PROPERTY_NAME("wobbleProperty"); ///< Wobble property name. +const std::string COLLISION_PROPERTY_NAME("collisionProperty"); ///< Collision property name. -const Vector2 BRICK_SIZE(0.1f, 0.05f ); ///< Brick size relative to width of stage. -const Vector2 BALL_SIZE( 0.05f, 0.05f ); ///< Ball size relative to width of stage. -const Vector2 PADDLE_SIZE( 0.2f, 0.05f ); ///< Paddle size relative to width of stage. -const Vector2 PADDLE_HANDLE_SIZE( 0.3f, 0.3f ); ///< Paddle handle size relative to width of stage. -const Vector2 BALL_START_POSITION(0.5f, 0.8f); ///< Ball start position relative to stage size. -const Vector2 PADDLE_START_POSITION(0.5f, 0.9f); ///< Paddler start position relative to stage size. +const Vector2 BRICK_SIZE(0.1f, 0.05f ); ///< Brick size relative to width of window. +const Vector2 BALL_SIZE( 0.05f, 0.05f ); ///< Ball size relative to width of window. +const Vector2 PADDLE_SIZE( 0.2f, 0.05f ); ///< Paddle size relative to width of window. +const Vector2 PADDLE_HANDLE_SIZE( 0.3f, 0.3f ); ///< Paddle handle size relative to width of window. +const Vector2 BALL_START_POSITION(0.5f, 0.8f); ///< Ball start position relative to window size. +const Vector2 PADDLE_START_POSITION(0.5f, 0.9f); ///< Paddler start position relative to window size. const Vector2 PADDLE_HIT_MARGIN( 0.1, 0.15f ); ///< Extra hit Area for Paddle when touching. const int TOTAL_LIVES(3); ///< Total lives in game before it's game over! @@ -176,8 +177,8 @@ struct WobbleConstraint * * @param[in] deviation The max. deviation of wobble effect in degrees. */ - WobbleConstraint(float deviation) - : mDeviation(Radian(Degree(deviation))) + WobbleConstraint( Degree deviation ) + : mDeviation( deviation ) { } @@ -196,7 +197,7 @@ struct WobbleConstraint current = Quaternion(mDeviation * f, Vector3::ZAXIS); } - const float mDeviation; ///< Deviation factor in radians. + Radian mDeviation; ///< Deviation factor in radians. }; } // unnamed namespace @@ -214,7 +215,29 @@ public: */ ExampleController( Application& application ) : mApplication( application ), - mView() + mView(), + mContentLayer(), + mBall(), + mBallStartPosition(), + mBallVelocity(), + mBallAnimation(), + mPaddle(), + mPaddleImage(), + mPaddleHandle(), + mPaddleHitMargin(), + mWobbleAnimation(), + mWobbleProperty( Property::INVALID_INDEX ), + mLevelContainer(), + mBrickImageMap(), + mDragAnimation(), + mDragActor(), + mRelativeDragPoint(), + mDestroyAnimationMap(), + mPaddleFullSize(), + mLevel( 0 ), + mLives( TOTAL_LIVES ), + mBrickCount( 0 ) + { // Connect to the Application's Init and orientation changed signal mApplication.InitSignal().Connect(this, &ExampleController::Create); @@ -226,12 +249,10 @@ public: */ void Create(Application& application) { - DemoHelper::RequestThemeChange(); - - Stage::GetCurrent().KeyEventSignal().Connect(this, &ExampleController::OnKeyEvent); + application.GetWindow().KeyEventSignal().Connect(this, &ExampleController::OnKeyEvent); // Creates a default view with a default tool bar. - // The view is added to the stage. + // The view is added to the window. Toolkit::ToolBar toolBar; mContentLayer = DemoHelper::CreateView( application, mView, @@ -241,7 +262,7 @@ public: APPLICATION_TITLE ); // Add an extra space on the right to center the title text. - toolBar.AddControl( Actor::New(), DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight ); + toolBar.AddControl( Actor::New(), DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HORIZONTAL_RIGHT ); // Create the content layer, which is where game actors appear. AddContentLayer(); @@ -250,68 +271,68 @@ public: private: /** - * Adds a new layer to the stage, containing game actors. + * Adds a new layer to the window, containing game actors. */ void AddContentLayer() { - Stage stage = Stage::GetCurrent(); - const Vector3 stageSize(stage.GetSize()); + Window window = mApplication.GetWindow(); + const Vector3 windowSize(window.GetSize()); // Ball setup - mBallStartPosition = stageSize * Vector3( BALL_START_POSITION ); + mBallStartPosition = windowSize * Vector3( BALL_START_POSITION ); mBall = CreateImage(BALL_IMAGE); - mBall.SetPosition( mBallStartPosition ); - mBall.SetSize( BALL_SIZE * stageSize.width ); + mBall.SetProperty( Actor::Property::POSITION, mBallStartPosition ); + mBall.SetProperty( Actor::Property::SIZE, BALL_SIZE * windowSize.width ); mContentLayer.Add(mBall); mBallVelocity = Vector3::ZERO; // Paddle setup - mPaddleHitMargin = Vector2(stageSize) * PADDLE_HIT_MARGIN; + mPaddleHitMargin = Vector2(windowSize) * PADDLE_HIT_MARGIN; mPaddle = Actor::New(); mPaddleHandle = CreateImage(PADDLE_HANDLE_IMAGE); mPaddleImage = CreateImage(PADDLE_IMAGE); mPaddle.Add( mPaddleHandle ); mPaddle.Add( mPaddleImage ); - mPaddleHandle.SetParentOrigin( ParentOrigin::TOP_CENTER ); - mPaddleHandle.SetAnchorPoint( AnchorPoint::TOP_CENTER ); - mPaddleHandle.SetPosition( 0.0f, stageSize.width * 0.0125f ); - mPaddleImage.SetParentOrigin( ParentOrigin::TOP_CENTER ); - mPaddleImage.SetAnchorPoint( AnchorPoint::TOP_CENTER ); - mPaddle.SetParentOrigin( ParentOrigin::TOP_LEFT ); - mPaddle.SetAnchorPoint( AnchorPoint::CENTER ); - mPaddleFullSize = PADDLE_SIZE * stageSize.width; - mPaddle.SetSize( mPaddleFullSize + mPaddleHitMargin ); - mPaddleHandle.SetSize( PADDLE_HANDLE_SIZE * stageSize.width ); - mPaddleImage.SetSize( mPaddleFullSize ); + mPaddleHandle.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); + mPaddleHandle.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER ); + mPaddleHandle.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, windowSize.width * 0.0125f )); + mPaddleImage.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); + mPaddleImage.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER ); + mPaddle.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + mPaddle.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); + mPaddleFullSize = PADDLE_SIZE * windowSize.width; + mPaddle.SetProperty( Actor::Property::SIZE, mPaddleFullSize + mPaddleHitMargin ); + mPaddleHandle.SetProperty( Actor::Property::SIZE, PADDLE_HANDLE_SIZE * windowSize.width ); + mPaddleImage.SetProperty( Actor::Property::SIZE, mPaddleFullSize ); mWobbleProperty = mPaddle.RegisterProperty(WOBBLE_PROPERTY_NAME, 0.0f); - Constraint wobbleConstraint = Constraint::New( mPaddle, Actor::Property::ORIENTATION, WobbleConstraint(10.0f)); + Constraint wobbleConstraint = Constraint::New( mPaddle, Actor::Property::ORIENTATION, WobbleConstraint(Degree( 10.0f ))); wobbleConstraint.AddSource( LocalSource(mWobbleProperty) ); wobbleConstraint.Apply(); - mPaddle.SetPosition( stageSize * Vector3( PADDLE_START_POSITION ) ); + mPaddle.SetProperty( Actor::Property::POSITION, windowSize * Vector3( PADDLE_START_POSITION ) ); mContentLayer.Add(mPaddle); mPaddle.TouchedSignal().Connect(this, &ExampleController::OnTouchPaddle); mContentLayer.TouchedSignal().Connect(this, &ExampleController::OnTouchLayer); - const float margin(BALL_SIZE.width * stageSize.width * 0.5f); + const float margin(BALL_SIZE.width * windowSize.width * 0.5f); // Set up notifications for ball's collisions against walls. PropertyNotification leftNotification = mBall.AddPropertyNotification( Actor::Property::POSITION_X, LessThanCondition(margin) ); leftNotification.NotifySignal().Connect( this, &ExampleController::OnHitLeftWall ); - PropertyNotification rightNotification = mBall.AddPropertyNotification( Actor::Property::POSITION_X, GreaterThanCondition(stageSize.width - margin) ); + PropertyNotification rightNotification = mBall.AddPropertyNotification( Actor::Property::POSITION_X, GreaterThanCondition(windowSize.width - margin) ); rightNotification.NotifySignal().Connect( this, &ExampleController::OnHitRightWall ); PropertyNotification topNotification = mBall.AddPropertyNotification( Actor::Property::POSITION_Y, LessThanCondition(margin) ); topNotification.NotifySignal().Connect( this, &ExampleController::OnHitTopWall ); - PropertyNotification bottomNotification = mBall.AddPropertyNotification( Actor::Property::POSITION_Y, GreaterThanCondition(stageSize.height + margin) ); + PropertyNotification bottomNotification = mBall.AddPropertyNotification( Actor::Property::POSITION_Y, GreaterThanCondition(windowSize.height + margin) ); bottomNotification.NotifySignal().Connect( this, &ExampleController::OnHitBottomWall ); // Set up notification for ball colliding against paddle. Actor delegate = Actor::New(); - stage.Add(delegate); + window.Add(delegate); Property::Index property = delegate.RegisterProperty(COLLISION_PROPERTY_NAME, Vector3::ZERO); Constraint constraint = Constraint::New( delegate, property, CollisionCircleRectangleConstraint( -Vector3(0.0f, mPaddleHitMargin.height * 0.575f, 0.0f),-Vector3(mPaddleHitMargin) ) ); constraint.AddSource( Source(mBall, Actor::Property::POSITION) ); @@ -334,10 +355,10 @@ private: { mLives = TOTAL_LIVES; mLevel = 0; - mBall.SetPosition( mBallStartPosition ); + mBall.SetProperty( Actor::Property::POSITION, mBallStartPosition ); mBallVelocity = Vector3::ZERO; - mPaddle.SetSize( mPaddleFullSize + mPaddleHitMargin ); - mPaddleImage.SetSize( mPaddleFullSize ); + mPaddle.SetProperty( Actor::Property::SIZE, mPaddleFullSize + mPaddleHitMargin ); + mPaddleImage.SetProperty( Actor::Property::SIZE, mPaddleFullSize ); LoadLevel(mLevel); } @@ -356,14 +377,25 @@ private: } mLevelContainer = Actor::New(); - mLevelContainer.SetAnchorPoint( AnchorPoint::CENTER ); - mLevelContainer.SetParentOrigin( ParentOrigin::CENTER ); - mLevelContainer.SetRelayoutEnabled( true ); - mLevelContainer.SetResizePolicy( FILL_TO_PARENT, ALL_DIMENSIONS ); + mLevelContainer.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); + mLevelContainer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + mLevelContainer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + mContentLayer.Add( mLevelContainer ); mBrickCount = 0; + if( mBrickImageMap.Empty() ) + { + Vector2 windowSize(mApplication.GetWindow().GetSize()); + const Vector2 brickSize(BRICK_SIZE * Vector2(windowSize.x, windowSize.x)); + + mBrickImageMap["desiredWidth"] = static_cast( brickSize.width ); + mBrickImageMap["desiredHeight"] = static_cast( brickSize.height ); + mBrickImageMap["fittingMode"] = "SCALE_TO_FILL"; + mBrickImageMap["samplingMode"] = "BOX_THEN_LINEAR"; + } + switch(level%TOTAL_LEVELS) { case 0: @@ -393,13 +425,13 @@ private: */ void GenerateLevel0() { - Vector2 stageSize(Stage::GetCurrent().GetSize()); - const Vector2 brickSize(BRICK_SIZE * stageSize.width); + Vector2 windowSize(mApplication.GetWindow().GetSize()); + const Vector2 brickSize(BRICK_SIZE * windowSize.width); - const int columns = (0.85f * stageSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks. - const int rows = (0.3f * stageSize.height) / brickSize.height; // 30 percent of the height of the screen covered with bricks. - const Vector2 offset( (stageSize.x - (columns * brickSize.width)) * 0.5f, - stageSize.y * 0.125f ); + const int columns = (0.85f * windowSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks. + const int rows = (0.3f * windowSize.height) / brickSize.height; // 30 percent of the height of the screen covered with bricks. + const Vector2 offset( (windowSize.x - (columns * brickSize.width)) * 0.5f, + windowSize.y * 0.125f ); for(int j = 0; j < rows; j++) { @@ -417,13 +449,13 @@ private: */ void GenerateLevel1() { - Vector2 stageSize(Stage::GetCurrent().GetSize()); - const Vector2 brickSize(BRICK_SIZE * stageSize.width); + Vector2 windowSize(mApplication.GetWindow().GetSize()); + const Vector2 brickSize(BRICK_SIZE * windowSize.width); - const int columns = (0.85f * stageSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks. - const int rows = (0.3f * stageSize.height) / brickSize.height; // 30 percent of the height of the screen covered with bricks. - const Vector2 offset( (stageSize.x - (columns * brickSize.width)) * 0.5f, - stageSize.y * 0.125f ); + const int columns = (0.85f * windowSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks. + const int rows = (0.3f * windowSize.height) / brickSize.height; // 30 percent of the height of the screen covered with bricks. + const Vector2 offset( (windowSize.x - (columns * brickSize.width)) * 0.5f, + windowSize.y * 0.125f ); for(int j = 0; j < rows; j++) { @@ -446,13 +478,13 @@ private: */ void GenerateLevel2() { - Vector2 stageSize(Stage::GetCurrent().GetSize()); - const Vector2 brickSize(BRICK_SIZE * stageSize.width); + Vector2 windowSize(mApplication.GetWindow().GetSize()); + const Vector2 brickSize(BRICK_SIZE * windowSize.width); - const int columns = (0.85f * stageSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks. - const int rows = (0.3f * stageSize.height) / brickSize.height; // 30 percent of the height of the screen covered with bricks. - const Vector2 offset( (stageSize.x - (columns * brickSize.width)) * 0.5f, - stageSize.y * 0.125f ); + const int columns = (0.85f * windowSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks. + const int rows = (0.3f * windowSize.height) / brickSize.height; // 30 percent of the height of the screen covered with bricks. + const Vector2 offset( (windowSize.x - (columns * brickSize.width)) * 0.5f, + windowSize.y * 0.125f ); // lays down bricks in a spiral formation starting at i,j = (0,0) top left corner // travelling right di,dj = (1,0) initially @@ -514,26 +546,19 @@ private: /** - * Creates a brick at a specified position on the stage + * Creates a brick at a specified position on the window * @param[in] position the position for the brick * @param[in] type the type of brick * @return The Brick Actor is returned. */ Actor CreateBrick( const Vector2& position, int type ) { - Vector2 stageSize(Stage::GetCurrent().GetSize()); - const Vector2 brickSize(BRICK_SIZE * Vector2(stageSize.x, stageSize.x)); - - ImageAttributes attr; - attr.SetSize( 128, 64 ); - attr.SetScalingMode( ImageAttributes::ScaleToFill ); - Image img = ResourceImage::New(BRICK_IMAGE_PATH[type], attr); - ImageActor brick = ImageActor::New(img); - brick.SetParentOrigin(ParentOrigin::TOP_LEFT); - brick.SetAnchorPoint(AnchorPoint::CENTER); - brick.SetRelayoutEnabled( false ); - brick.SetSize( brickSize ); - brick.SetPosition( Vector3( position ) ); + mBrickImageMap["url"] = BRICK_IMAGE_PATH[type]; + ImageView brick = ImageView::New(); + brick.SetProperty( ImageView::Property::IMAGE, mBrickImageMap ); + brick.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT); + brick.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::CENTER); + brick.SetProperty( Actor::Property::POSITION, position ); // Add a constraint on the brick between it and the ball generating a collision-property Property::Index property = brick.RegisterProperty(COLLISION_PROPERTY_NAME, Vector3::ZERO); @@ -557,13 +582,16 @@ private: * * @param[in] filename the path of the image. */ - ImageActor CreateImage(const std::string& filename) + ImageView CreateImage(const std::string& filename) { - Image img = ResourceImage::New(filename); - ImageActor actor = ImageActor::New(img); - actor.SetParentOrigin(ParentOrigin::TOP_LEFT); - actor.SetAnchorPoint(AnchorPoint::CENTER); - actor.SetRelayoutEnabled( false ); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE); + propertyMap.Insert(ImageVisual::Property::URL, filename); + propertyMap.Insert(DevelVisual::Property::VISUAL_FITTING_MODE, DevelVisual::FILL); + ImageView actor = ImageView::New(); + actor.SetProperty(Toolkit::ImageView::Property::IMAGE, propertyMap); + actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT); + actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::CENTER); return actor; } @@ -591,17 +619,17 @@ private: { if(event.GetPointCount()>0) { - const TouchPoint& point = event.GetPoint(0); - if(point.state==TouchPoint::Down) // Commence dragging + if( event.GetState( 0 ) == PointState::DOWN ) // Commence dragging { // Get point where user touched paddle (relative to paddle's center) - mRelativeDragPoint = Vector3(point.screen.x, point.screen.y, 0.0f); - mRelativeDragPoint -= actor.GetCurrentPosition(); + Vector2 screenPoint = event.GetScreenPosition( 0 ); + mRelativeDragPoint = screenPoint; + mRelativeDragPoint -= actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ); mDragActor = actor; mDragAnimation = Animation::New(0.25f); - mDragAnimation.AnimateTo( Property(mDragActor, Actor::Property::SCALE), Vector3(1.1f, 1.1f, 1.0f), AlphaFunctions::EaseOut); - mDragAnimation.AnimateTo( Property(mPaddleHandle, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 0.0f), AlphaFunctions::EaseOut); + mDragAnimation.AnimateTo( Property(mDragActor, Actor::Property::SCALE), Vector3(1.1f, 1.1f, 1.0f), AlphaFunction::EASE_OUT); + mDragAnimation.AnimateTo( Property(mPaddleHandle, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 0.0f), AlphaFunction::EASE_OUT); mDragAnimation.Play(); } } @@ -617,17 +645,16 @@ private: { if(event.GetPointCount()>0) { - const TouchPoint& point = event.GetPoint(0); if(mDragActor) { - Vector3 position(point.screen.x, point.screen.y, 0.0f); - mPaddle.SetPosition( position - mRelativeDragPoint ); + Vector3 position( event.GetScreenPosition( 0 ) ); + mPaddle.SetProperty( Actor::Property::POSITION, position - mRelativeDragPoint ); - if(point.state==TouchPoint::Up) // Stop dragging + if( event.GetState( 0 ) == PointState::UP ) // Stop dragging { mDragAnimation = Animation::New(0.25f); - mDragAnimation.AnimateTo( Property(mDragActor, Actor::Property::SCALE), Vector3(1.0f, 1.0f, 1.0f), AlphaFunctions::EaseIn); - mDragAnimation.AnimateTo( Property(mPaddleHandle, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 1.0f), AlphaFunctions::EaseOut); + mDragAnimation.AnimateTo( Property(mDragActor, Actor::Property::SCALE), Vector3(1.0f, 1.0f, 1.0f), AlphaFunction::EASE_IN); + mDragAnimation.AnimateTo( Property(mPaddleHandle, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 1.0f), AlphaFunction::EASE_OUT); mDragAnimation.Play(); mDragActor.Reset(); } @@ -699,8 +726,8 @@ private: void OnPaddleShrunk( Animation &source ) { // Reposition Ball in start position, and make ball appear. - mBall.SetPosition( mBallStartPosition ); - mBall.SetColor( Vector4(1.0f, 1.0f, 1.0f, 0.1f) ); + mBall.SetProperty( Actor::Property::POSITION, mBallStartPosition ); + mBall.SetProperty( Actor::Property::COLOR, Vector4(1.0f, 1.0f, 1.0f, 0.1f) ); Animation appear = Animation::New(0.5f); appear.AnimateTo( Property(mBall, Actor::Property::COLOR), Vector4(1.0f, 1.0f, 1.0f, 1.0f) ); appear.Play(); @@ -718,8 +745,8 @@ private: void OnHitPaddle(PropertyNotification& source) { Actor delegate = Actor::DownCast(source.GetTarget()); - Vector3 collisionVector = delegate.GetProperty(source.GetTargetProperty()); - Vector3 ballRelativePosition(mBall.GetCurrentPosition() - mPaddle.GetCurrentPosition()); + Vector3 collisionVector = delegate.GetCurrentProperty< Vector3 >( source.GetTargetProperty() ); + Vector3 ballRelativePosition(mBall.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ) - mPaddle.GetCurrentProperty< Vector3 >( Actor::Property::POSITION )); ballRelativePosition.Normalize(); collisionVector.x += ballRelativePosition.x * 0.5f; @@ -753,7 +780,7 @@ private: void OnHitBrick(PropertyNotification& source) { Actor brick = Actor::DownCast(source.GetTarget()); - Vector3 collisionVector = brick.GetProperty(source.GetTargetProperty()); + Vector3 collisionVector = brick.GetCurrentProperty< Vector3 >( source.GetTargetProperty() ); const float normalVelocity = fabsf(mBallVelocity.Dot(collisionVector)); mBallVelocity += collisionVector * normalVelocity * 2.0f; @@ -769,7 +796,7 @@ private: // fade brick (destroy) Animation destroyAnimation = Animation::New(0.5f); - destroyAnimation.AnimateTo( Property( brick, Actor::Property::COLOR_ALPHA ), 0.0f, AlphaFunctions::EaseIn ); + destroyAnimation.AnimateTo( Property( brick, Actor::Property::COLOR_ALPHA ), 0.0f, AlphaFunction::EASE_IN ); destroyAnimation.Play(); destroyAnimation.FinishedSignal().Connect( this, &ExampleController::OnBrickDestroyed ); mDestroyAnimationMap[destroyAnimation] = brick; @@ -781,7 +808,7 @@ private: */ void OnBrickDestroyed( Animation& source ) { - // Remove brick from stage, it's constraint and property notification should also remove themselves. + // Remove brick from window, it's constraint and property notification should also remove themselves. Actor brick = mDestroyAnimationMap[source]; mDestroyAnimationMap.erase(source); brick.GetParent().Remove(brick); @@ -799,7 +826,7 @@ private: */ void OnKeyEvent(const KeyEvent& event) { - if(event.state == KeyEvent::Down) + if(event.GetState() == KeyEvent::DOWN) { if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) ) { @@ -811,19 +838,20 @@ private: private: Application& mApplication; ///< Application instance - Toolkit::View mView; ///< The View instance. + Toolkit::Control mView; ///< The View instance. Layer mContentLayer; ///< The content layer (contains game actors) - ImageActor mBall; ///< The Moving ball image. + ImageView mBall; ///< The Moving ball image. Vector3 mBallStartPosition; ///< Ball Start position Vector3 mBallVelocity; ///< Ball's current direction. Animation mBallAnimation; ///< Ball's animation Actor mPaddle; ///< The paddle including hit area. - ImageActor mPaddleImage; ///< The paddle's image. - ImageActor mPaddleHandle; ///< The paddle's handle (where the user touches) + ImageView mPaddleImage; ///< The paddle's image. + ImageView mPaddleHandle; ///< The paddle's handle (where the user touches) Vector2 mPaddleHitMargin; ///< The paddle hit margin. Animation mWobbleAnimation; ///< Paddle's animation when hit (wobbles) Property::Index mWobbleProperty; ///< The wobble property (generated from animation) Actor mLevelContainer; ///< The level container (contains bricks) + Property::Map mBrickImageMap; ///< The property map used to load the brick // actor - dragging functionality @@ -837,18 +865,10 @@ private: int mBrickCount; ///< Total bricks on screen. }; -void RunTest(Application& app) +int DALI_EXPORT_API main(int argc, char **argv) { + Application app = Application::New(&argc, &argv, DEMO_THEME_PATH); ExampleController test(app); - app.MainLoop(); -} - -int main(int argc, char **argv) -{ - Application app = Application::New(&argc, &argv); - - RunTest(app); - return 0; }