-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #52 from Skyue1/main
tutorial layer
- Loading branch information
Showing
4 changed files
with
184 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,155 @@ | ||
#include "TutorialLayer.h" | ||
#include <MenuItemSpriteExtra.h> | ||
#include "ccUTF8.h" | ||
#include <GameToolbox/getTextureString.h> | ||
#include "ui/UIScale9Sprite.h" | ||
#include "ButtonSprite.h" | ||
|
||
USING_NS_AX; | ||
|
||
TutorialLayer* TutorialLayer::create() | ||
{ | ||
auto layer = new TutorialLayer(); | ||
if (layer && layer->init()) | ||
{ | ||
layer->autorelease(); | ||
return layer; | ||
} | ||
else | ||
{ | ||
delete layer; | ||
return nullptr; | ||
} | ||
} | ||
|
||
bool TutorialLayer::init() | ||
{ | ||
if (!PopupLayer::init()) return false; | ||
|
||
std::string bigFontStr = GameToolbox::getTextureString("bigFont.fnt"); | ||
|
||
auto director = Director::getInstance(); | ||
const auto& winSize = director->getWinSize(); | ||
|
||
layer1 = Layer::create(); | ||
addChild(layer1); | ||
|
||
auto bg = ui::Scale9Sprite::create(GameToolbox::getTextureString("GJ_square01.png")); | ||
bg->setContentSize({ 420.0f, 260.0f }); | ||
bg->setPosition({ 294.500f, 163.000f }); | ||
bg->setScale(1.000f); | ||
layer1->addChild(bg); | ||
|
||
auto label = Label::createWithBMFont(bigFontStr, "How to play"); | ||
label->setPosition({ 282.500f, 265.000f }); | ||
label->setScale(1.0f); | ||
label->setContentSize({ 207.500f, 32.500f }); | ||
float labelWidth = label->getContentSize().width; | ||
if (labelWidth > 300.0f) | ||
{ | ||
label->setScaleX(300.0f / labelWidth); | ||
} | ||
layer1->addChild(label); | ||
|
||
tap_label = Label::createWithBMFont(bigFontStr, "Tap the screen to jump.\n"); | ||
tap_label->setPosition({ 278.600f, 222.100 }); // tap_label->setPosition({ 278.600f, 222.100f }); | ||
tap_label->setScale(0.700f); | ||
tap_label->setContentSize({ 414.000f, 32.500f }); | ||
layer1->addChild(tap_label); | ||
|
||
hold_label = Label::createWithBMFont(bigFontStr, "Hold down to keep jumping."); | ||
hold_label->setPosition({ 294.800f, 193.200f }); | ||
hold_label->setScale(0.800f); | ||
hold_label->setContentSize({ 464.250f, 32.500f }); | ||
layer1->addChild(hold_label); | ||
|
||
auto imageSprite = Sprite::create(GameToolbox::getTextureString("tutorial_01.png")); | ||
imageSprite->setScale(0.950f); | ||
imageSprite->setPosition({ 239.000f, 84.000f }); | ||
imageSprite->setContentSize({ 283.500, 55.000f }); | ||
imageSprite->setStretchEnabled(false); | ||
layer1->addChild(imageSprite); | ||
|
||
auto nextButtonSprite = ButtonSprite::create("Next"); | ||
auto nextButton = MenuItemSpriteExtra::create(nextButtonSprite, [&](Node*) { this->onNext(); }); | ||
nextButton->setScale(1.0f); | ||
auto nextButtonMenu = Menu::createWithItem(nextButton); | ||
nextButtonMenu->setPosition({ 437.250f, 84.000f }); | ||
nextButtonMenu->setTag(150); | ||
layer1->addChild(nextButtonMenu); | ||
|
||
currentTutorialIndex = 1; | ||
|
||
auto closeButtonSprite = Sprite::createWithSpriteFrameName("GJ_closeBtn_001.png"); | ||
auto closeButton = MenuItemSpriteExtra::create(closeButtonSprite, [&](Node*) { this->close(); }); | ||
closeButton->setScale(0.950f); | ||
auto closeButtonMenu = Menu::createWithItem(closeButton); | ||
closeButtonMenu->setPosition({ 93.000f, 285.750f }); | ||
layer1->addChild(closeButtonMenu); | ||
|
||
return true; | ||
} | ||
|
||
void TutorialLayer::onNext() | ||
{ | ||
currentTutorialIndex++; | ||
std::string fileName = "tutorial_0" + std::to_string(currentTutorialIndex) + ".png"; | ||
layer1->removeChildByName("tutorial_01.png"); | ||
|
||
if (fileName == "tutorial_02.png") | ||
{ | ||
tap_label->setString("Hold to fly up.\n"); | ||
hold_label->setString("Release to fly down."); | ||
} | ||
if (fileName == "tutorial_03.png") | ||
{ | ||
tap_label->setString(" \nYou can enter practice mode from\n the pause menu.\n"); | ||
tap_label->setScale(0.600f); | ||
tap_label->setAlignment(TextHAlignment::CENTER); | ||
|
||
hold_label->setString(" \nPractice mode lets you place\n checkpoints."); | ||
hold_label->setScale(0.600f); | ||
hold_label->setAlignment(TextHAlignment::CENTER); | ||
} | ||
if (fileName == "tutorial_04.png") | ||
{ | ||
tap_label->setString(" \nYou can place checkpoints manually, or\n use the auto-checkpoint feature.\n"); | ||
tap_label->setScale(0.550f); | ||
tap_label->setAlignment(TextHAlignment::CENTER); | ||
tap_label->setPosition({ 291.600f, 222.100f }); | ||
|
||
hold_label->setString(" \nTap the delete button to remove your\n last checkpoint."); | ||
hold_label->setScale(0.600f); | ||
hold_label->setAlignment(TextHAlignment::CENTER); | ||
} | ||
if (fileName == "tutorial_05.png") | ||
{ | ||
tap_label->setString(" \nJump rings activate when you are on\n top of them.\n"); | ||
tap_label->setScale(0.600f); | ||
tap_label->setAlignment(TextHAlignment::CENTER); | ||
|
||
hold_label->setString(" \nTap while touching a ring to perform\n a ring jump."); | ||
hold_label->setScale(0.600f); | ||
hold_label->setAlignment(TextHAlignment::CENTER); | ||
|
||
layer1->removeChildByTag(150, true); | ||
auto exitButtonSprite = ButtonSprite::create("Exit"); | ||
auto exitButton = MenuItemSpriteExtra::create(exitButtonSprite, [&](Node*) { this->close(); }); | ||
exitButton->setScale(1.0f); | ||
auto exitButtonMenu = Menu::createWithItem(exitButton); | ||
exitButtonMenu->setPosition({ 437.250f, 84.000f }); | ||
layer1->addChild(exitButtonMenu); | ||
} | ||
if (layer1) | ||
{ | ||
if (currentTutorialIndex <= 5) | ||
{ | ||
auto imageSprite = Sprite::create(GameToolbox::getTextureString(fileName)); | ||
imageSprite->setScale(0.950f); | ||
imageSprite->setPosition({ 239.000f, 84.000f }); | ||
imageSprite->setContentSize({ 283.500, 55.000f }); | ||
imageSprite->setStretchEnabled(false); | ||
layer1->addChild(imageSprite); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#pragma once | ||
#include "2d/CCLayer.h" | ||
#include "2d/CCNode.h" | ||
#include "2d/CCLayer.h" | ||
#include "CCDirector.h" | ||
#include "2d/CCLabel.h" | ||
#include "2d/CCMenu.h" | ||
|
||
#include "PopupLayer.h" | ||
|
||
class TutorialLayer : public PopupLayer | ||
{ | ||
private: | ||
int currentTutorialIndex; | ||
ax::Layer* layer1; | ||
ax::Label* tap_label; | ||
ax::Label* hold_label; | ||
public: | ||
bool init(); | ||
void onNext(); | ||
static TutorialLayer* create(); | ||
}; |