XXXTutorial.mm
#define DEBUG_TOUCHAREA 0
/*=====================
Tutorial コマンド ガイド
[Tutorial 終了]
TCMD_FINISHTUTORIAL
[コマンド ホールド] *時間の遅延と一緒に使えない
TCMD_HOLDCOMMAND
[時間遅延] *コマンド ホールドと一緒に使えない
TCMD_DELAYTIME(秒)
[페이드 배경 오버레이 ON/OFF]ペイド背景オーバーレイ On/Oっf
TCMD_DRAWFADEOVERLAY_ON
TCMD_DRAWFADEOVERLAY_OFF
[게임 PAUSE/RESUME]
TCMD_PAUSEGAME
TCMD_RESUMEGAME
[스킵버튼 추가]
TCMD_ADDSKIPBUTTON
[이미지 추가]
- 기본(정지이미지)
TCMD_ADDSPRITE(이미지파일이름, 식별ID, eObjectMotion_None, 기준좌표-Point(X,Y), Point(0, 0), 회전각도, 0, 좌우반전(예:true/아니오:false), 상하반전(예:true/아니오:false), XY스케일(기본값:Point(1.0, 1.0)), 중심점(기본값:Point(0.5, 0.5)))
- 왔다갔다
TCMD_ADDSPRITE(이미지파일이름, 식별ID, eObjectMotion_GoAndBack, 기준좌표-Point(X,Y), 이동좌표-Point(X,Y), 회전각도, 이동시간(초), 좌우반전(예:true/아니오:false), 상하반전(예:true/아니오:false), XY스케일(기본값:Point(1.0, 1.0)), 중심점(기본값:Point(0.5, 0.5)))
- 텔레포트
TCMD_ADDSPRITE(이미지파일이름, 식별ID, eObjectMotion_Teleport, 기준좌표-Point(X,Y), 이동좌표-Point(X,Y), 회전각도, 이동시간(초), 좌우반전(예:true/아니오:false), 상하반전(예:true/아니오:false), XY스케일(기본값:Point(1.0, 1.0)), 중심점(기본값:Point(0.5, 0.5)))
- 이동
TCMD_ADDSPRITE(이미지파일이름, 식별ID, eObjectMotion_Move, 기준좌표-Point(X,Y), 이동좌표-Point(X,Y), 회전각도, 이동시간(초), 좌우반전(예:true/아니오:false), 상하반전(예:true/아니오:false), XY스케일(기본값:Point(1.0, 1.0)), 중심점(기본값:Point(0.5, 0.5)))
[이미지 삭제]
- 개별삭제
TCMD_REMOVESPRITE(식별ID)
- 전체삭제
TCMD_REMOVESPRITE(0)
[말풍선 추가/삭제]
- 추가
TCMD_ADDTEXTFIELD(텍스트(따움표로 묶고 줄바꿈은\n), 기준좌표-Point(X,Y), 좌우위치(기본값:우측:false, 좌:true), 상하위치(기본값:상:false, 하:true), 버튼여부(기본값:없음:false, 있음:true))
- 삭제
TCMD_REMOVETEXTFIELD
[터치영역 추가/삭제]
- 추가
TCMD_ADDTOUCHAREA(식별자, 좌표-Point(X,Y), XY스케일(기본값:Point(1.0, 1.0))
- 개별삭제
TCMD_REMOVETOUCHAREA(식별자)
- 전체삭제
TCMD_REMOVETOUCHAREA(0)
[마스킹 추가/삭제]
- 추가
TCMD_ADDMASK_CIRCLE(식별자, 좌표-Point(X,Y), XY스케일(기본값:Point(1.0, 1.0))
TCMD_ADDMASK_RECT(식별자, 좌표-Point(X,Y), XY스케일(기본값:Point(1.0, 1.0))
- 개별삭제
TCMD_REMOVEMASK(식별자)
- 전체삭제
TCMD_REMOVEMASK(0)
[모든 요소 삭제]
TCMD_REMOVEALL
: 아래 명령어를 모두 통합한 명령어
TCMD_REMOVETOUCHAREA(0) TCMD_REMOVETEXTFIELD TCMD_REMOVEMASK(0) TCMD_REMOVESPRITE(0)
===============================================================================================================================================*/
#define SIZE_BASICAREA Size(100, 100)
#define SCALE_BASICTILE Point(0.55, 0.68)
#define TCMD_DELAYTIME(__DELAY__) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_DelayTime, false, "", "", eObjectMotion_None, Rect(0, 0, 0, 0), Point(0, 0), Point(0, 0), 0, __DELAY__));
#define TCMD_DRAWFADEOVERLAY_ON l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_DrawFadeOverlay));
#define TCMD_DRAWFADEOVERLAY_OFF l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_DrawFadeOverlay, true));
#define TCMD_PAUSEGAME l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_PauseGame));
#define TCMD_RESUMEGAME l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_PauseGame, true));
#define TCMD_ADDSKIPBUTTON l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddSkipButton));
#define TCMD_FINISHTUTORIAL l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_FinishTutorial));
#define TCMD_ADDSPRITE(__FILEPATH__, _TAG_, _MOTIONTYPE_, _PT1_, _PT2_, _ROTATION_, _DELAY_, _FLIPX_, _FLIPY_, _SCALE_, _ANCHOR_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddSprite, false, __FILEPATH__, "", _MOTIONTYPE_, Rect(0, 0, 0, 0), _PT1_, _PT2_, _ROTATION_, _DELAY_, _FLIPX_, _FLIPY_, false, _TAG_, _SCALE_, _ANCHOR_));
#define TCMD_REMOVESPRITE(_TAG_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddSprite, true, "", "", eObjectMotion_None, Rect(0, 0, 0, 0), Point(0, 0), Point(0, 0), 0, 0, false, false, false, _TAG_, Point(1.0, 1.0), Point(0.5, 0.5)));
#define TCMD_HOLDCOMMAND l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_HoldCommand));
#define TCMD_ADDTEXTFIELD(_TEXT_, _POS_, _FLIPX_, _FLIPY_, _OKBTN_, _TYPE_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddTextField, false, "", _TEXT_, eObjectMotion_None, Rect(0, 0, 0, 0), _POS_, Point(0, 0), 0, 0, _FLIPX_, _FLIPY_, _OKBTN_, _TYPE_, Point(1.0, 1.0), Point(0.5, 0.5)));
#define TCMD_REMOVETEXTFIELD l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddTextField, true));
#define TCMD_ADDTOUCHAREA(_TAG_, _POS_, _XYSCALE_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddTouchableArea, false, "", "", eObjectMotion_None, Rect(0, 0, 0, 0), _POS_, Point(0, 0), 0, 0, false, false, false, _TAG_, _XYSCALE_));
#define TCMD_REMOVETOUCHAREA(_TAG_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddTouchableArea, true, "", "", eObjectMotion_None, Rect(0, 0, 0, 0), Point(0, 0), Point(0, 0), 0, 0, false, false, false, _TAG_));
#define TCMD_CUSTOM(_TAG_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_Custom, false, "", "", eObjectMotion_None, Rect(0, 0, 0, 0), Point(0, 0), Point(0, 0), 0, 0, false, false, false, _TAG_));
#define TCMD_ADDMASK_CIRCLE(_TAG_, _POS_, _XYSCALE_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddMask, false, "", "", (eObjectMotion)eMaskType_Circle, Rect(0, 0, 0, 0), _POS_, Point(0, 0), 0, 0, false, false, false, _TAG_, _XYSCALE_));
#define TCMD_ADDMASK_RECT(_TAG_, _POS_, _XYSCALE_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddMask, false, "", "", (eObjectMotion)eMaskType_RoundRect, Rect(0, 0, 0, 0), _POS_, Point(0, 0), 0, 0, false, false, false, _TAG_, _XYSCALE_));
#define TCMD_REMOVEMASK(_TAG_) l_TutorialCmd.push_back(TutorialCmdObject(eTutorialCMD_AddMask, true, "", "", (eObjectMotion)0, Rect(0, 0, 0, 0), Point(0, 0), Point(0, 0), 0, 0, false, false, false, _TAG_, Point(1, 1)));
#define TCMD_REMOVEALL TCMD_REMOVETOUCHAREA(0) TCMD_REMOVETEXTFIELD TCMD_REMOVEMASK(0) TCMD_REMOVESPRITE(0)
#define BLOCKPOS(_X_,_Y_) (GStageLayer->GetPositionByPos(IntPoint(_X_, _Y_), 0) + Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(-9, 10))
#define BLOCKPOS_BETWEEN(_X1_,_Y1_,_X2_,_Y2_) (BLOCKPOS(_X1_,_Y1_) + (BLOCKPOS(_X2_,_Y2_) - BLOCKPOS(_X1_,_Y1_))*0.5)
#define FINGERPOS(_X_,_Y_) (BLOCKPOS(_X_,_Y_) + Point(0, -100))
void AMTutorialLayer::StartTutorial(eTutorialType TutorialType)
{
l_TutorialCmd.clear();
cur_TutorialType = TutorialType;
switch(TutorialType)
{
case eTutorialType_InGame_BasicRule:
{
TCMD_DELAYTIME(0.1)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDMASK_CIRCLE(1, BLOCKPOS(8, -1), Point(1.5, 1.5))
TCMD_ADDSPRITE("worldimg_ui_stageui_arrow.png", 1, eObjectMotion_GoAndBack, Point(DESIGN_WIDTH/2, DESIGN_HEIGHT - 130), Point(DESIGN_WIDTH/2, DESIGN_HEIGHT - 120), 0, 0.3, false, true, Point(1.5, 1.5), Point(0.5, 0.5));
TCMD_ADDTEXTFIELD("You need to pop all blocks\nbefore the time runs out.", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_REMOVEMASK(0)
TCMD_REMOVESPRITE(0)
TCMD_ADDTEXTFIELD("Try tapping a pair of same blocks!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, false, eTextFieldCharacter_Cat)
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_Teleport, FINGERPOS(11, 3), FINGERPOS(12, 5), 0, 0.5, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, BLOCKPOS(11, 3), SCALE_BASICTILE)
TCMD_ADDTOUCHAREA(2, BLOCKPOS(12, 5), SCALE_BASICTILE)
TCMD_ADDMASK_CIRCLE(1, BLOCKPOS(11, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(12, 5), Point(1.2, 1.2))
TCMD_HOLDCOMMAND
TCMD_REMOVEMASK(0)
TCMD_REMOVETOUCHAREA(0)
TCMD_REMOVESPRITE(0)
TCMD_ADDMASK_RECT(1, BLOCKPOS_BETWEEN(12, 5, 11, 3) + Point(5, -5), Point(SCALE_BASICTILE.x*3.1, SCALE_BASICTILE.y*4.1))
TCMD_ADDTEXTFIELD("They will POP!\nIf they are connected with\nthree or less straight lines!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 140), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_REMOVETEXTFIELD
TCMD_CUSTOM(0) //연결선 지우기
TCMD_DELAYTIME(0.6)
TCMD_REMOVEMASK(0)
TCMD_ADDTEXTFIELD("Good job!\n Let's try popping these blocks as well!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 140), false, false, false, eTextFieldCharacter_Cat)
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_Teleport, FINGERPOS(8, 4), FINGERPOS(10, 3), 0, 0.5, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, BLOCKPOS(10, 3), SCALE_BASICTILE)
TCMD_ADDTOUCHAREA(2, BLOCKPOS(8, 4), SCALE_BASICTILE)
TCMD_ADDMASK_CIRCLE(1, BLOCKPOS(10, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(8, 4), Point(1.2, 1.2))
TCMD_HOLDCOMMAND
TCMD_CUSTOM(1) //깜빡깜빡
TCMD_REMOVEMASK(0)
TCMD_REMOVETOUCHAREA(0)
TCMD_REMOVESPRITE(0)
TCMD_ADDMASK_RECT(1, BLOCKPOS_BETWEEN(10, 4, 8, 3), Point(SCALE_BASICTILE.x*4.2, SCALE_BASICTILE.y*3))
TCMD_ADDTEXTFIELD("Remember!\n If something is in the way, you cannot pop!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 140), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_CUSTOM(2) //깜빡깜빡 끝
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_IngameItem_Shuffle:
{
TCMD_DELAYTIME(0.1)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 1, eObjectMotion_GoAndBack, Point(DESIGN_WIDTH/2 + 457, 120), Point(DESIGN_WIDTH/2 + 457, 130), 0, 0.3, false, true, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDMASK_CIRCLE(2, Point(DESIGN_WIDTH/2 + 457, 40), Point(1.6, 0.9))
TCMD_ADDTEXTFIELD("Use the Shuffle item to shuffle all blocks.", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, false, eTextFieldCharacter_Cat)
TCMD_ADDTOUCHAREA(1, Point(DESIGN_WIDTH/2 + 457, 30), Point(1.2, 0.6))
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_IngameItem_Hint:
{
TCMD_DELAYTIME(0.1)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 1, eObjectMotion_GoAndBack, Point(DESIGN_WIDTH/2 + 312, 120), Point(DESIGN_WIDTH/2 + 312, 130), 0, 0.3, false, true, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDMASK_CIRCLE(2, Point(DESIGN_WIDTH/2 + 312, 40), Point(1.6, 0.9))
TCMD_ADDTEXTFIELD("Use the Hint item to instantly find \n a pair of matching blocks that you can pop.", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, false, eTextFieldCharacter_Cat)
TCMD_ADDTOUCHAREA(1, Point(DESIGN_WIDTH/2 + 312, 30), Point(1.2, 0.6))
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_IngameItem_Claw:
{
TCMD_DELAYTIME(0.1)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 1, eObjectMotion_GoAndBack, Point(DESIGN_WIDTH/2 + 167, 120), Point(DESIGN_WIDTH/2 + 167, 130), 0, 0.3, false, true, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDMASK_CIRCLE(2, Point(DESIGN_WIDTH/2 + 167, 40), Point(1.6, 0.9))
TCMD_ADDTEXTFIELD("Use the Paw item to instantly pop \n any one pair of your choice.", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, false, eTextFieldCharacter_Cat)
TCMD_ADDTOUCHAREA(1, Point(DESIGN_WIDTH/2 + 167, 30), Point(1.2, 0.6))
TCMD_HOLDCOMMAND
TCMD_REMOVESPRITE(0)
TCMD_REMOVEMASK(0)
TCMD_REMOVETOUCHAREA(0)
TCMD_REMOVETEXTFIELD
TCMD_DRAWFADEOVERLAY_OFF
TCMD_DELAYTIME(0.6)
TCMD_DRAWFADEOVERLAY_ON
TCMD_ADDTEXTFIELD("Try popping any block now!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_REMOVETEXTFIELD
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, FINGERPOS(10, 2), FINGERPOS(10, 2) + Point(0, 10), 0, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(10, 2), Point(1.2, 1.2))
TCMD_ADDTOUCHAREA(1, BLOCKPOS(10, 2), SCALE_BASICTILE)
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_GameMode_Speed:
{
TCMD_DELAYTIME(0.1)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDSPRITE("worldimg_ui_stageui_arrow.png", 1, eObjectMotion_GoAndBack, Point(DESIGN_WIDTH/2 - 163, 100), Point(DESIGN_WIDTH/2 - 163, 110), 0, 0.3, false, false, Point(1.5, 1.5), Point(0.5, 0.5));
TCMD_ADDMASK_RECT(2, Point(DESIGN_WIDTH/2 - 318, 33), Point(3.9, 0.64))
TCMD_ADDTEXTFIELD("There are multiple phases in this speed mode.\nClear all three phases in this stage. Enjoy!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), true, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_GameMode_Wall:
{
TCMD_DELAYTIME(0.1)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDSPRITE("worldimg_ui_stageui_arrow.png", 1, eObjectMotion_GoAndBack, BLOCKPOS(8, 3) + Point(0, -100), BLOCKPOS(8, 3) + Point(0, -110), 0, 0.3, false, true, Point(1.5, 1.5), Point(0.5, 0.5));
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(0, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(2, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(4, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(6, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(8, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(10, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(12, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(14, 3), Point(1.2, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(16, 3), Point(1.2, 1.2))
TCMD_ADDTEXTFIELD("These are indestructable Stone Blocks.\nTry to pop around them!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 160), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_GameMode_Bomb:
{
TCMD_DELAYTIME(0.1)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDMASK_CIRCLE(1, BLOCKPOS_BETWEEN(15, 0, 16, 0), Point(2.4, 1.2))
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(10, 0), Point(2.4, 1.2))
TCMD_ADDTEXTFIELD("Popping same colored Bomb Blocks \n destroys same colored Stone Blocks! \nTry the Red Bomb Blocks first!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, false, eTextFieldCharacter_Cat)
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_Teleport, FINGERPOS(15, 0), FINGERPOS(16, 0), 0, 0.5, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, BLOCKPOS(15, 0), SCALE_BASICTILE)
TCMD_ADDTOUCHAREA(2, BLOCKPOS(16, 0), SCALE_BASICTILE)
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_GameMode_Heart:
{
TCMD_DELAYTIME(1)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDMASK_RECT(1, BLOCKPOS(8, 4), Point(SCALE_BASICTILE.x*4, SCALE_BASICTILE.y*4))
TCMD_ADDTEXTFIELD("Red Card Heart Soldier has appeared!\nUse your finger to wipe the soldier's paint off!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 160), true, false, false, eTextFieldCharacter_Cat)
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_Move, BLOCKPOS(10, 3), BLOCKPOS_BETWEEN(6, 7, 7, 6), 0, 1.1, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(2, BLOCKPOS(8, 4), Point(SCALE_BASICTILE.x*6, SCALE_BASICTILE.y*6))
TCMD_HOLDCOMMAND
TCMD_REMOVETOUCHAREA(0)
TCMD_REMOVESPRITE(0)
TCMD_REMOVEMASK(0)
TCMD_ADDSPRITE("worldimg_ui_stageui_arrow.png", 1, eObjectMotion_GoAndBack, Point(DESIGN_WIDTH/2 - 170, 120), Point(DESIGN_WIDTH/2 - 170, 130), 0, 0.3, false, false, Point(1.5, 1.5), Point(0.5, 0.5));
TCMD_ADDMASK_RECT(2, Point(DESIGN_WIDTH/2 - 318, 33), Point(3.9, 0.64))
TCMD_ADDTEXTFIELD("Whenever the bar at the bottom is filled up,\nHeart Soldier is punished with crushing hammer.\nThe bar fills up quicker if you pop blocks quickly.", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 130), true, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_InGame_RepeatFailRule:
{
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
float scale = 1.0;
Point pivot = Point(320, 170);
TCMD_ADDSPRITE("howtoplay0.png", 1, eObjectMotion_None, Point(DESIGN_WIDTH/2 - pivot.x, DESIGN_HEIGHT/2 + pivot.y), Point(0, 0), 0, 0, false, false, Point(scale, scale), Point(0.5, 0.5));
TCMD_ADDSPRITE("howtoplay1.png", 1, eObjectMotion_None, Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2 + pivot.y), Point(0, 0), 0, 0, false, false, Point(scale, scale), Point(0.5, 0.5));
TCMD_ADDSPRITE("howtoplay2.png", 1, eObjectMotion_None, Point(DESIGN_WIDTH/2 + pivot.x, DESIGN_HEIGHT/2 + pivot.y), Point(0, 0), 0, 0, false, false, Point(scale, scale), Point(0.5, 0.5));
TCMD_ADDTEXTFIELD("Remember! You can only pop blocks that are connected \nby three or less straight lines!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, -55), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_InGame_OnCombo:
{
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
TCMD_PAUSEGAME
TCMD_ADDTEXTFIELD("You just earned a special combo effect \n after quickly popping 5 pairs!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_REMOVETEXTFIELD
IntPoint pos;
Vector<AMBlock*> arr = GStageLayer->GetBlocks(AREA_STAGE, 0, eNormalBlockType_AllNormalType);
pos = ((AMBlock*)arr.at(rand()%arr.size()))->pos;
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, FINGERPOS(pos.x, pos.y), FINGERPOS(pos.x, pos.y) + Point(0, 10), 0, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDMASK_CIRCLE(2, BLOCKPOS(pos.x, pos.y), Point(1.2, 1.2))
TCMD_ADDTOUCHAREA(1, BLOCKPOS(pos.x, pos.y), SCALE_BASICTILE)
TCMD_HOLDCOMMAND
TCMD_REMOVESPRITE(0)
TCMD_REMOVEMASK(0)
TCMD_REMOVETOUCHAREA(0)
TCMD_DRAWFADEOVERLAY_OFF
if(GStageLayer->GetBlocks(AREA_STAGE, 0, eNormalBlockType_AllNormalType).size() > 2)
{
TCMD_DELAYTIME(0.9)
TCMD_DRAWFADEOVERLAY_ON
TCMD_ADDTEXTFIELD("Earn a special combo effect \nfor every 5 combos made in a row!\nPop blocks even faster!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
}
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_Booster_10Sec:
{
TCMD_DELAYTIME(0.5)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
Point pt_booster = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(53, 93);
TCMD_ADDTEXTFIELD("Rabbit's Watch Booster will increase\ntime limit by 10 seconds. Try it out!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, -50), true, false, false, eTextFieldCharacter_Cat)
TCMD_ADDMASK_CIRCLE(2, pt_booster, Point(1.5, 1.5))
TCMD_ADDTOUCHAREA(1, pt_booster, Point(1, 1))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_booster + Point(0, 100), pt_booster + Point(0, 100) + Point(0, 10), 0, 0.3, false, true, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_HOLDCOMMAND
TCMD_REMOVETEXTFIELD
TCMD_REMOVETOUCHAREA(0)
TCMD_REMOVESPRITE(0)
TCMD_REMOVEMASK(0)
Point pt_booster2 = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(-291, 85);
Point pt_boosterdesc = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(-192, -62);
TCMD_ADDMASK_CIRCLE(1, pt_booster2, Point(1.5, 1.5))
TCMD_ADDMASK_RECT(2, pt_boosterdesc, Point(3.35, 1.7))
TCMD_DELAYTIME(1.5)
TCMD_REMOVEMASK(0)
TCMD_ADDTEXTFIELD("Hooray! You've got your booster! \n Now let's play the stage!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), true, false, false, eTextFieldCharacter_Cat)
Point pt_startbtn = Point(DESIGN_WIDTH/2, 133);
TCMD_ADDMASK_CIRCLE(1, pt_startbtn, Point(3, 1.2))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_startbtn + Point(-160, 0), pt_startbtn + Point(-160, 0) + Point(10, 0), 90, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, pt_startbtn, Point(3, 1));
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_Booster_EasyCombo:
{
TCMD_DELAYTIME(0.5)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
Point pt_booster = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(173, 93);
TCMD_ADDTEXTFIELD("Combo Drink Booster will increase time\nallowed between each combo. Try it out!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, -50), true, false, false, eTextFieldCharacter_Cat)
TCMD_ADDMASK_CIRCLE(2, pt_booster, Point(1.5, 1.5))
TCMD_ADDTOUCHAREA(1, pt_booster, Point(1, 1))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_booster + Point(0, 100), pt_booster + Point(0, 100) + Point(0, 10), 0, 0.3, false, true, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_HOLDCOMMAND
TCMD_REMOVETEXTFIELD
TCMD_REMOVETOUCHAREA(0)
TCMD_REMOVESPRITE(0)
TCMD_REMOVEMASK(0)
Point pt_booster2 = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(-291, 85);
Point pt_boosterdesc = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(-192, -62);
TCMD_ADDMASK_CIRCLE(1, pt_booster2, Point(1.5, 1.5))
TCMD_ADDMASK_RECT(2, pt_boosterdesc, Point(3.35, 1.7))
TCMD_DELAYTIME(1.5)
TCMD_REMOVEMASK(0)
TCMD_ADDTEXTFIELD("Hooray! You've got your booster! \n Now let's play the stage!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), true, false, false, eTextFieldCharacter_Cat)
Point pt_startbtn = Point(DESIGN_WIDTH/2, 133);
TCMD_ADDMASK_CIRCLE(1, pt_startbtn, Point(3, 1.2))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_startbtn + Point(-160, 0), pt_startbtn + Point(-160, 0) + Point(10, 0), 90, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, pt_startbtn, Point(3, 1));
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_Booster_MoreCouple:
{
TCMD_DELAYTIME(0.5)
TCMD_ADDSKIPBUTTON
TCMD_DRAWFADEOVERLAY_ON
Point pt_booster = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(293, 93);
TCMD_ADDTEXTFIELD("Combo Party Booster will make\nmatching blocks easier. Try it out!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, -50), true, false, false, eTextFieldCharacter_Cat)
TCMD_ADDMASK_CIRCLE(2, pt_booster, Point(1.5, 1.5))
TCMD_ADDTOUCHAREA(1, pt_booster, Point(1, 1))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_booster + Point(0, 100), pt_booster + Point(0, 100) + Point(0, 10), 0, 0.3, false, true, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_HOLDCOMMAND
TCMD_REMOVETEXTFIELD
TCMD_REMOVETOUCHAREA(0)
TCMD_REMOVESPRITE(0)
TCMD_REMOVEMASK(0)
Point pt_booster2 = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(-291, 85);
Point pt_boosterdesc = Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(-192, -62);
TCMD_ADDMASK_CIRCLE(1, pt_booster2, Point(1.5, 1.5))
TCMD_ADDMASK_RECT(2, pt_boosterdesc, Point(3.35, 1.7))
TCMD_DELAYTIME(1.5)
TCMD_REMOVEMASK(0)
TCMD_ADDTEXTFIELD("Hooray! You've got your booster! \n Now let's play the stage!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), true, false, false, eTextFieldCharacter_Cat)
Point pt_startbtn = Point(DESIGN_WIDTH/2, 133);
TCMD_ADDMASK_CIRCLE(1, pt_startbtn, Point(3, 1.2))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_startbtn + Point(-160, 0), pt_startbtn + Point(-160, 0) + Point(10, 0), 90, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, pt_startbtn, Point(3, 1));
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_EpisodeUnlock:
{
TCMD_DELAYTIME(0.7)
TCMD_DRAWFADEOVERLAY_ON
TCMD_ADDTEXTFIELD("In order to advance to the next episode,\nyou need 3 keys! You can either ask your\nfriends for them or buy with your Crystals.", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 220), true, false, true, eTextFieldCharacter_Cat)
TCMD_ADDMASK_RECT(1, Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 41), Point(4.5, 1.5))
TCMD_ADDMASK_CIRCLE(2, Point(DESIGN_WIDTH/2 - 116, 90), Point(2.1, 1.2))
TCMD_ADDMASK_CIRCLE(3, Point(DESIGN_WIDTH/2 + 116, 90), Point(2.1, 1.2))
TCMD_HOLDCOMMAND
TCMD_REMOVEMASK(0)
TCMD_REMOVETEXTFIELD
TCMD_CUSTOM(0) //열쇠 메세지주고 에피소드팝업창닫기
TCMD_DELAYTIME(0.6)
Point pt_menubtn = Point(1160 - SCREENGAP_WIDTH, 80);
TCMD_ADDTEXTFIELD("We've prepared 3 keys for you!\nFirst, tap on the menu.", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, false, eTextFieldCharacter_Cat)
TCMD_ADDMASK_CIRCLE(1, pt_menubtn, Point(1.8, 1.8))
TCMD_ADDTOUCHAREA(1, pt_menubtn + Point(50, -23), Point(1.6, 0.9))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_menubtn + Point(0, 100), pt_menubtn + Point(0, 110), 0, 0.3, false, true, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_HOLDCOMMAND
TCMD_REMOVEALL
TCMD_DELAYTIME(0.6)
Point pt_msgboxbtn = Point(811 - SCREENGAP_WIDTH, 57);
TCMD_ADDTEXTFIELD("Then, tap on the message box.\nCheck your messages here!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, false, eTextFieldCharacter_Cat)
TCMD_ADDMASK_CIRCLE(1, pt_msgboxbtn + Point(0, 15), Point(1.5, 1.5))
TCMD_ADDTOUCHAREA(1, pt_msgboxbtn, Point(0.7, 0.7))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_msgboxbtn + Point(0, 100), pt_msgboxbtn + Point(0, 110), 0, 0.3, false, true, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_HOLDCOMMAND
TCMD_REMOVEALL
TCMD_DELAYTIME(0.7)
TCMD_ADDTEXTFIELD("Get your 3 keys now!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, -50), true, false, false, eTextFieldCharacter_Cat)
TCMD_ADDMASK_RECT(1, Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(2, 77), Point(7.5, 2.9))
TCMD_ADDMASK_CIRCLE(2, Point(DESIGN_WIDTH/2 - 254, 90), Point(2.5, 1.3))
TCMD_ADDTOUCHAREA(1, Point(DESIGN_WIDTH/2 - 254, 90), Point(2.2, 0.5))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, Point(DESIGN_WIDTH/2 - 254, 90) + Point(160, 0), Point(DESIGN_WIDTH/2 - 254, 90) + Point(170, 0), -90, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_HOLDCOMMAND
TCMD_REMOVEMASK(2)
TCMD_REMOVESPRITE(0)
TCMD_REMOVETOUCHAREA(0)
TCMD_REMOVETEXTFIELD
TCMD_ADDMASK_CIRCLE(3, Point(DESIGN_WIDTH/2 + 280, 90), Point(2.0, 1.3))
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, Point(DESIGN_WIDTH/2 + 280, 90) + Point(140, 0), Point(DESIGN_WIDTH/2 + 280, 90) + Point(150, 0), -90, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, Point(DESIGN_WIDTH/2 + 280, 90), Point(1.6, 0.5))
TCMD_HOLDCOMMAND
TCMD_REMOVEALL
TCMD_DELAYTIME(0.6)
CCLOG("GCommon->scene_world->sv->getContentOffset().y : %f", GCommon->scene_world->sv->getContentOffset().y);
CCLOG("GCommon->scene_world->btn_gate->getPosition().y : %f", GCommon->scene_world->btn_gate->getPosition().y);
Point pt_gateholl = Point(DESIGN_WIDTH/2, 0) + Point(0, GCommon->scene_world->sv->getContentOffset().y + GCommon->scene_world->btn_gate->getPosition().y);
TCMD_CUSTOM(1) //월드맵 스크롤 정지
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_gateholl + Point(0, -150), pt_gateholl + Point(0, -160), 0, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, pt_gateholl, Point(2, 2))
TCMD_ADDMASK_CIRCLE(3, pt_gateholl, Point(3, 3))
TCMD_ADDTEXTFIELD("Meow! \nYou have just unlocked the next episode! \nEnjoy your Tip Tap Pop!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 150), true, false, false, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_CUSTOM(2) //월드맵 스크롤 정지 재개
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_WorldScene_Intro:
{
TCMD_CUSTOM(0) //월드맵 스크롤 높이고 떨어지는 스크롤 시작
Point pt_alice = Point(420, 200);
TCMD_ADDSPRITE("common_alice_falling.png", 0, eObjectMotion_Tramble, pt_alice, Point(0, 0), 10, 0.2, false, false, Point(1.2, 1.2), Point(0.5, 0.5));
TCMD_DELAYTIME(DELAY_ALICEFALLING_TUTORIAL)
TCMD_REMOVESPRITE(0)
TCMD_CUSTOM(1) //화면떨림
TCMD_ADDSPRITE("common_alice_fallen.png", 0, eObjectMotion_None, pt_alice, Point(0, 0), 0, 0, false, false, Point(1.2, 1.2), Point(0.5, 0.5));
TCMD_DELAYTIME(0.7)
TCMD_REMOVESPRITE(0)
TCMD_ADDSPRITE("common_alice_fallen2.png", 0, eObjectMotion_Tramble, pt_alice, Point(0, 0), 6, 0.1, false, false, Point(1.2, 1.2), Point(0.5, 0.5));
TCMD_DELAYTIME(1.0)
TCMD_REMOVESPRITE(0)
TCMD_DRAWFADEOVERLAY_ON
TCMD_ADDSKIPBUTTON
TCMD_ADDTEXTFIELD("Where… Where am I?\nI want to go home!", Point(DESIGN_WIDTH/2 - 21, DESIGN_HEIGHT/2 + 44), false, false, true, eTextFieldCharacter_AliceCryAni)
TCMD_HOLDCOMMAND
TCMD_ADDSPRITE("commonui_bmpopup_sp_alice2.png", 0, eObjectMotion_None, pt_alice + Point(-6, 21), Point(0, 0), 0, 0, true, false, Point(1, 1), Point(0.5, 0.5));
TCMD_ADDTEXTFIELD("Welcome to my Tip Tap Wonderland!\nIf you wish to go home, you must\ndefeat me, the Queen of Hearts!", Point(DESIGN_WIDTH/2 - 30, DESIGN_HEIGHT/2 + 109), true, false, true, eTextFieldCharacter_QueenNormalAni)
TCMD_HOLDCOMMAND
TCMD_ADDTEXTFIELD("Come and defeat me if you can!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2 + 137), true, false, false, eTextFieldCharacter_QueenWink)
TCMD_CUSTOM(2) //숨겼던 오브젝트들 보여주기
TCMD_CUSTOM(3) //월드맵 스크롤 정지
Point pt_stage0 = Point(DESIGN_WIDTH/2 - 16, 364);
TCMD_ADDSPRITE("commonui_tutorial_sp_finger.png", 2, eObjectMotion_GoAndBack, pt_stage0 + Point(0, -150), pt_stage0 + Point(0, -160), 0, 0.3, false, false, Point(1.0, 1.0), Point(0.5, 0.5));
TCMD_ADDTOUCHAREA(1, pt_stage0, Point(2, 2))
TCMD_ADDMASK_CIRCLE(3, pt_stage0, Point(3, 3))
TCMD_HOLDCOMMAND
TCMD_CUSTOM(4) //월드맵 스크롤 정지 재개
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_WorldScene_FreeFullHeart:
{
TCMD_DRAWFADEOVERLAY_ON
string text = "";
if(GameSetting::GetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL) == 0)
{
text = " I will give you Full Lives until you get to\nStage 30! Get through challenges easily!";
GameSetting::SetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL, GameSetting::GetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL) + 1);
}
else if(GameSetting::GetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL) == 1)
{
text = "Here’s another gift of Full Lives\nfor you to continue! Good luck!";
GameSetting::SetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL, GameSetting::GetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL) + 1);
}
else if(GameSetting::GetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL) == 2)
{
text = "Having fun? You're doing great!\nHere is another Full Lives to help you!";
GameSetting::SetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL, GameSetting::GetCustomIntValue(LB_GAMESETTING_COUNTWORLDTUTORIAL_FREEHEARTFULL) + 1);
}
else
{
text = "It’s a bit hard, isn’t it?\nBut no worries, here is your Full Lives!";
}
TCMD_ADDTEXTFIELD(text.c_str(), Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 100), false, false, true, eTextFieldCharacter_Cat)
TCMD_HOLDCOMMAND
TCMD_CUSTOM(0) //하트 주고 하트를 준것으로 저장
TCMD_DELAYTIME(0.9)
TCMD_FINISHTUTORIAL
}
break;
case eTutorialType_FirstBeginQueenStage:
{
TCMD_DELAYTIME(0.1)
TCMD_PAUSEGAME
TCMD_DRAWFADEOVERLAY_ON
TCMD_ADDSKIPBUTTON
TCMD_ADDTEXTFIELD("I see you made it this far. But this stage\nmight be super hard for you. Only I, the\nQueen of Hearts, have ever beat it!", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(0, 130), false, false, true, eTextFieldCharacter_QueenWink)
TCMD_HOLDCOMMAND
TCMD_FINISHTUTORIAL
}
break;
default:
{
}
break;
}
DoTutorialCmd();
}
AMTutorialLayer::AMTutorialLayer():cur_TutorialCmdObject(TutorialCmdObject(eTutorialCMD_None))
{
NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(AMTutorialLayer::DoTutorialCmdAfterDelay), AM_NOTI_TUTORIAL_DOCOMMANDAFTERDELAY, NULL);
auto listener1 = EventListenerTouchOneByOne::create();
listener1->setSwallowTouches(true);
listener1->onTouchBegan = CC_CALLBACK_2(AMTutorialLayer::onTouchBegan, this);
listener1->onTouchMoved = CC_CALLBACK_2(AMTutorialLayer::onTouchMoved, this);
listener1->onTouchEnded = CC_CALLBACK_2(AMTutorialLayer::onTouchEnded, this);
getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener1, this);
rendertextrue = RenderTexture::create(DESIGN_WIDTH, DESIGN_HEIGHT, Texture2D::PixelFormat::RGBA8888);
rendertextrue->setPosition(Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2));
addChild(rendertextrue, 0);
bOverlayShown = false;
node_fortextfield = Node::create();
addChild(node_fortextfield, 1);
// node_forarrow = Node::create();
// addChild(node_forarrow, 2);
node_forsprite = Node::create();
addChild(node_forsprite, 3);
// node_forfinger = Node::create();
// addChild(node_forfinger, 4);
node_forskipbutton = Node::create();
addChild(node_forskipbutton, 5);
node_fortoucharea_debug = Node::create();
addChild(node_fortoucharea_debug, 6);
arr_mask = Array::create();
arr_mask->retain();
arr_toucharea = Array::create();
arr_toucharea->retain();
cur_TutorialType = eTutorialType_None;
}
AMTutorialLayer::~AMTutorialLayer()
{
NotificationCenter::getInstance()->removeAllObservers(this);
l_TutorialCmd.clear();
arr_mask->release();
arr_mask = nullptr;
arr_toucharea->release();
arr_toucharea = nullptr;
rendertextrue = nullptr;
node_fortextfield = nullptr;
// node_forarrow = nullptr;
node_forsprite = nullptr;
// node_forfinger = nullptr;
node_forskipbutton = nullptr;
node_fortoucharea_debug = nullptr;
}
bool AMTutorialLayer::onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event)
{
Point touchpos = touch->getLocation();
CCLOG("touch (%f, %f)", touchpos.x, touchpos.y);
touchpos = touchpos + Point(SCREENGAP_WIDTH, 0);
for(int i = 0 ; i < arr_toucharea->count() ; i++)
{
LayerAreaRectObject *laro = (LayerAreaRectObject*)arr_toucharea->getObjectAtIndex(i);
CCLOG("laro (%f, %f)", laro->pos.x, laro->pos.y);
if(touchpos.x > laro->pos.x - SIZE_BASICAREA.width*laro->scale.x*0.5
&& touchpos.x < laro->pos.x + SIZE_BASICAREA.width*laro->scale.x*0.5
&& touchpos.y > laro->pos.y - SIZE_BASICAREA.height*laro->scale.y*0.5
&& touchpos.y < laro->pos.y + SIZE_BASICAREA.height*laro->scale.y*0.5)
{
// distance_add = 0;
return false;
}
}
return true;
}
void AMTutorialLayer::onTouchMoved(cocos2d::Touch *touch, cocos2d::Event *event)
{
/*
CCLOG("2222");
Point start = touch->getLocation();
Point end = touch->getPreviousLocation();
float distance = start.getDistance(end);
distance_add += distance;
if(cur_TutorialType == eTutorialType_GameMode_Heart && distance_add > 700)
{
DoTutorialCmd();
}*/
}
void AMTutorialLayer::onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event)
{
}
void AMTutorialLayer::DoTutorialCmdAfterDelay(Ref *o)
{
runAction(Sequence::create(DelayTime::create(((Node*)o)->getTag()/100.0), CallFuncN::create(CC_CALLBACK_0(AMTutorialLayer::DoTutorialCmd, this)), NULL));
}
void AMTutorialLayer::DoTutorialCmdAfterDelay(float delay)
{
runAction(Sequence::create(DelayTime::create(delay), CallFuncN::create(CC_CALLBACK_0(AMTutorialLayer::DoTutorialCmd, this)), NULL));
}
void AMTutorialLayer::RefreshOverlay()
{
rendertextrue->clear(0, 0, 0, 0);
rendertextrue->begin();
Sprite *fade = GCommon->CreateSpriteWithSpriteFrameName("commonui_tutorial_mask_roundrect.png", Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2), Point(0.5, 0.5), 15);
fade->setColor(Color3B(0, 0, 0));
fade->setOpacity(180);
bOverlayShown = true;
fade->visit();
for(int i = 0 ; i < arr_mask->count() ; i++)
{
BlendFunc b;
b.src = GL_ZERO;
b.dst = GL_ONE_MINUS_SRC_ALPHA;
LayerAreaRectObject *laro = (LayerAreaRectObject*)arr_mask->getObjectAtIndex(i);
string imgfile = "";
switch(laro->MaskType)
{
case eMaskType_Circle:
{
imgfile = "commonui_tutorial_mask_circle.png";
Sprite *sp_circle = GCommon->CreateSpriteWithSpriteFrameName(imgfile, laro->pos);
sp_circle->setScale(laro->scale.x, laro->scale.y);
sp_circle->setBlendFunc(b);
sp_circle->visit();
}
break;
case eMaskType_RoundRect:
{
if(0) //old version (3.0alpha style)
{
imgfile = "commonui_tutorial_mask_roundrect.png";
Scale9Sprite *sp_rect = Scale9Sprite::createWithSpriteFrameName(imgfile.c_str(), Rect(30, 30, 30, 30));
sp_rect->setPosition(laro->pos);
sp_rect->setAnchorPoint(Point(0.5, 0.5));
sp_rect->setPreferredSize(Size(SIZE_BASICAREA.width*laro->scale.x, SIZE_BASICAREA.height*laro->scale.y));
//check30
if(sp_rect && sp_rect->getChildrenCount())
((SpriteBatchNode*)sp_rect->getChildren().at(sp_rect->getChildrenCount()-1))->setBlendFunc(b);
sp_rect->cocos2d::Node::visit();
//check30
}
else //temp solution
{
imgfile = "commonui_tutorial_mask_roundrect.png";
Sprite *sp_circle = GCommon->CreateSpriteWithSpriteFrameName(imgfile, laro->pos);
sp_circle->setAnchorPoint(Point(0.5, 0.5));
sp_circle->setScale(laro->scale.x, laro->scale.y);
sp_circle->setBlendFunc(b);
sp_circle->visit();
}
}
break;
}
}
rendertextrue->end();
}
void AMTutorialLayer::DoTutorialCmd()
{
if(l_TutorialCmd.size() == 0)
return;
cur_TutorialCmdObject = *(l_TutorialCmd.begin());
l_TutorialCmd.pop_front();
// if(cur_TutorialType == eTutorialType_InGame_BasicRule && l_TutorialCmd.size() == 9)
// {
// }
CCLOG("[-------DoTutorialCmd : %d] list size : %d", cur_TutorialCmdObject.CMD, (int)l_TutorialCmd.size());
switch(cur_TutorialCmdObject.CMD)
{
case eTutorialCMD_None:
{
}
break;
case eTutorialCMD_PauseGame:
{
if(GCommon->SceneType == eScene_Game)
{
if(!cur_TutorialCmdObject.bReverse)
GPopupLayer->PauseGame();
else
GPopupLayer->ResumeGame();
}
DoTutorialCmd();
}
break;
// case eTutorialCMD_SetLayerVisible:
// {
// DoTutorialCmd();
//
// }
// break;
case eTutorialCMD_DelayTime:
{
DoTutorialCmdAfterDelay(cur_TutorialCmdObject.delay);
}
break;
case eTutorialCMD_DrawFadeOverlay:
{
if(!cur_TutorialCmdObject.bReverse)
{
RefreshOverlay();
}
else
{
rendertextrue->clear(0, 0, 0, 0);
}
DoTutorialCmd();
}
break;
case eTutorialCMD_AddMask:
{
if(!cur_TutorialCmdObject.bReverse)
{
LayerAreaRectObject *laro = new LayerAreaRectObject;
laro->autorelease();
laro->tag = cur_TutorialCmdObject.tag;
laro->pos = cur_TutorialCmdObject.pt1;
laro->scale = cur_TutorialCmdObject.scale;
laro->MaskType = (eMaskType)cur_TutorialCmdObject.ObjectMotion;
arr_mask->addObject(laro);
if(bOverlayShown)
RefreshOverlay();
else
rendertextrue->clear(0, 0, 0, 0);
}
else
{
if(cur_TutorialCmdObject.tag == 0)
{
arr_mask->removeAllObjects();
}
else
{
for(int i = 0 ; i < arr_mask->count() ; i++)
{
LayerAreaRectObject *laro = (LayerAreaRectObject*)arr_mask->getObjectAtIndex(i);
if(cur_TutorialCmdObject.tag == laro->tag)
{
arr_mask->removeObject(laro);
break;
}
}
}
RefreshOverlay();
}
DoTutorialCmd();
}
break;
case eTutorialCMD_AddTouchableArea:
{
if(!cur_TutorialCmdObject.bReverse)
{
LayerAreaRectObject *laro = new LayerAreaRectObject;
laro->autorelease();
laro->tag = cur_TutorialCmdObject.tag;
laro->pos = cur_TutorialCmdObject.pt1;
laro->scale = cur_TutorialCmdObject.scale;
arr_toucharea->addObject(laro);
Sprite *sp = GCommon->CreateSpriteWithSpriteFrameName("commonui_tutorial_touchtest.png", cur_TutorialCmdObject.pt1);
sp->setScale(cur_TutorialCmdObject.scale.x, cur_TutorialCmdObject.scale.y);
sp->setTag(cur_TutorialCmdObject.tag);
node_fortoucharea_debug->addChild(sp);
#if DEBUG_TOUCHAREA == 0
sp->setOpacity(0);
#endif
}
else
{
if(cur_TutorialCmdObject.tag == 0)
{
arr_toucharea->removeAllObjects();
node_fortoucharea_debug->removeAllChildren();
}
else
{
for(int i = 0 ; i < arr_toucharea->count() ; i++)
{
LayerAreaRectObject *laro = (LayerAreaRectObject*)arr_toucharea->getObjectAtIndex(i);
if(cur_TutorialCmdObject.tag == laro->tag)
{
arr_toucharea->removeObject(laro);
break;
}
}
Sprite *sp = (Sprite*)node_fortoucharea_debug->getChildByTag(cur_TutorialCmdObject.tag);
if(sp)
sp->removeFromParent();
}
}
DoTutorialCmd();
}
break;
case eTutorialCMD_AddTextField:
{
if(!cur_TutorialCmdObject.bReverse)
{
node_fortextfield->removeFromParent();
node_fortextfield = Node::create();
addChild(node_fortextfield, 1);
IntPoint pivot = IntPoint(1, 1);
if(cur_TutorialCmdObject.bFlipedX)
pivot.x = -1;
if(cur_TutorialCmdObject.bFlipedY)
pivot.y = -1;
Sprite *character = nullptr;
Point pt_character = Point(0, 0);
if(cur_TutorialCmdObject.text.compare("") != 0)
{
Label *lb_text = GCommon->CreateLabel(cur_TutorialCmdObject.text, FONT_GOTHICBOLD, 30, cur_TutorialCmdObject.pt1, Point(0.5, 0.5), Color3B(77, 46, 6));
node_fortextfield->addChild(lb_text, 3);
// lb_text->setPosition(adjust_custom + lb_text->getPosition() + Point((lb_text->getContentSize().width/2 + 50)*pivot.x, (lb_text->getContentSize().height/2 + 150)*pivot.y));
pt_character = cur_TutorialCmdObject.pt1 - Point((lb_text->getContentSize().width/2 + 50) * pivot.x, (lb_text->getContentSize().height/2 + 150) * pivot.y);
Scale9Sprite *sp_tile = Scale9Sprite::createWithSpriteFrameName("commonui_tutorial_sp_textfield.png", Rect(20, 20, 20, 20));
sp_tile->setPreferredSize(lb_text->getContentSize() + Size(100, 50));
sp_tile->setAnchorPoint(Point(0.5, 0.5));
sp_tile->setPosition(cur_TutorialCmdObject.pt1);
sp_tile->setPosition(lb_text->getPosition());
node_fortextfield->addChild(sp_tile, 1);
Sprite *sp_tile_tag = GCommon->CreateSpriteWithSpriteFrameName("commonui_tutorial_sp_textfield_tag.png", Point(0, 0));
if(cur_TutorialCmdObject.bFlipedX)
sp_tile_tag->setPosition(Point(sp_tile->getContentSize().width, 0));
sp_tile_tag->setPosition(sp_tile_tag->getPosition() + Point(140*pivot.x, -11));
sp_tile_tag->setFlippedX(cur_TutorialCmdObject.bFlipedX);
sp_tile->addChild(sp_tile_tag, 1000);
if(cur_TutorialCmdObject.bOKBtn)
{
AMControlButton *btn_skip = AMControlButton::CreateWithScale9Sprite(Scale9Sprite::createWithSpriteFrameName("common_ui_sidepopup_btn_yellow.png", Rect(15, 12, 83, 12)), GCommon->CreateLabel("OK", FONT_MAIN, 34, Point(0, 0), Point(0, 0), Color3B(107, 60, 0)), true);
btn_skip->setPreferredSize(Size(150, 50));
btn_skip->setAnchorPoint(Point(0.5, 0.5));
btn_skip->addTargetWithActionForControlEvents(this, cccontrol_selector(AMTutorialLayer::OnBtn_OK), Control::EventType::TOUCH_UP_INSIDE);
sp_tile->addChild(btn_skip);
if(!cur_TutorialCmdObject.bFlipedX)
btn_skip->setPosition(Point(sp_tile->getContentSize().width, 0));
btn_skip->setPosition(btn_skip->getPosition() + Point(-80*pivot.x, -27));
}
}
switch(cur_TutorialCmdObject.tag)
{
case eTextFieldCharacter_Cat:
{
character = GCommon->CreateSpriteWithSpriteFrameName("commonui_tutorial_sp_cat.png", pt_character);
node_fortextfield->addChild(character);
character->runAction(AMMoveByUpDown(0.4, character->getPosition(), Point(0, 5)));
}
break;
case eTextFieldCharacter_AliceCryAni:
{
character = Sprite::createWithSpriteFrameName("gameblock_0empty.png");
character->setPosition(pt_character);
character->setFlippedX(true);
node_fortextfield->addChild(character);
Animation *ani = Animation::create();
ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("commonui_bmpopup_sp_alice1.png"));
ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("commonui_bmpopup_sp_alice2.png"));
float delay_cut = 0.4f;
ani->setDelayPerUnit(delay_cut);
ani->setLoops(kRepeatForever);
character->runAction(Animate::create(ani));
}
break;
case eTextFieldCharacter_QueenNormalAni:
{
character = Sprite::createWithSpriteFrameName("gameblock_0empty.png");
character->setPosition(pt_character);
node_fortextfield->addChild(character);
Animation *ani = Animation::create();
ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("common_balice_normal1.png"));
ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("common_balice_normal2.png"));
float delay_cut = 0.6f;
ani->setDelayPerUnit(delay_cut);
ani->setLoops(kRepeatForever);
character->runAction(Animate::create(ani));
}
break;
case eTextFieldCharacter_QueenWink:
{
character = GCommon->CreateSpriteWithSpriteFrameName("common_balice_wink.png", pt_character);
node_fortextfield->addChild(character);
if(cur_TutorialType == eTutorialType_WorldScene_Intro)
character->setPosition(character->getPosition() + Point(0, -60));
}
break;
}
}
else
{
node_fortextfield->removeFromParent();
node_fortextfield = Node::create();
addChild(node_fortextfield, 1);
}
DoTutorialCmd();
}
break;
case eTutorialCMD_AddSprite:
{
if(!cur_TutorialCmdObject.bReverse)
{
Sprite *sp = nullptr;
if(SpriteFrameCache::getInstance()->getSpriteFrameByName(cur_TutorialCmdObject.filepath))
{
sp = Sprite::createWithSpriteFrameName(cur_TutorialCmdObject.filepath);
}
else
{
sp = Sprite::create(cur_TutorialCmdObject.filepath);
}
sp->setPosition(cur_TutorialCmdObject.pt1);
sp->setTag(cur_TutorialCmdObject.tag);
sp->setFlippedX(cur_TutorialCmdObject.bFlipedX);
sp->setFlippedY(cur_TutorialCmdObject.bFlipedY);
sp->setRotation(cur_TutorialCmdObject.rotation);
sp->setScale(cur_TutorialCmdObject.scale.x, cur_TutorialCmdObject.scale.y);
sp->setAnchorPoint(cur_TutorialCmdObject.anchor);
node_forsprite->addChild(sp);
switch(cur_TutorialCmdObject.ObjectMotion)
{
case eObjectMotion_None:
{
}
break;
case eObjectMotion_GoAndBack:
{
sp->runAction(AMMoveByUpDown(cur_TutorialCmdObject.delay, sp->getPosition(), cur_TutorialCmdObject.pt1 - cur_TutorialCmdObject.pt2));
}
break;
case eObjectMotion_Teleport:
{
sp->runAction(Repeat::create(Sequence::create(DelayTime::create(cur_TutorialCmdObject.delay), CallFuncN::create(CC_CALLBACK_1(AMTutorialLayer::SetSpritePos, this, cur_TutorialCmdObject.pt2)), DelayTime::create(cur_TutorialCmdObject.delay), CallFuncN::create(CC_CALLBACK_1(AMTutorialLayer::SetSpritePos, this, cur_TutorialCmdObject.pt1)), NULL), kRepeatForever));
}
break;
case eObjectMotion_Move:
{
sp->runAction(Repeat::create(Sequence::create(MoveTo::create(cur_TutorialCmdObject.delay, cur_TutorialCmdObject.pt2), CallFuncN::create(CC_CALLBACK_1(AMTutorialLayer::SetSpritePos, this, cur_TutorialCmdObject.pt1)), NULL), kRepeatForever));
}
break;
case eObjectMotion_Tramble:
{
sp->setRotation(cur_TutorialCmdObject.rotation * 0.5);
sp->runAction(Repeat::create(Sequence::create(RotateBy::create(cur_TutorialCmdObject.delay, -cur_TutorialCmdObject.rotation), RotateBy::create(cur_TutorialCmdObject.delay, cur_TutorialCmdObject.rotation), NULL), kRepeatForever));
}
break;
}
}
else
{
if(cur_TutorialCmdObject.tag == 0)
{
node_forsprite->removeAllChildren();
}
else
{
Sprite *sp = (Sprite*)node_forsprite->getChildByTag(cur_TutorialCmdObject.tag);
if(sp)
sp->removeFromParent();
}
}
DoTutorialCmd();
}
break;
case eTutorialCMD_AddSkipButton:
{
AMControlButton *btn_skip = AMControlButton::CreateWithScale9Sprite(Scale9Sprite::createWithSpriteFrameName("common_ui_sidepopup_btn_pupple.png", Rect(15, 12, 83, 12)), GCommon->CreateLabel("SKIP", FONT_MAIN, 34, Point(0, 0), Point(0, 0), Color3B(90, 68, 83)), true);
btn_skip->setPreferredSize(Size(150, 50));
btn_skip->addTargetWithActionForControlEvents(this, cccontrol_selector(AMTutorialLayer::OnBtn_Skip), Control::EventType::TOUCH_UP_INSIDE);
node_forskipbutton->addChild(btn_skip);
btn_skip->setPosition(Point(SCREENGAP_WIDTH + 100, DESIGN_HEIGHT - 50));
DoTutorialCmd();
}
break;
case eTutorialCMD_HoldCommand:
{
//do nothing
}
break;
case eTutorialCMD_Custom:
{
switch(cur_TutorialType)
{
case eTutorialType_InGame_BasicRule:
{
switch(cur_TutorialCmdObject.tag)
{
case 0:
{
for(int i = 0 ; i < GStageLayer->getChildren().size() ; i++)
{
Node *node = (Node*)GStageLayer->getChildren().at(i);
node->resume();
}
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_RESETBLOCKMATCHLINE);
}
break;
case 1:
{
AMBlock *block = GStageLayer->GetBlockByPos(IntPoint(9, 3));
block->sp_block->runAction(Repeat::create(Sequence::create(FadeOut::create(0.35), FadeIn::create(0.35), NULL), kRepeatForever));
}
break;
case 2:
{
AMBlock *block = GStageLayer->GetBlockByPos(IntPoint(9, 3));
block->sp_block->stopAllActions();
block->sp_block->setOpacity(255);
}
break;
}
}
break;
case eTutorialType_EpisodeUnlock:
{
switch(cur_TutorialCmdObject.tag)
{
case 0:
DBManager::sharedManager()->AddMessage(SYSTEM_MESSAGE, "", eCashesUIType_TutorialKey + 2, 1, "Alice sent you a Key!");
DBManager::sharedManager()->AddMessage(SYSTEM_MESSAGE, "", eCashesUIType_TutorialKey + 1, 1, "Queen of Heart sent you a Key!");
DBManager::sharedManager()->AddMessage(SYSTEM_MESSAGE, "", eCashesUIType_TutorialKey, 1, "Cheshire Cat sent you a Key!");
NotificationCenter::getInstance()->postNotification(AM_NOTI_UPDATEWORLDUIPOPMENULABEL);
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_CLOSEEPISODEPOPUP);
break;
case 1:
GCommon->scene_world->sv->setTouchEnabled(false);
break;
case 2:
GCommon->scene_world->sv->setTouchEnabled(true);
break;
}
}
break;
case eTutorialType_WorldScene_Intro:
{
switch(cur_TutorialCmdObject.tag)
{
case 0:
{
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_SETSCROLLUPANDALICEFALLDOWN);
}
break;
case 1:
{
GCommon->BounceLayer(GCommon->scene_world, 0);
GCommon->BounceLayer(GCommon->scene_world, 0.15);
GCommon->BounceLayer(GCommon->scene_world, 0.26);
GCommon->BounceLayer(GCommon->scene_world, 0.40);
}
break;
case 2:
{
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_SETVISIBLEONSPRITESONCEHIDE);
}
break;
case 3:
GCommon->scene_world->sv->setTouchEnabled(false);
break;
case 4:
GCommon->scene_world->sv->setTouchEnabled(true);
break;
}
}
break;
/*
case eTutorialType_WorldScene_Clear1Stage: case eTutorialType_WorldScene_Begin14Stage:
{
switch(cur_TutorialCmdObject.tag)
{
case 0:
{
if(cur_TutorialType == eTutorialType_WorldScene_Clear1Stage)
GameSetting::SetCustomIntValue(LB_GAMESETTING_ISDIDWORLDTUTORIAL_CLEAR1, 1);
else if(cur_TutorialType == eTutorialType_WorldScene_Begin14Stage)
GameSetting::SetCustomIntValue(LB_GAMESETTING_ISDIDWORLDTUTORIAL_CLEAR14, 1);
if(cur_TutorialType == eTutorialType_WorldScene_Begin14Stage)
GCommon->scene_world->layer_Cashes_Life->AddCashesWithAnimation(eCashesUIType_Life, Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(225, 0), NUM_FREEHEART_TUTORIAL14, false, 50, 0);
else
GCommon->scene_world->layer_Cashes_Life->AddCashesWithAnimation(eCashesUIType_Life, Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(290, 0), NUM_FREEHEART_TUTORIAL1, false, 50, 0);
}
break;
}
}
break;
*/
case eTutorialType_WorldScene_FreeFullHeart:
{
switch(cur_TutorialCmdObject.tag)
{
case 0:
{
GCommon->scene_world->layer_Cashes_Life->AddCashesWithAnimation(eCashesUIType_Life, Point(DESIGN_WIDTH/2, DESIGN_HEIGHT/2) + Point(225, 0), GameSetting::CurrentMaxLife(), false, 50, 0);
}
break;
}
}
break;
default:
{
}
break;
}
DoTutorialCmd();
}
break;
case eTutorialCMD_FinishTutorial:
{
if(GCommon->SceneType == eScene_Game)
{
GPopupLayer->ResumeGame();
}
GTutorialLayer = nullptr;
switch(cur_TutorialType)
{
case eTutorialType_InGame_BasicRule:
{
for(int i = 0 ; i < GStageLayer->getChildren().size() ; i++)
{
Node *node = (Node*)GStageLayer->getChildren().at(i);
node->resume();
}
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_RESETBLOCKMATCHLINE);
}
break;
case eTutorialType_WorldScene_Intro:
{
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_SETVISIBLEONSPRITESONCEHIDE);
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_INTROEND);
}
break;
/*
case eTutorialType_WorldScene_Clear1Stage: case eTutorialType_WorldScene_Begin14Stage:
{
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_INTROEND);
}
break;*/
case eTutorialType_WorldScene_FreeFullHeart:
{
NotificationCenter::getInstance()->postNotification(AM_NOTI_TUTORIAL_INTROEND);
}
break;
default:
{
}
break;
}
cur_TutorialType = eTutorialType_None;
this->removeFromParent();
}
break;
}
}
void AMTutorialLayer::OnBtn_Skip(Ref *o, Control::EventType e)
{
GSound->playEffect(SOUND_EFFECT_UIBUTTONNORMAL_FILE, SOUND_EFFECT_UIBUTTONNORMAL_GAIN);
while(l_TutorialCmd.size() > 1)
{
l_TutorialCmd.pop_front();
}
DoTutorialCmd();
}
void AMTutorialLayer::OnBtn_OK(Ref *o, Control::EventType e)
{
AMControlButton *btn = (AMControlButton*)o;
btn->setVisible(false);
GSound->playEffect(SOUND_EFFECT_UIBUTTONNORMAL_FILE, SOUND_EFFECT_UIBUTTONNORMAL_GAIN);
DoTutorialCmd();
}
void AMTutorialLayer::SetSpritePos(Node *node, Point pos)
{
Sprite *sp = (Sprite*)node;
sp->setPosition(pos);
}