Example #1
0
bool ResultScene::init(){
    if (!Layer::init()){
        return false;
    }

    auto visibleSize = Director::getInstance()->getVisibleSize();

    auto bgimage = Sprite::create("background/dimension-light.png");
    this->addChild(bgimage, Z_BACK);
    bgimage->setPosition(visibleSize / 2);
    bgimage->setScale(1.3);

    auto bgimage2 = Sprite::create("background/water.png");
    this->addChild(bgimage2, Z_BACK);
    bgimage2->setPosition(0, visibleSize.height / 2);
    bgimage2->setAnchorPoint(Vec2(0, 0.5));
    bgimage2->setScale(3, 1.3);
    bgimage2->setBlendFunc(GL_BLEND_SCREENMODE);
    bgimage2->setOpacity(200);
    bgimage2->setTag(100);

    auto tempText = LabelTTF::create("Total money you get: ", "Segoe UI", 36);
    tempText->setPosition(100, visibleSize.height - 300);
    tempText->setHorizontalAlignment(TextHAlignment::LEFT);
    tempText->setVerticalAlignment(TextVAlignment::CENTER);
    tempText->setAnchorPoint(Vec2(0, 0.5));
    tempText->setTag(101);
    this->addChild(tempText, Z_UI);

    auto amountPla = LabelTTF::create("Amount of planaria you make: ", "Segoe UI", 36);
    amountPla->setPosition(tempText->getPositionX(), tempText->getPositionY() - 60);
    amountPla->setHorizontalAlignment(TextHAlignment::LEFT);
    amountPla->setVerticalAlignment(TextVAlignment::CENTER);
    amountPla->setAnchorPoint(Vec2(0, 0.5));
    amountPla->setTag(102);
    this->addChild(amountPla, Z_UI);

    auto amountDead = LabelTTF::create("Amount of planaria you cut: ", "Segoe UI", 36);
    amountDead->setPosition(amountPla->getPositionX(), amountPla->getPositionY() - 60);
    amountDead->setHorizontalAlignment(TextHAlignment::LEFT);
    amountDead->setVerticalAlignment(TextVAlignment::CENTER);
    amountDead->setAnchorPoint(Vec2(0, 0.5));
    amountDead->setTag(103);
    this->addChild(amountDead, Z_UI);

    this->schedule(schedule_selector(ResultScene::Mainloop));

    b2Aquarium = Sprite::create("retry.png"); \
    b2Aquarium->setAnchorPoint(Vec2::ANCHOR_MIDDLE_BOTTOM); \
    b2Aquarium->setPosition(visibleSize.width / 2, 0); \
    this->addChild(b2Aquarium);

    return true;
}
Example #2
0
static inline Layer* makeItem(string sprite, string text, char code, bool numbered=false)
{
    Layer* l = Layer::create();
    Layer* s = Layer::create();
    auto sp = MAKESPRITE(sprite);
    l->addChild(s);
    s->addChild(sp);
    s->setPosition(Point(-64, -64));
    auto t = makeText(text);
    s->setTag(1);

    t->setTag(2);
    l->addChild(t);

    auto spriteSize = sp->getContentSize();
    auto spriteMidPoint = Point(
                              spriteSize.width * 0.5f,
                              spriteSize.height * 0.5f);
    sp->setPosition(spriteMidPoint);
    sp->setTag(0);

    if (numbered)
    {
        auto num = Label::createWithBMFont(MATH_FNT, "--");
        sp->addChild(num);
        num->setHorizontalAlignment(TextHAlignment::CENTER);
        num->setVerticalAlignment(TextVAlignment::BOTTOM);
        num->setPosition(Point(32, 34));
    }
    return l;
}
Example #3
0
static inline Label* makeText(string text, float size=28.0f)
{
    auto lbl = Label::createWithTTF(text, NORMAL_TTF, size);
    lbl->setPositionX(10);
    lbl->setAnchorPoint(Point(0, 1));
    lbl->setHorizontalAlignment(TextHAlignment::LEFT);
    lbl->enableShadow(Color4B::BLACK, Size(0.5f, -1.0f), 1);
    return lbl;
}
Example #4
0
	void Label::setParameter(const String& name, const String& value) {
		if(name == "caption") this->setCaption(value);
		else if(name == "autoSizeX") this->setAutoSizeX(value=="true"?true:false);
		else if(name == "autoSizeY") this->setAutoSizeY(value=="true"?true:false);
		else if(name == "horizontalAlignment") {
			if(value == "left") setHorizontalAlignment(HA_LEFT);
			else if(value == "right") setHorizontalAlignment(HA_RIGHT);
			else if(value == "center") setHorizontalAlignment(HA_CENTER);
			else maPanic(0, "MAUI::Label wrong parameter");
		} 
		else if(name == "verticalAlignment") {
			if(value == "top") setVerticalAlignment(VA_TOP);
			else if(value == "bottom") setVerticalAlignment(VA_BOTTOM);
			else if(value == "center") setVerticalAlignment(VA_CENTER);
			else maPanic(0, "MAUI::Label wrong parameter");
		}
		else Widget::setParameter(name, value);
	}
Example #5
0
/*!
 * Set the text indentation level with the given \a indent. Must be less than or equal to 15.
 */
void Format::setIndent(int indent)
{
    if (indent && hasProperty(FormatPrivate::P_Alignment_AlignH)) {
        HorizontalAlignment hl = horizontalAlignment();

        if (hl != AlignHGeneral && hl != AlignLeft && hl!= AlignRight && hl!= AlignHJustify) {
            setHorizontalAlignment(AlignLeft);
        }
    }

    setProperty(FormatPrivate::P_Alignment_Indent, indent, 0);
}
Example #6
0
/*!
 * Turn on/off shrink to fit base on \a shink.
 */
void Format::setShrinkToFit(bool shink)
{
    if (shink && hasProperty(FormatPrivate::P_Alignment_Wrap))
        clearProperty(FormatPrivate::P_Alignment_Wrap);

    if (shink && hasProperty(FormatPrivate::P_Alignment_AlignH)) {
        HorizontalAlignment hl = horizontalAlignment();
        if (hl == AlignHFill || hl == AlignHJustify || hl == AlignHDistributed)
            setHorizontalAlignment(AlignLeft);
    }

    setProperty(FormatPrivate::P_Alignment_ShinkToFit, shink, false);
}
void RogueScene::logMessage(const char * pszFormat, ...)
{
    char szBuf[kMaxLogLen+1] = {0};
    va_list ap;
    va_start(ap, pszFormat);
    vsnprintf(szBuf, kMaxLogLen, pszFormat, ap);
    va_end(ap);
    
    CCLOG("logMessage: %s", szBuf);
    
    auto pGameLogNode = getChildByTag(RogueScene::kGameLogTag);
    // とりあえず子要素がないなら無理
    if (!pGameLogNode || pGameLogNode->getChildrenCount() <= 0)
    {
        return;
    }
    
    auto pGameLogText = static_cast<LabelTTF*>(pGameLogNode->getChildren().at(0)); // TODO: 1子しかaddしてないから動く。ちゃんとしないと・・・
    if (pGameLogText)
    {
        // TODO: 別クラスにしてログをlistで保持する。デフォルトの表示は1件だけで、center寄せ表示でいいかと
        auto pMessage = String::create(szBuf);
        
        pMessage->append("\n");

        std::string nowString = pGameLogText->getString();
        
        int count = f_r(nowString, '\n');
        
        // 3行まで表示
        if (count >= 3)
        {
            int size = nowString.size();
            unsigned int loc = nowString.find_last_of('\n', size);
            CCLOG("logMessage: loc = %d size = %d", loc, size);
            if (loc != std::string::npos)
            {
                nowString.erase(loc, nowString.size() - loc);
            }
        }
        pMessage->append(nowString);
        pGameLogText->setString(pMessage->getCString());
        pGameLogText->setVerticalAlignment(cocos2d::TextVAlignment::TOP);
        pGameLogText->setHorizontalAlignment(cocos2d::TextHAlignment::LEFT);
        pGameLogText->setPosition(Point(pGameLogText->getFontSize() / 4 + pGameLogText->getContentSize().width / 2, pGameLogNode->getContentSize().height - pGameLogText->getContentSize().height / 2 - pGameLogText->getFontSize() / 4));
    }
}
Example #8
0
int main()
{
    trj::ApplicationConfig config;
    config.setWindowTitle("Torrijas Template");

    trj::main(std::move(config), []()
    {
        auto textNode = trj::TextNode::create();
        textNode->setFontSize(80);
        textNode->setFontColor(1, 1, 1);
        textNode->setHorizontalAlignment(trj::TextNode::HorizontalAlignment::CENTER);
        textNode->addText(0, 0, "Hi :D");

        auto& rootNode = trj::Node::getRootNode();
        rootNode.addChild(std::move(textNode));

        while(true)
        {
            trj::Application::update();
        }
    });

    return 0;
}
Example #9
0
bool HelpScene::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    touched = false;
    Size visibleSize = Director::getInstance()->getVisibleSize();

    //setKeyboardEnabled(true);
    auto keyboard = EventListenerKeyboard::create();
    keyboard->onKeyReleased = CC_CALLBACK_2(HelpScene::onKeyReleased, this);
    getEventDispatcher()->addEventListenerWithSceneGraphPriority(keyboard, this);

    //setTouchEnabled(true);
    auto listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = CC_CALLBACK_2(HelpScene::onTouchBegan, this);
    listener->onTouchMoved = CC_CALLBACK_2(HelpScene::onTouchMoved, this);
    listener->onTouchEnded = CC_CALLBACK_2(HelpScene::onTouchEnded, this);
    getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

    addChild(BackgroundWidget::create("bg", Color3B(20, 20, 80)));

    addChild(Vignette::create());

    auto layer = Layer::create();
    layer->setTag(1);
    addChild(layer);

    auto bg = LayerColor::create(C4Fto4B(0.12f, 0.02f, 0.15f, 1.0f), visibleSize.width, visibleSize.height);
    bg->setPositionY(PY(0.82f));
    addChild(bg);

    auto hooker = TopAnchor::create();
    addChild(hooker, 1);
    auto pMenu = Menu::create();
    pMenu->setPosition(Point::ZERO);
    //hooker->addChild(bg);
    hooker->addChild(pMenu);

    auto txt1 = Label::createWithTTF(LS("HowToPlay"), NORMAL_TTF, 48.0f);
    txt1->setPosition(VCP(0.22f, 0.935f));
    txt1->setAnchorPoint(Point(0, 0.5f));
    txt1->setHorizontalAlignment(TextHAlignment::LEFT);
    txt1->setColor(Color3B::WHITE);

    hooker->addChild(txt1);
    //addChild(txt1, 5);

    auto btnBack = MAKEBUTTON("btnBackBlackUp", "btnBackBlackDn", HelpScene::btnBackPressed);
    pMenu->addChild(btnBack, 2);
    btnBack->setPosition(VCP(0.03f, 0.935f));
    btnBack->setAnchorPoint(Point(0, 0.5f));

    auto playerLayer = makeItem("manRt1", LS("HelpPlayer"), '@');
    playerLayer->setPosition(CP(0.2f, 0.80f));
    layer->addChild(playerLayer);

    auto robotLayer = makeItem("robot", LS("HelpRobot"), 'R');
    robotLayer->setPosition(CP(0.2f, 0.50f));
    robotLayer->SPRITEREF->runAction(
        RepeatForever::create(Sequence::createWithTwoActions(
                                  ScaleTo::create(1.0f, 1.0f), ScaleTo::create(1.0f, 0.9f)
                              )));
    layer->addChild(robotLayer);

    auto holeLayer = makeItem("hazard", LS("HelpBlackhole"), '!');
    holeLayer->setPosition(CP(0.2f, 0.10f));
    holeLayer->SPRITEREF->runAction(RepeatForever::create(RotateBy::create(2.0f, 365.0f)));
    holeLayer->SPRITEREF->runAction(RepeatForever::create(Sequence::createWithTwoActions(
                                        TintTo::create(0.5f, 210, 255, 255), TintTo::create(0.5f, 255, 0, 0)
                                    )));
    layer->addChild(holeLayer);

    auto starLayer = makeItem("dronesGoal", LS("HelpStar"), 'X');
    starLayer->setPosition(CP(0.2f, -0.10f));
    starLayer->SPRITEREF->runAction(RepeatForever::create(Sequence::createWithTwoActions(
                                        TintTo::create(1.0f, 255, 255, 255), TintTo::create(1.0f, 255, 255, 0)
                                    )));
    starLayer->SPRITEREF->runAction(RepeatForever::create(Sequence::createWithTwoActions(
                                        DelayTime::create(10.0f), RotateBy::create(1.0, -360)
                                    )));
    layer->addChild(starLayer);

    auto gemLayer = makeItem("gem", LS("HelpGem"), 'g');
    gemLayer->setPosition(CP(0.2f, -0.30f));
    layer->addChild(gemLayer);

    auto creditsY = -0.20f;

    auto creditsLayer3 = makeText(LS("HelpConclusion"), 38.0f);
    creditsLayer3->setPosition(CP(0.5f, creditsY-0.3f));
    creditsLayer3->setHorizontalAlignment(TextHAlignment::CENTER);
    creditsLayer3->setAnchorPoint(Point(0.5f, 1.0f));
    layer->addChild(creditsLayer3);

    auto facebook = MAKESPRITE("facebook");
    facebook->setPosition(CP(0.5f, creditsY - 0.6f));
    layer->addChild(facebook);
    return true;
}
Example #10
0
bool ActivityView::init()
{
    if (!PopupBaseView::init()) {
        return false;
    }
    setIsHDPanel(true);
    if (m_obj->type != 6) return false;
    CCLoadSprite::doResourceByCommonIndex(500, true);
    CCLoadSprite::doResourceByCommonIndex(502, true);
    CCLoadSprite::doResourceByCommonIndex(506, true);
    auto size = CCDirector::sharedDirector()->getWinSize();
    this->setContentSize(CCSize(640, 852));
    if (CCCommonUtils::isIosAndroidPad())
    {
        this->setContentSize(CCSize(1536, 2048));
    }
    CCBLoadFile("ActivityView", this, this);
    if (CCCommonUtils::isIosAndroidPad()) {
        m_bottomNode->setPositionY(m_bottomNode->getPositionY() - (size.height - 2048));
        m_listNode->setPositionY(m_listNode->getPositionY() - (size.height - 2048));
        m_listNode->setContentSize(CCSize(m_listNode->getContentSize().width, m_listNode->getContentSize().height + size.height - 2048));
    } else {
        m_bottomNode->setPositionY(m_bottomNode->getPositionY() - (size.height - 852));
        m_listNode->setPositionY(m_listNode->getPositionY() - (size.height - 852));
        m_listNode->setContentSize(CCSize(m_listNode->getContentSize().width, m_listNode->getContentSize().height + size.height - 852));
    }

    if (m_obj->exchange == "1" || m_obj->exchange == "2") {
        m_bottomNode->setVisible(true);
    } else {
        m_bottomNode->setVisible(false);
        if (CCCommonUtils::isIosAndroidPad())
        {
            m_listNode->setPositionY(m_listNode->getPositionY() - 178);
            m_listNode->setContentSize(CCSize(m_listNode->getContentSize().width, m_listNode->getContentSize().height + 178));
        } else {
            m_listNode->setPositionY(m_listNode->getPositionY() - 92);
            m_listNode->setContentSize(CCSize(m_listNode->getContentSize().width, m_listNode->getContentSize().height + 92));
        }
    }
    m_titleLabel->setString(_lang("150215"));
    CCCommonUtils::setButtonTitle(m_rwdBtn, _lang("133076").c_str());
    Node* node = Node::create();
    CCLabelIF* label = nullptr;
    Sprite* spr = nullptr;
    float height = 0;
    {
        if (!m_obj->rewardIds.empty()) {
            if (m_obj->showDialogs.size() > 0) {
                height -= 20;
                if (CCCommonUtils::isIosAndroidPad())
                {
                    height -= 20;
                }
            }
            for (auto it = m_obj->showDialogs.begin(); it != m_obj->showDialogs.end(); ++it) {
                vector<string> tVec;
                CCCommonUtils::splitString(*it, ";", tVec);
                string showStr("");
                if (tVec.size() == 1)
                {
                    showStr = _lang(tVec[0]);
                } else if (tVec.size() == 2) {
                    showStr = _lang_1(tVec[0].c_str(), (CCCommonUtils::getNameById(tVec[1])).c_str());
                } else if (tVec.size() == 3) {
                    showStr = _lang_2(tVec[0].c_str(), (CCCommonUtils::getNameById(tVec[1])).c_str(), (CCCommonUtils::getNameById(tVec[2])).c_str());
                } else if (tVec.size() == 4) {
                    showStr = _lang_3(tVec[0].c_str(), (CCCommonUtils::getNameById(tVec[1])).c_str(), (CCCommonUtils::getNameById(tVec[2])).c_str(), (CCCommonUtils::getNameById(tVec[3])).c_str());
                }
                label = CCLabelIF::create(showStr.c_str());
                label->setFontSize(20);
                if (CCCommonUtils::isIosAndroidPad())
                {
                    label->setFontSize(40);
                }
                label->setColor(ccBLACK);
                label->setAnchorPoint(Vec2(0.5, 1));
                label->setDimensions(Size(580, 0));
                if (CCCommonUtils::isIosAndroidPad())
                {
                    label->setDimensions(Size(1300, 0));
                }
                label->setHorizontalAlignment(TextHAlignment::CENTER);
                label->setVerticalAlignment(TextVAlignment::TOP);
                label->setPosition(Vec2(0, height));
                node->addChild(label);
                height -= label->getContentSize().height * label->getOriginScaleY();
            }
            height -= 5;
            if (CCCommonUtils::isIosAndroidPad())
            {
                height -= 5;
            }
            //有几率获得
            label = CCLabelIF::create(_lang("150217").c_str());
            label->setFontSize(18);
            if (CCCommonUtils::isIosAndroidPad())
            {
                label->setFontSize(36);
            }
            label->setAnchorPoint(Vec2(0.5, 1));
            label->setPosition(Vec2(0, height));
            label->setColor({139, 29, 20});
            label->setHorizontalAlignment(TextHAlignment::CENTER);
            label->setVerticalAlignment(TextVAlignment::TOP);
            node->addChild(label);
            height -= label->getContentSize().height * label->getOriginScaleY();
            
            //展示奖励
            int cnt = m_obj->rewardIds.size();
            int hang = ceil(cnt / 6.0);
            for (int i = 1; i <= hang; ++i) {
                if (i < hang) {
                    for (int j = 1; j <= 6; ++j) {
                        ActivityRwdShowCell* cell = ActivityRwdShowCell::create(m_obj->rewardIds.at(j - 1 + (i - 1) * 6));
                        cell->setPositionX(- 80 * 6 / 2 + 80 / 2 + (j - 1) * 80);
                        cell->setPositionY(height - 40);
                        if (CCCommonUtils::isIosAndroidPad()) {
                            cell->setPositionX(- 160 * 6 / 2 + 160 / 2 + (j - 1) * 160);
                            cell->setPositionY(height - 80);
                        }
                        node->addChild(cell);
                    }
                    height -= 80;
                    if (CCCommonUtils::isIosAndroidPad())
                    {
                        height -= 80;
                    }
                } else {
                    int leftCnt = cnt - (i - 1) * 6;
                    for (int j = 1; j <= leftCnt; ++j) {
                        ActivityRwdShowCell* cell = ActivityRwdShowCell::create(m_obj->rewardIds.at((i - 1) * 6 + j - 1));
                        cell->setPositionX(- (80 * leftCnt) / 2 + 80 / 2 + (j - 1) * 80);
                        cell->setPositionY(height - 40);
                        if (CCCommonUtils::isIosAndroidPad()) {
                            cell->setPositionX(- 160 * leftCnt / 2 + 160 / 2 + (j - 1) * 160);
                            cell->setPositionY(height - 80);
                        }
                        node->addChild(cell);
                    }
                    height -= 80;
                    if (CCCommonUtils::isIosAndroidPad())
                    {
                        height -= 80;
                    }
                }
            }
            //空
            height -= 10;
            if (CCCommonUtils::isIosAndroidPad()) {
                height -= 10;
            }
            //横线
            spr = CCLoadSprite::createSprite("Items_tips3_lottery.png");
            spr->setAnchorPoint(Vec2(0.5, 0.5));
            spr->setPosition(0, height);
            node->addChild(spr);
            if (CCCommonUtils::isIosAndroidPad())
            {
                spr->setScale(2);
            }
            //空
            height -= 10;
            if (CCCommonUtils::isIosAndroidPad()) {
                height -= 10;
            }
            //剧情简介
            label = CCLabelIF::create(_lang("150216").c_str());
            label->setAnchorPoint(Vec2(0.5, 1));
            label->setColor(ccBLACK);
            label->setFontSize(20);
            if (CCCommonUtils::isIosAndroidPad()) {
                label->setFontSize(40);
            }
            label->setPosition(0, height);
            label->setHorizontalAlignment(TextHAlignment::CENTER);
            label->setVerticalAlignment(TextVAlignment::TOP);
            node->addChild(label);
            height -= label->getContentSize().height * label->getOriginScaleY();
            //空
            height -= 10;
            if (CCCommonUtils::isIosAndroidPad()) {
                height -= 10;
            }
        }
        //正文
        string mStory = _lang(m_obj->story);
        mStory.append("\n\n\n");
        label = CCLabelIF::create(mStory.c_str());
        label->setFontSize(20);
        if (CCCommonUtils::isIosAndroidPad()) {
            label->setFontSize(40);
        }
        label->setDimensions(Size(580, 0));
        if (CCCommonUtils::isIosAndroidPad()) {
            label->setDimensions(Size(1300, 0));
        }
        label->setAnchorPoint(Vec2(0.5, 1));
        label->setColor({85, 62, 31});
        label->setPosition(0, height);
        label->setHorizontalAlignment(TextHAlignment::CENTER);
        label->setVerticalAlignment(TextVAlignment::TOP);
        node->addChild(label);
        height -= label->getContentSize().height * label->getOriginScaleY();
    }
    ScrollView* view = ScrollView::create(m_listNode->getContentSize());
    if (abs(height) < m_listNode->getContentSize().height) {
        node->setPositionY(m_listNode->getContentSize().height / 2.0 + abs(height) / 2.0);
        height = -m_listNode->getContentSize().height;
    } else {
        node->setPositionY(abs(height));
    }
    view->setContentSize(Size(m_listNode->getContentSize().width, abs(height)));
    view->addChild(node);
    node->setPositionX(view->getContentSize().width / 2);
//    node->setPositionY(abs(height));
    view->setContentOffset(Vec2(0, m_listNode->getContentSize().height - view->getContentSize().height));
    view->setDirection(ScrollView::Direction::VERTICAL);
    m_listNode->addChild(view);
    view->setDelegate(this);
    
    bool st = false;
    if (LuaController::getInstance()->checkActLuaValid(m_obj))
    {
        CCNode* node = LuaController::getInstance()->createActivityAdCell(m_obj);
        if (node && node->getChildrenCount()) {
            m_picNode->addChild(node);
            if (CCCommonUtils::isIosAndroidPad())
            {
                float w = (1536.0 - 1156.0) / 2.0;
                float h = 645;
                node->setContentSize(CCSize(0, 0));
                node->setScaleX(1156.0 / 640.0);
                node->setScaleY(645.0 / 357.0);
                auto layer1 = CCModelLayerColor::create();
                layer1->setAnchorPoint(ccp(0, 0));
                layer1->setContentSize(CCSize(w, h));
                layer1->setPosition(-w, 0);
                layer1->setOpacity(255);
                layer1->setColor(ccBLACK);
//                layer1->setTouchPriority(-999);
                m_picNode->addChild(layer1);
                
                layer1 = CCModelLayerColor::create();
                layer1->setAnchorPoint(CCPointZero);
                layer1->setPosition(ccp(1156, 0));
                layer1->setContentSize(CCSize(w, h));
                layer1->setOpacity(255);
                layer1->setColor(ccBLACK);
//                layer1->setTouchPriority(-999);
                m_picNode->addChild(layer1);
            }
        } else {
            st = true;
        }
    }
    else
    {
        st = true;
    }
    
    if (st) {
        auto nameTTF = CCLabelIF::create(m_obj->name.c_str());
        auto infoTTF = CCLabelIF::create(m_obj->desc.c_str());
        auto bgImg = CCLoadSprite::createSprite("activity_ad_beiyong.png");
        
        nameTTF->setPosition(ccp(16,245));
        nameTTF->setAnchorPoint(ccp(0, 1));
        nameTTF->setFontSize(36);
        nameTTF->setColor({255,219,117});
        nameTTF->setHorizontalAlignment(kCCTextAlignmentLeft);
        nameTTF->setVerticalAlignment(kCCVerticalTextAlignmentTop);
        nameTTF->setDimensions(CCSize(0, 0));
        
        infoTTF->setPosition(ccp(16,201));
        infoTTF->setAnchorPoint(ccp(0, 1));
        infoTTF->setColor({0, 249, 0});
        infoTTF->setHorizontalAlignment(kCCTextAlignmentLeft);
        infoTTF->setVerticalAlignment(kCCVerticalTextAlignmentTop);
        infoTTF->setDimensions(CCSize(300, 0));
        
        
        bgImg->setAnchorPoint(ccp(0, 0));
        bgImg->setPosition(ccp(0, 0));
        auto node = CCNode::create();
        node->addChild(bgImg);
        node->addChild(nameTTF);
        node->addChild(infoTTF);
        m_picNode->addChild(node);
        if (CCCommonUtils::isIosAndroidPad()) {
            float w = (1536.0 - 1156.0) / 2.0;
            float h = 645;
            node->setContentSize(CCSize(0, 0));
            node->setScaleX(1156.0 / 640.0);
            node->setScaleY(645.0 / 357.0);
            auto layer1 = CCModelLayerColor::create();
            layer1->setAnchorPoint(ccp(0, 0));
            layer1->setContentSize(CCSize(w, h));
            layer1->setPosition(-w, 0);
            layer1->setOpacity(255);
            layer1->setColor(ccBLACK);
            //                layer1->setTouchPriority(-999);
            m_picNode->addChild(layer1);
            
            layer1 = CCModelLayerColor::create();
            layer1->setAnchorPoint(CCPointZero);
            layer1->setPosition(ccp(1156, 0));
            layer1->setContentSize(CCSize(w, h));
            layer1->setOpacity(255);
            layer1->setColor(ccBLACK);
            //                layer1->setTouchPriority(-999);
            m_picNode->addChild(layer1);
        }
    }
    
    if (m_obj->exchange == "2") {
        if (ActivityController::getInstance()->m_exc2Data.find(m_obj->id) == ActivityController::getInstance()->m_exc2Data.end()) {
            ActivityController::getInstance()->startGetAct6Data();
        } else {
            if (!ActivityController::getInstance()->checkIsToday(ActivityController::getInstance()->m_exc2RefInfo[m_obj->id].m_refreshTime)) {
                ActivityController::getInstance()->m_exc2RefInfo[m_obj->id].m_refreshTime = GlobalData::shared()->getTimeStamp();
                ActivityController::getInstance()->m_exc2RefInfo[m_obj->id].m_refresh = 0;
            }
        }
    } else if (m_obj->exchange == "1") {
        if (!ActivityController::getInstance()->isAct1DataInit(m_obj->id)) {
            ActivityController::getInstance()->startGetAct6Data();
        } else {
            ActivityController::getInstance()->checkAct1ReFreshTimes(m_obj->id);
//            if (ActivityController::getInstance()->isAct1DataShouldRefresh(m_obj->id))
//            {
//                ActivityController::getInstance()->startAct6Refresh(m_obj->id);
//            }
        }
    }

    return true;
}
bool ItemWindowLayer::initWithContentSize(Size contentSize)
{
    if (!LayerColor::init())
    {
        return false;
    }
    setContentSize(contentSize);

    int padding = 2;

    // アイテム一覧レイヤー(左側)
    std::list<std::string> itemNameList;
    for (DropItemSprite::DropItemDto dropItem : m_itemDtoList)
    {
        itemNameList.push_back(dropItem.name);
    }

    auto pItemListLayer = TableViewTestLayer::createWithTextArray(itemNameList,
                          Size(contentSize.width / 2, contentSize.height));
    pItemListLayer->setColor(Color3B::BLACK);
    pItemListLayer->setOpacity(128);
    pItemListLayer->setPosition(Point(
                                    contentSize.width / 2 - pItemListLayer->getContentSize().width - padding,
                                    contentSize.height / 2 - pItemListLayer->getContentSize().height / 2));
    pItemListLayer->setCallback([this](Object* pObject, long touchedIdx) {
        // 行選択時
        CCLOG(" touched idx = %ld", touchedIdx);
        // 同じ行連打は無視
        if (m_showItemDetailIdx == touchedIdx)
        {
            return;
        }
        // touched DropItemDto
        auto it = m_itemDtoList.begin();
        std::advance(it, touchedIdx);
        auto dropItemDto = (DropItemSprite::DropItemDto) *it;

        this->setItemDetail(&dropItemDto);

        // 表示indexを更新
        m_showItemDetailIdx = touchedIdx;
    });
    pItemListLayer->setTag(ItemWindowLayer::ItemTableLayerTag);
    this->addChild(pItemListLayer);

    // アイテム詳細レイヤー(右側)
    auto pItemDetailLayer = LayerColor::create();
    pItemDetailLayer->setColor(Color3B::BLACK);
    pItemDetailLayer->setOpacity(128);
    pItemDetailLayer->setContentSize(Size(contentSize.width / 2, contentSize.height));
    pItemDetailLayer->setPosition(Point(contentSize.width / 2 + padding, 0));
    pItemDetailLayer->setTag(ItemDetailLayerTag);
    // アイテム名
    auto pItemNameTitleLabel = LabelTTF::create("なまえ", GAME_FONT(16), 16);
    pItemNameTitleLabel->setColor(Color3B::WHITE);
    pItemNameTitleLabel->setVerticalAlignment(cocos2d::TextVAlignment::TOP);
    pItemNameTitleLabel->setHorizontalAlignment(cocos2d::TextHAlignment::LEFT);
    pItemNameTitleLabel->setPosition(Point(
                                         pItemNameTitleLabel->getContentSize().width / 2 + pItemNameTitleLabel->getFontSize() / 2,
                                         pItemDetailLayer->getContentSize().height - pItemNameTitleLabel->getContentSize().height / 2 - pItemNameTitleLabel->getFontSize() / 2));
    pItemDetailLayer->addChild(pItemNameTitleLabel);

    auto pItemNameLabel = LabelTTF::create(ITEM_LAYER_NAME_DEFAULT, GAME_FONT(10), 10);
    pItemNameLabel->setColor(Color3B::WHITE);
    pItemNameLabel->setPosition(Point(
                                    pItemDetailLayer->getContentSize().width * 0.5,
                                    pItemDetailLayer->getContentSize().height * 0.75));
    pItemNameLabel->setTag(ItemWindowLayer::ItemNameTag);
    pItemDetailLayer->addChild(pItemNameLabel);

    // アイテム説明
    auto pItemDetailTitleLabel = LabelTTF::create("せつめい", GAME_FONT(16), 16);
    pItemDetailTitleLabel->setColor(Color3B::WHITE);
    pItemDetailTitleLabel->setVerticalAlignment(cocos2d::TextVAlignment::TOP);
    pItemDetailTitleLabel->setHorizontalAlignment(cocos2d::TextHAlignment::LEFT);
    pItemDetailTitleLabel->setPosition(Point(
                                           pItemDetailTitleLabel->getContentSize().width / 2 + pItemDetailTitleLabel->getFontSize() / 2,
                                           pItemDetailLayer->getContentSize().height / 2 - pItemDetailTitleLabel->getContentSize().height / 2 - pItemDetailTitleLabel->getFontSize() / 2));
    pItemDetailLayer->addChild(pItemDetailTitleLabel);

    auto pItemDetailLabel = LabelTTF::create(ITEM_LAYER_DETAIL_DEFAULT, GAME_FONT(10), 10);
    pItemDetailLabel->setColor(Color3B::WHITE);
    pItemDetailLabel->setPosition(Point(
                                      pItemDetailLayer->getContentSize().width * 0.5,
                                      pItemDetailLayer->getContentSize().height * 0.25));
    pItemDetailLabel->setTag(ItemWindowLayer::ItemDetailTag);
    pItemDetailLayer->addChild(pItemDetailLabel);

    // -----------------------------
    // メニューボタン
    float addNextMenuPositonX = 8;
    // 捨てるボタン
    auto pMenuItemDrop = ItemWindowLayer::createMenuItemSprite(Color3B::RED, [this](Object* pSeneder) {
        // hoge
        CCLOG("item drop menu pressed");
        if (m_showItemDetailIdx < 0)
        {
            return;
        }
        if (m_itemDropMenuCallback)
        {
            auto it = m_itemDtoList.begin();
            std::advance(it, m_showItemDetailIdx);
            auto dropItemDto = (DropItemSprite::DropItemDto) *it;
            // 削除
            m_itemDtoList.erase(it);

            m_itemDropMenuCallback(pSeneder, dropItemDto);
        }
    });
    pMenuItemDrop->setPosition(Point(pMenuItemDrop->getContentSize().width / 2 + addNextMenuPositonX , pMenuItemDrop->getContentSize().height / 2));
    addNextMenuPositonX += pMenuItemDrop->getContentSize().width + 8;

    // 使用ボタン
    auto pMenuItemUse = ItemWindowLayer::createMenuItemSprite(Color3B::GRAY, [this](Object* pSeneder) {
        // hoge
        CCLOG("item use menu pressed");
        if (m_showItemDetailIdx < 0)
        {
            return;
        }
        if (m_itemUseMenuCallback)
        {
            auto it = m_itemDtoList.begin();
            std::advance(it, m_showItemDetailIdx);
            auto dropItemDto = (DropItemSprite::DropItemDto) *it;
            // 削除
            m_itemDtoList.erase(it);

            m_itemUseMenuCallback(pSeneder, dropItemDto);
        }
    });
    pMenuItemUse->setPosition(Point(pMenuItemDrop->getContentSize().width / 2 + addNextMenuPositonX, pMenuItemDrop->getContentSize().height / 2));
    addNextMenuPositonX += pMenuItemUse->getContentSize().width + 8;

    auto pMenu = Menu::create(pMenuItemDrop, pMenuItemUse, NULL);
    pMenu->setPosition(Point::ZERO);
    pItemDetailLayer->addChild(pMenu);

    this->addChild(pItemDetailLayer);

    return true;
}
bool EpisodeLockedScene::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
	
	addChild(BackgroundWidget::create("bg" + nToString(GameSettings::CurrentEpisode),
                                      Color3B(200, 200, 200)));

	addChild(Vignette::create());

	auto hole = MAKESPRITE("blackholebig");
	addChild(hole);
	hole->setPosition(CP(0.5f, 0.65f));
	hole->setScale(0.8f);
	hole->runAction(RepeatForever::create(RotateBy::create(40.0, 365)));

	auto gamelogo = MAKESPRITE("gamelogo");
	addChild(gamelogo);
	gamelogo->setPosition(CP(0.5f, 0.65f));
	gamelogo->setScale(0.8f);
	gamelogo->runAction(RepeatForever::create(Sequence::createWithTwoActions(
		ScaleTo::create(3.0f, 0.81f),
		ScaleTo::create(3.0f, 0.79f)
		)));

	string title = LS(EpisodeInfos[GameSettings::CurrentEpisode].title);
	int price = EpisodeInfos[GameSettings::CurrentEpisode].price;

    auto hooker = TopAnchor::create();
    addChild(hooker, 1);

	auto hookerMenu = Menu::create();
	hookerMenu->setPosition(Point::ZERO);
	hooker->addChild(hookerMenu);
    
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
	auto btnMenu = MAKEBUTTON("btnBackUp", "btnBackDn", EpisodeLockedScene::menuCloseCallback);
	btnMenu->setPosition(VCP(0.03f, 0.95f));
	btnMenu->setAnchorPoint(Point(0, 1.0f));
	btnMenu->setScale(1.3f);
	hookerMenu->addChild(btnMenu);
#endif
	auto pMenu = Menu::create();
	pMenu->setPosition(Point::ZERO);
	addChild(pMenu, 1);

	auto episodetext = Label::createWithTTF(LS("Episode") + " " + 
		nToString(GameSettings::CurrentEpisode + 1), FANCY_TTF, 50.0f);
	episodetext->setHorizontalAlignment(TextHAlignment::CENTER);
	episodetext->setPosition(VCP(0.5f, 0.45f));
	addChild(episodetext);
	
	auto episodetitle = Label::createWithTTF(title, FANCY_TTF, 60.0f);
	episodetitle->setHorizontalAlignment(TextHAlignment::CENTER);
	episodetitle->setPosition(VCP(0.5f, 0.38f));
	addChild(episodetitle);

	string unlocktextstring = LS("UnlockEpisodeMessageWithProgress");
	
	auto unlocktext = Label::createWithTTF(string_format(unlocktextstring, price), FANCY_TTF, 38.0f);
	unlocktext->setHorizontalAlignment(TextHAlignment::CENTER);
	unlocktext->setPosition(VCP(0.5f, 0.25f));
	addChild(unlocktext);

	auto keyboard = EventListenerKeyboard::create();
	keyboard->onKeyReleased = CC_CALLBACK_2(EpisodeLockedScene::onKeyReleased, this);
	getEventDispatcher()->addEventListenerWithSceneGraphPriority(keyboard, this);

    return true;
}
void ComsumeController::initGame()
{
    char message[100];
    Size winSize = Director::getInstance()->getVisibleSize();
    auto _bg2 = LayerColor::create(Color4B(0,128,128,128), winSize.width, winSize.height);
    this->addChild(_bg2);
    _doorStatus = 0;
    switch (com_attend_type) {
        case 1:
            _sprite1 = Sprite::create("sts/sentakumono.png");
            break;
        case 2:
            _sprite1 = Sprite::create("sts/jiko_jishin_himoto.png");
            break;
        case 3:
            _sprite1 = Sprite::create("sts/mizumore_toilet.png");
            break;
        case 4:
            _sprite1 = Sprite::create("sts/jiko_mizumore.png");
            break;
            
        default:
            _sprite1 = Sprite::create("sts/sentakumono.png");
            break;
    }
    _sprite1->setScale(2.0f);
    _sprite1->setPosition(Vec2(winSize.width/2, winSize.height/2));
    addChild(_sprite1);

    //Scrollview
    auto *scroll = ScrollView::create(winSize);
    // 縦方向だけにスクロール
    scroll->setDirection(ScrollView::Direction::VERTICAL);
    addChild(scroll);
    
    com_text_ext = Replace1( com_text_ext, ",", "\n" );
    if (com_text_ext.size()==0) {
        com_text_ext = "電力消費量の予測";
    }
    com_text_ext = com_text_ext + "\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + com_attend_ext;
    auto label = LabelTTF::create(com_text_ext, "Arial Rounded MT Bold", 36);
    label->setColor(Color3B::WHITE);
    
    // 文字の開始位置を画面の上に合わせる
    // 文字データは、一番左上から表示させたいので、widthは0
    // heightはコンテンツサイズから画面縦を引いた負数にする
    label->setDimensions(Size(winSize.width,0));
    label->setDimensions
    (Size(label->getContentSize().width, label->getContentSize().height));
    // 左寄せにする
    label->setHorizontalAlignment(TextHAlignment::LEFT);
    
    // スクロールされるラベルの調整
    scroll->setContainer(label);
    scroll->setContentOffset
    (Point(0, 0 - (label->getContentSize().height - winSize.height)));
    
    //update関数の呼び出しを開始
    scheduleUpdate();
    
}
Example #14
0
void EstateController::initGame(int type)
{
    initGame_type = type;
    Size winSize = Director::getInstance()->getVisibleSize();
    getEstateInfoContent();

    auto _bg2 = LayerColor::create(Color4B(0,255,0,128), winSize.width, winSize.height);
    this->addChild(_bg2);

    std::string wording;
    std::vector<std::string> files;
    switch (type) {
        case 1:
            wording = "住宅相談";
            user_status = BUILD_SHOHIN_CONSULT;
            files.push_back("res/iecoram.png");
            files.push_back("res/ad.png");
            showButton1(files);
            break;
        case 2:
            wording = "リフォームに関するプロに出会えるおすすめ情報です";
            user_status = BASIC_REFORM_FLOW;
            files.push_back("res/inspection.png");
            files.push_back("res/mentschedule.png");
            files.push_back("res/refflow.png");
            files.push_back("res/refquestion.png");
            showButton1(files);
            break;
        case 3:
            wording = "賃貸住宅D-Room";
            user_status = RENT_HOUSE;
            files.push_back("res/d-room.png");
            files.push_back("res/d-roomlife.png");
            files.push_back("res/d-room-clum.png");
            showButton1(files);
            break;
        case 4:
            wording = "住宅相談(機能面)";
            user_status = REGIST_KENCHIKU_CONSULT;
            files.push_back("res/childhouse.png");
            files.push_back("res/forwoman.png");
            files.push_back("res/hiraya.png");
            files.push_back("res/hospitakhouse.png");
            files.push_back("res/kitchen.png");
            files.push_back("res/makeplus.png");
            files.push_back("res/parahouse.png");
            files.push_back("res/pethouse.png");
            files.push_back("res/powerfulsolor.png");
            files.push_back("res/proofsound.png");
            files.push_back("res/renthouse.png");
            files.push_back("res/rentmayhome.png");
            files.push_back("res/shunou.png");
            files.push_back("res/smarteco.png");
            files.push_back("res/taiyodiscount.png");
            files.push_back("res/toshinaka.png");
            showButton1(files);
            break;
        case 5:
            wording = "住宅リフォーム(機能面)";
            user_status = KEEP_LIVING_BUILDING;
            files.push_back("res/genkan.png");
            files.push_back("res/kabe.png");
            files.push_back("res/washitu.png");
            files.push_back("res/proof.png");
            files.push_back("res/living.png");
            files.push_back("res/toilet.png");
            files.push_back("res/kitchen-ref.png");
            files.push_back("res/bathroom.png");
            showButton1(files);
            break;
        case 6:
            wording = "住宅リフォーム(金額面)";
            user_status = KEEP_PROCE100_BUILDING;
            files.push_back("res/ref-under100.png");
            files.push_back("res/ref-100-200.png");
            files.push_back("res/ref-over200.png");
            files.push_back("res/ref-300-500.png");
            files.push_back("res/ref-500-1000.png");
            files.push_back("res/ad.png");
            showButton1(files);
            break;
        default:
            break;
    }

    //Scrollview
    auto *scroll = ScrollView::create(winSize);
    // 縦方向だけにスクロール
    scroll->setDirection(ScrollView::Direction::VERTICAL);
    addChild(scroll);

    auto labelcont = LabelTTF::create(wording, "Arial Rounded MT Bold", 36);
    labelcont->setColor(Color3B::WHITE);
    labelcont->setDimensions(Size(winSize.width,0));
    labelcont->setDimensions(Size(labelcont->getContentSize().width, labelcont->getContentSize().height));
    labelcont->setHorizontalAlignment(TextHAlignment::LEFT);

    // スクロールされるラベルの調整
    scroll->setContainer(labelcont);
    scroll->setContentOffset(Point(0, 0 - (labelcont->getContentSize().height - winSize.height)));
    //update関数の呼び出しを開始
    scheduleUpdate();
}
Example #15
0
TableViewCell* Ranking::tableCellAtIndex(TableView *table, ssize_t idx) {
    RankingData *rankingData = _rankingData.at(idx);
    
    table->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN);
    TableViewCell *cell = table->dequeueCell();
    
    if (!cell) {
        cell = new TableViewCell();
        cell->autorelease();
    }
    cell->removeAllChildren();
    
    auto colorLayer = LayerColor::create();
    colorLayer->setAnchorPoint(Point::ZERO);
    colorLayer->setContentSize(Size(_tableViewRanking->getBoundingBox().size.width, TableViewItemHeightValue.asFloat()));
    colorLayer->setPosition(Vec2(0 * _tableViewRanking->getBoundingBox().size.width, 0));
    cell->addChild(colorLayer);
    
    string numberRanking;
    ostringstream convert2;
    convert2 << idx + 1;
    numberRanking = convert2.str();
    
    auto padding = 25;
    auto number = Label::createWithTTF(numberRanking, MainRegularFont, 60);
    number->setContentSize(Size(_tableViewRanking->getBoundingBox().size.width / _totalLabels - padding, TableViewItemHeightValue.asFloat()));
    number->setWidth(_tableViewRanking->getBoundingBox().size.width / _totalLabels);
    number->setHeight(TableViewItemHeightValue.asFloat());
    number->setVerticalAlignment(TextVAlignment::CENTER);
    number->setHorizontalAlignment(TextHAlignment::LEFT);
    number->setAnchorPoint(Point::ZERO);
    if (idx == 0) {
        number->setTextColor(IkasPurple);
    } else {
        number->setTextColor(IkasPurpleLight);
    }
    number->setPosition(Vec2(0 * _tableViewRanking->getBoundingBox().size.width + padding/ _totalLabels, 0));
    cell->addChild(number);
    
    
    auto name = Label::createWithTTF(rankingData->getuser(), MainRegularFont, 60);
    name->setContentSize(Size(_tableViewRanking->getBoundingBox().size.width / _totalLabels, TableViewItemHeightValue.asFloat()));
    name->setWidth(_tableViewRanking->getBoundingBox().size.width / _totalLabels);
    name->setHeight(TableViewItemHeightValue.asFloat());
    name->setVerticalAlignment(TextVAlignment::CENTER);
    name->setHorizontalAlignment(TextHAlignment::CENTER);
    name->setAnchorPoint(Point::ZERO);
    if (idx == 0) {
        name->setTextColor(IkasPurple);
    } else {
        name->setTextColor(IkasPurpleLight);
    }
    name->setPosition(Vec2(0 * _tableViewRanking->getBoundingBox().size.width / _totalLabels, 0));
    cell->addChild(name);
    
    string points;
    ostringstream convert;
    convert << rankingData->getpoints();
    points = convert.str();
    
    auto pointsLabel = Label::createWithTTF(points, MainRegularFont, 60);
    pointsLabel->setContentSize(Size(_tableViewRanking->getBoundingBox().size.width / _totalLabels, TableViewItemHeightValue.asFloat()));
    pointsLabel->setHeight(TableViewItemHeightValue.asFloat());
    pointsLabel->setWidth(_tableViewRanking->getBoundingBox().size.width / _totalLabels);
    pointsLabel->setVerticalAlignment(TextVAlignment::CENTER);
    pointsLabel->setHorizontalAlignment(TextHAlignment::CENTER);
    pointsLabel->setAnchorPoint(Point::ZERO);
    if (idx == 0) {
        pointsLabel->setTextColor(IkasPurple);
    } else {
        pointsLabel->setTextColor(IkasPurpleLight);
    }
    pointsLabel->setPosition(Vec2(1 * _tableViewRanking->getBoundingBox().size.width / _totalLabels, 0));
    cell->addChild(pointsLabel);
//    
//    if (idx % 2 == 0) {
//        number->setTextColor(IkasWhite);
//        name->setTextColor(IkasWhite);
//        pointsLabel->setTextColor(IkasWhite);
//        colorLayer->setColor(Color3B(IkasRed));
//        colorLayer->setOpacity(60);
//    } else {
//        number->setTextColor(IkasRed);
//        name->setTextColor(IkasRed);
//        pointsLabel->setTextColor(IkasRed);
//        colorLayer->setColor(Color3B(IkasWhite));
//        colorLayer->setOpacity(0);
//    }
    
    LayerColor *topSeparator;
    if (idx % 2 == 0) {
        topSeparator = LayerColor::create(IkasPurpleLight);
    } else {
        topSeparator = LayerColor::create(IkasPurpleLightAlpha);
    }
    topSeparator->setContentSize(Size(_tableViewRanking->getBoundingBox().size.width, 2));
    topSeparator->setPosition(Vec2(0, TableViewItemHeightValue.asFloat() - 4));
    topSeparator->setAnchorPoint(Point::ANCHOR_BOTTOM_LEFT);
    cell->addChild(topSeparator);

    
    if (idx == _rankingData.size() - 1) {
        if (idx % 2 != 0) {
            topSeparator = LayerColor::create(IkasPurpleLight);
        } else {
            topSeparator = LayerColor::create(IkasPurpleLightAlpha);
        }
        topSeparator->setContentSize(Size(_tableViewRanking->getBoundingBox().size.width, 2));
        topSeparator->setPosition(Vec2(0, 0));
        topSeparator->setAnchorPoint(Point::ANCHOR_BOTTOM_LEFT);
        cell->addChild(topSeparator);
    }
    return cell;
}
	// on "init" you need to initialize your instance
	bool ChooserScene::init(int _offset)
	{
		offset = _offset;
		//////////////////////////////
		// 1. super init first
		if (!Layer::init())
		{
			return false;
		}

		Size visibleSize = Director::getInstance()->getVisibleSize();

		string title = vector < string > {
			"Moon",
				"Mars",
				"Uranus"
		}[GameSettings::CurrentEpisode];

		auto hooker = TopAnchor::create();
		addChild(hooker, 1);

		auto episodetitle = Label::createWithTTF(title, FANCY_TTF, 60.0f);
		episodetitle->setHorizontalAlignment(TextHAlignment::CENTER);
		episodetitle->setPosition(VCP(0.5f, 0.9f));
		hooker->addChild(episodetitle);

		auto pMenu = Menu::create();
		pMenu->setPosition(Point::ZERO);
		hooker->addChild(pMenu, 1);

		auto btnMenu = MAKEBUTTON("btnMenuUp", "btnMenuDn", ChooserScene::btnMenuPressed);
		btnMenu->setPosition(VCP(0, 1));
		btnMenu->setAnchorPoint(Point(-0.5, 1.5));
		btnMenu->setScale(1.3f);
		pMenu->addChild(btnMenu);

		auto pLevels = Menu::create();
		pLevels->setPosition(Point::ZERO);
		pLevels->setTag(0);
		hooker->addChild(pLevels);

		const float startX = 0.2f;
		const float startY = 0.25f;

		auto bSprite = Sprite::createWithSpriteFrameName("circle");
		auto contentsize = bSprite->getContentSize();
		float off = 1.0f - (2.0f * startX);
		off /= (float) (lCount - 1);
		float offy = 1.0f - (startY * 2.0f);
		offy /= (float) (rCount - 1);
		log("Unlocked Level ID:" + nToString(GameSettings::GetUnlockedLevelId()));
		float y = startY;

		GLubyte cR = 255;
		for (int r = 0; r < rCount; r++)
		{
			float x = startX;
			GLubyte cG = 200; // static_cast<GLubyte>(200.0f * (float) offset / (float) GameSettings::MaximumLevelId);
			GLubyte cB = 20; // +200 - static_cast<GLubyte>(200.0f * (float) offset / (float) GameSettings::MaximumLevelId);;
			for (int i = 0; i < lCount; i++)
			{
				int levelId = offset + (rCount - (r + 1)) * lCount + i;
				if (levelId >= GameSettings::GetMaximumLevelId()) break;

				Node* btn;
				if (levelId <= GameSettings::GetUnlockedLevelId())
				{
					btn = MAKEBUTTON("circle", "circleDn", ChooserScene::btnLevelPressed);
					btn->setTag(100 + levelId);
					pLevels->addChild(btn);
					blobs.push_back(btn);
					btn->setPosition(VCP(x, y));

					Label* lbl = Label::createWithSystemFont(nToString(levelId + 1).c_str(), "Consolas", 28.0);
					lbl->setColor(Color3B::WHITE);
					lbl->setPosition(VCP(x, y));
					numbers.push_back(lbl);
					this->addChild(lbl, 1);

					btn->setColor(Color3B(cR, cG, cB));
				}
				else
				{
					btn = Sprite::createWithSpriteFrameName("circleLk");
					btn->setTag(100 + levelId);
					hooker->addChild(btn);
					blobs.push_back(btn);
					btn->setPosition(VCP(x, y));
				}
				btn->setScale(0.8f);
#if ENABLE_IAD
				//btn->setScale(0.8f);
#endif
				cG *= 0.5;
				cB *= 1.7;
				cB = cB > 255 ? 255 : cB;

				x += off;
			}

			cR *= 0.7;
			y += offy;
		}

		if (offset > 0)
		{
			auto backBtn = MAKEBUTTON("btnBackUp", "btnBackDn", btnBackPressed);
			backBtn->setPosition(CP(0.1f, 0.1f));
			backBtn->setScale(1.3f);
			pMenu->addChild(backBtn);
		}

		if (offset + lCount * rCount < GameSettings::GetMaximumLevelId())
		{
			auto nextBtn = MAKEBUTTON("btnNextUp", "btnNextDn", btnNextPressed);
			nextBtn->setPosition(CP(0.9f, 0.1f));
			nextBtn->setScale(1.3f);
			pMenu->addChild(nextBtn);
		}

		schedule(schedule_selector(ChooserScene::bloop), 2.0f, kRepeatForever, 4.0f);


		auto keyboard = EventListenerKeyboard::create();
		keyboard->onKeyReleased = CC_CALLBACK_2(ChooserScene::onKeyReleased, this);
		getEventDispatcher()->addEventListenerWithSceneGraphPriority(keyboard, this);
		return true;
	}
Example #17
0
// on "init" you need to initialize your instance
bool RelayGameLayer::init()
{
	//////////////////////////////
	// 1. super init first
	if (!GridLayer::init())
	{
		return false;
	}

	Size visibleSize = Director::getInstance()->getVisibleSize();
	Vec2 origin = Director::getInstance()->getVisibleOrigin();

	_SetDefaultValues();


	//-----------------------------------------------------
	// 背景
	auto spriteBack = Sprite::create("MainBackAll.png");
	if(spriteBack)
	{
		// add "canvas" splash screen"

		spriteBack->setScale(
			this->getContentSize().width / spriteBack->getContentSize().width,
			this->getContentSize().height / spriteBack->getContentSize().height);
		// position the sprite on the center of the screen
		spriteBack->setPosition(
			origin.x + visibleSize.width / 2.f + origin.x,
			origin.y + visibleSize.height / 2.f + origin.y);

		spriteBack->setName("Back");

		// add the sprite as a child to this layer
		this->addChild(spriteBack, ZOrder::BACK);
	}

	//-----------------------------------------------------
	// キャンバス
	auto layerCanvas = LayerCanvas::create();
	if (layerCanvas && layerCanvas->createSprite("canvas.png"))
	{
		this->addChild(layerCanvas, ZOrder::CANVAS, "Canvas");

		layerCanvas->setPosition(
			origin + visibleSize / 2.f
			);
		layerCanvas->setVisible(false);

	}
	//-----------------------------------------------------
	// テーマ発表用
	auto spriteBoard = Sprite::create("BigBoard.png");
	if (spriteBoard)
	{
		spriteBoard->setPosition(
			origin + visibleSize/ 2.f
			);
		spriteBack->setVisible(true);		// 非表示
		this->addChild(spriteBoard, ZOrder::BIGBOARD, "BigBoard");
		auto size = spriteBoard->getContentSize();
		// 表示ラベル設定 余白 x:90*y:60
		// 上
		auto labelTop = Label::createWithSystemFont("描く順番と解答者の発表です", "GenShinGothic-Regular.ttf", calcFontSize(40.f));
		if (labelTop)
		{
			// 中央揃え上揃え
			labelTop->setAlignment(TextHAlignment::CENTER, TextVAlignment::TOP);

			labelTop->setPosition(
				size.width / 2.f,
				size.height - labelTop->getContentSize().height/2.f - 60.f
				);

			spriteBoard->addChild(labelTop, 0, "TopLabel");
		}
		// 中央
		auto labelMiddle = Label::createWithSystemFont("", "GenShinGothic-Medium.ttf", calcFontSize(80.f));
		labelMiddle->setName("MiddleLabel");
		auto itemLabel = MenuItemLabel::create(labelMiddle, [this](Ref* pSender){
			// 検索窓開く
			std::stringstream url;
			url << "https://www.google.co.jp/search?tbm=isch&q=" << m_nowTheme.theme;
			Application::getInstance()->openURL(url.str().c_str());
		});
		if (itemLabel)
		{
			m_pMiddleLabel = itemLabel;
			// 始めのうちは反応なし
			m_pMiddleLabel->setEnabled(false);
			// 中央揃え中央揃え
			labelMiddle->setAlignment(TextHAlignment::CENTER, TextVAlignment::BOTTOM);

			labelMiddle->setColor(Color3B(250, 210, 10));
			m_pMiddleLabel->setColor(Color3B(250, 210, 10));


			labelMiddle->setDimensions(size.width - 90, 0);
			m_pMiddleLabel->setName("ItemMiddleLabel");
			auto menu = Menu::create(m_pMiddleLabel, nullptr);
			menu->setPosition(
				size / 2.f
				);
			spriteBoard->addChild(menu, 0, "MenuMiddleLabel");
		}
		// 下
		auto labelBottom = Label::createWithSystemFont("1人目の人から順に\n画面をタッチしてください", "GenShinGothic-Regular.ttf", calcFontSize(37.f));
		if (labelBottom)
		{
			// 中央揃え下揃え
			labelBottom->setAlignment(TextHAlignment::CENTER, TextVAlignment::BOTTOM);

			labelBottom->setAnchorPoint(Vec2(0.5f, 0.0f));

			labelBottom->setPosition(
				size.width / 2.f,
				labelBottom->getContentSize().height / 2.f + 60.f
				);

			spriteBoard->addChild(labelBottom, 0, "BottomLabel");
		}
	}

	//-----------------------------------------------------
	// ラベル用
	auto spriteSmallBoard = Sprite::create("board.png");
	if (spriteSmallBoard)
	{
		spriteSmallBoard->setPosition(
			origin.x + visibleSize.width / 2.f,
			origin.y + visibleSize.height - spriteSmallBoard->getContentSize().height / 2.f
			);
		this->addChild(spriteSmallBoard, ZOrder::TOPBOARD, "SmallBoard");
	}



	//-----------------------------------------------------
	// ラベル設定
	// アナウンス
	auto label = Label::createWithSystemFont(" ", "GenShinGothic-Medium.ttf", calcFontSize(30.f));
	{
		label->setColor(Color3B(250, 250, 250));	// 白文字
		label->enableOutline(Color4B::BLACK, 3);	// 黒枠線

		label->setHorizontalAlignment(TextHAlignment::CENTER);
		spriteSmallBoard->addChild(label, 10, "Label");
		label->setPosition(spriteSmallBoard->getAnchorPointInPoints());
		m_pLabel = label;			// キャッシュ
	}
	//-----------------------------------------------------


	//-----------------------------------------------------
	// ボタン
	auto nextButton = MenuItemImage::create("button.png",
											"button2.png",
											[this](Ref* pSender)
	{
		if (FlowPhase::ANSWERED == m_flowPhase)
		{
			// タイトルへ
			dynamic_cast<SceneAtelierMain*>(this->getParent()->getParent())->toTitle();
		}
		else
		{
			// 全消去
			m_touchPoints[m_nowPage].clear();
			m_pDrawNode->clear();
		}
	});
	if (nextButton)
	{
		m_pNextButton = nextButton;
		nextButton->setName("NextButton");
		// ボタン非表示
		//nextButton->setVisible(false);
		auto size = nextButton->getContentSize();
		nextButton->setPosition(
			origin.x + visibleSize.width - size.width / 2.f,
			origin.y + size.height / 2.f);
		auto label = Label::createWithSystemFont("全消去", "GenShinGothic-Medium.ttf", calcFontSize(20.f));
		if (label)
		{
			m_pButtonLabel = label;
			label->setPosition(nextButton->getContentSize() / 2.f);
			label->setHorizontalAlignment(TextHAlignment::CENTER);
			// ラベル非表示
			//label->setVisible(false);
			label->setColor(Color3B(5, 5, 5));
			nextButton->addChild(label, ZOrder::NEXTBUTTONLABEL, "ButtonLabel");
	
		}
	}


	auto menuButtons = Menu::create(nextButton, nullptr);
	if (menuButtons)
	{
		menuButtons->setPosition(Vec2::ZERO);
		menuButtons->setVisible(false);
		this->addChild(menuButtons, ZOrder::MENUBUTTONS, "MenuButtons");
	}


	//-----------------------------------------------------
	// 前後ボタン
	// 前
	auto itemBack = MenuItemImage::create("BackButton.png",
										  "BackButton2.png",
										  [this](Ref* pSender){

		auto button = dynamic_cast<MenuItemImage*>(pSender);
		if (0 < m_nowPage)
		{
			// 戻るよ!
			auto oldCanvas = this->getChildByName("Canvas");
			if (!oldCanvas)
				oldCanvas = this->getChildByName("Canvas" + std::to_string(m_nowPage));



			--m_nowPage;
			std::stringstream ss;
			ss << "Canvas" << m_nowPage;
			auto layerCanvas = this->getChildByName(ss.str());
			layerCanvas->setLocalZOrder(oldCanvas->getLocalZOrder() + 1);
			auto drawNode = layerCanvas->getChildByName<DrawNode*>("DrawNode");
			layerCanvas->setVisible(true);
			layerCanvas->runAction(
				Sequence::create(
					ReverseTime::create(PageTurn3D::create(0.5f, Size(24.f, 32.f))),
					CallFunc::create([this, layerCanvas, drawNode](){
						// キャンバスの入れ替え
						
						//--------------------------
						// DrawNode入れ替え
						m_pDrawNode = drawNode;
						//--------------------------
					}),
					nullptr
				)
			);

			if (0 == m_nowPage)
			{
				// もう戻れないよ!
				button->setVisible(false);
			}
			button->getParent()->getChildByName("LastNextButton")->setVisible(true);
		}
	
	});
	{
		itemBack->setName("LastBackButton");
	}
	auto itemNext = MenuItemImage::create("NextButton.png",
										  "NextButton2.png",
										  [this](Ref* pSender){
		auto button = dynamic_cast<MenuItemImage*>(pSender);
		const auto maxPage = m_touchPoints.size() - 1;
		if (maxPage > m_nowPage)
		{
			// 進むよ!
			auto oldCanvas = this->getChildByName("Canvas");
			if (!oldCanvas)
				oldCanvas = this->getChildByName("Canvas" + std::to_string(m_nowPage));


			++m_nowPage;
			std::stringstream ss;
			ss << "Canvas" << m_nowPage;
			auto layerCanvas = this->getChildByName(ss.str());
			layerCanvas->setLocalZOrder(oldCanvas->getLocalZOrder() - 1);
			auto drawNode = layerCanvas->getChildByName<DrawNode*>("DrawNode");
			layerCanvas->setVisible(true);
			
			oldCanvas->runAction(
				Sequence::create(
					PageTurn3D::create(0.5f, Size(24.f, 32.f)),
					CallFunc::create([this, layerCanvas, drawNode](){
						// キャンバスの入れ替え
						
						//--------------------------
						// DrawNode入れ替え
						m_pDrawNode = drawNode;
						//--------------------------
					}),
					nullptr
				)
			);

			if (maxPage == m_nowPage)
			{
				// もう進めないよ!
				button->setVisible(false);
			}
			button->getParent()->getChildByName("LastBackButton")->setVisible(true);
		}

	});
	{
		itemNext->setName("LastNextButton");
		itemNext->setVisible(false);
	}
	auto menuLastButtons = Menu::create(itemBack, itemNext, nullptr);
	{
		// 縦一列,間隔
		const float padding = 10.f;
		menuLastButtons->alignItemsVerticallyWithPadding(padding);

		// 非表示
		menuLastButtons->setVisible(false);

		auto canvas = layerCanvas->getSprite();
		Vec2 leftBottom = canvas->convertToWorldSpace(Vec2::ZERO);

		auto size = itemBack->getContentSize();
		menuLastButtons->setPosition(leftBottom.x / 2.f,
									 leftBottom.y + size.height + padding / 2.f);

		this->addChild(menuLastButtons, ZOrder::MENULASTBUTTONS, "MenuLastButtons");
	}
	//-----------------------------------------------------
	m_pDrawNode = DrawNode::create();
	{
		m_pDrawNode->setAnchorPoint(Vec2::ZERO);
		auto canvas = layerCanvas->getSprite();
		//layerCanvas->addChild(m_pDrawNode, 1);
		m_pDrawNode->setPosition(
			-(layerCanvas->getPositionX() - layerCanvas->getAnchorPoint().x*layerCanvas->getContentSize().width ),
			-(layerCanvas->getPositionY() - layerCanvas->getAnchorPoint().y*layerCanvas->getContentSize().height)
			);
		canvas->addChild(m_pDrawNode, 1, "DrawNode");
	}


	//-----------------------------------------------------
	// 描きすぎレイヤー
	auto layerTouch = Layer::create();
	{
		layerTouch->setVisible(false);

		auto sprite = Sprite::create();	// 背景用
		sprite->setTextureRect(Rect(0, 0, visibleSize.width, visibleSize.height));
		sprite->setPosition(visibleSize / 2.f);
		sprite->setColor(Color3B::BLACK);
		sprite->setOpacity(192);
		layerTouch->addChild(sprite, 0);

		this->addChild(layerTouch, ZOrder::MOST_FRONT, "OverTouchLayer");
		auto label = Label::createWithSystemFont("一人の持ち時間を使い果たしました\n"
												 "\n次の人に回してタッチしてください\n",
												 "GenShinGothic-Medium.ttf", calcFontSize(40.f));
		{
			label->setPosition(layerTouch->getContentSize() / 2.f);
			label->setAlignment(TextHAlignment::CENTER, TextVAlignment::CENTER);
			label->setColor(Color3B(250, 250, 15));
			layerTouch->addChild(label, 10, "Label");
		}

		auto listener = EventListenerTouchOneByOne::create();
		listener->setSwallowTouches(false);
		listener->onTouchBegan = [this, layerTouch](Touch* touch, Event* event){
			if (layerTouch->isVisible())
			{
				return true;
			}
			return false;
		};
		listener->onTouchEnded = [this, layerTouch](Touch* touch, Event* event){
			//layerTouch->setVisible(false);
			//m_pListener->setSwallowTouches(false);
			// 描きすぎレイヤー非表示
			this->_SetOverTouchLayerVisible(false);
			if (m_nowPage >= m_playerNum - 2)
			{
				// 全員描いた場合
				// キャンバスめくらない
				m_flowPhase = FlowPhase::JUDGE;

				// 解答ボックス出現
				auto visibleSize = Director::getInstance()->getVisibleSize();
				m_pEditBox->runAction(
					Sequence::create(
						CallFunc::create([this]{ m_pEditBox->setEnabled(false); }),
						EaseBackOut::create(
							MoveTo::create(0.5f,
								Vec2(visibleSize.width / 2.f,
								m_pEditBox->getPositionY()
								)	// 画面中央まで
							)
						),
						CallFunc::create([this]{ m_pEditBox->setEnabled(true); }),
						nullptr
					)
				);

				// 全消去無効化
				m_pNextButton->setVisible(false);


				// ラベルの設定
				m_pLabel->setString("テーマを答えてください");

			}
			else
			{
				// 前の人の絵を見せる
				m_flowPhase = FlowPhase::SHOW;
				m_pLabel->setString("見終わったらタッチして描き始めてください");
			}

			// 全員描いた場合
			//if (m_nowPage >= m_playerNum - 1)
			//{
			//	// フェーズ
			//	m_flowPhase = FlowPhase::JUDGE;
			//
			//	// 解答ボックス出現
			//	auto visibleSize = Director::getInstance()->getVisibleSize();
			//	m_pEditBox->runAction(
			//		Sequence::create(
			//			CallFunc::create([this]{ m_pEditBox->setEnabled(false); }),
			//			EaseBackOut::create(
			//				MoveTo::create(0.5f,
			//					Vec2(visibleSize.width / 2.f,
			//					m_pEditBox->getPositionY()
			//					)	// 画面中央まで
			//				)
			//			),
			//			CallFunc::create([this]{ m_pEditBox->setEnabled(true); }),
			//			nullptr
			//		)
			//	);
			//
			//	// ラベルの設定
			//	m_pLabel->setString("テーマを答えてください");
			//
			//
			//}

		};
		this->_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, layerTouch);
		m_pListener = listener;
	}

	
	//-----------------------------------------------------
	// 解答入力ボックス
	m_pEditBox = EditBox::create(spriteSmallBoard->getContentSize(), Scale9Sprite::create("board.png"));
	{
		// box
		auto size = m_pEditBox->getContentSize();
		m_pEditBox->setPreferredSize(spriteSmallBoard->getContentSize());
		m_pEditBox->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
		m_pEditBox->setPosition(Vec2(
			origin.x + visibleSize.width + size.width / 2.f,
			origin.y + size.height / 2.f));
		//m_pEditBox->setPosition(Vec2(
		//	origin.x + visibleSize.width / 2.f,
		//	origin.y + size.height / 2.f));
		// 内部ラベル
		m_pEditBox->setFontName("GenShinGothic-Regular.ttf");	// ファミリー
		m_pEditBox->setFontSize(static_cast<int>(calcFontSize(25.f)));		// サイズ
		m_pEditBox->setFontColor(Color3B(250, 250, 250));				// 色
		m_pEditBox->getLabel()->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
		m_pEditBox->getLabel()->setPosition(spriteSmallBoard->getContentSize() / 2.f);
		// 初期ラベル
		m_pEditBox->setPlaceHolder("ここをタッチして解答 (全てひらがなで、数字は半角で入力)");	// 例等初期値(入力時に消える)
		m_pEditBox->setPlaceholderFontColor(Color3B(5, 5, 5));
		m_pEditBox->getPlaceHolderLabel()->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
		m_pEditBox->getPlaceHolderLabel()->setPosition(spriteSmallBoard->getContentSize() / 2.f);

		// Box自体の設定
		m_pEditBox->setMaxLength(20);	// 文字数
		m_pEditBox->setReturnType(EditBox::KeyboardReturnType::DEFAULT);	// Returnキーが押された時
		m_pEditBox->setInputMode(EditBox::InputMode::SINGLE_LINE);			// 1行,自由文字列

		// メソッド
		m_pEditBox->setDelegate(this);

		this->addChild(m_pEditBox, ZOrder::BOX, "EditBox");
	}
	
	//-----------------------------------------------------
	// 間違え
	auto spriteCrossCanvas = Sprite::create("CrossCanvas.png");
	{
		spriteCrossCanvas->setPosition(visibleSize / 2.f);
		spriteCrossCanvas->setVisible(false);
		this->addChild(spriteCrossCanvas, ZOrder::MOST_FRONT, "CrossCanvas");
	}
	//-----------------------------------------------------
	// 正解
	auto spriteCircleCanvas = Sprite::create("CircleCanvas.png");
	{
		spriteCircleCanvas->setPosition(visibleSize / 2.f);
		spriteCircleCanvas->setVisible(false);
		this->addChild(spriteCircleCanvas, ZOrder::MOST_FRONT, "CircleCanvas");
	}


	return true;
}
Example #18
0
/**
 * Constructor.
 * <p>
 * Builds an animation from the animation type so that it can be drawn later.
 * @param model
 * @param rect
 * @param animationType
 */
ImageView::ImageView(Model *model, const SDL_Rect &rect, AnimationType animationType) : RectangleView(model, rect) {
    animation = animationFactory->build(animationType);
    setHorizontalAlignment(HorizontalAlignment::LEFT);
    setVerticalAlignment(VerticalAlignment::BOTTOM);
}
Example #19
0
void GameInfoScene::createGamePanel()
{
	Size visibleSize = Director::getInstance()->getVisibleSize();
	auto bgcolor = LayerColor::create(GameInfos[game].color, visibleSize.width, visibleSize.height);
	bgcolor->setPosition(Point::ZERO);
	addChild(bgcolor);

	addChild(BackgroundWidget::createWithoutBackground());
    
	auto hooker = TopAnchor::create();
	addChild(hooker, 1);
    
	addChild(Vignette::create());

	auto gamelogo = MAKESPRITE(GameInfos[game].logo);
	hooker->addChild(gamelogo);
	gamelogo->setPosition(VCP(0.5f, 0.70f));
	gamelogo->runAction(RepeatForever::create(Sequence::createWithTwoActions(
		ScaleTo::create(3.0f, 1.05f),
		ScaleTo::create(3.0f, 1.0f)
		)));

	auto hookerMenu = Menu::create();
	hookerMenu->setPosition(Point::ZERO);
	hooker->addChild(hookerMenu);
    
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
	auto btnMenu = MAKEBUTTON("btnBackUp", "btnBackDn", GameInfoScene::menuCloseCallback);
	btnMenu->setPosition(VCP(0.03f, 0.95f));
	btnMenu->setAnchorPoint(Point(0, 1.0f));
	btnMenu->setScale(1.3f);
	hookerMenu->addChild(btnMenu);
    
	auto gems = GemsLayer::create();
	gems->setAnchorPoint(Point(1, 1));
	gems->setPosition(VCP(0.97f, 0.95f));
	hooker->addChild(gems);
#endif
    
	auto pMenu = Menu::create();
	pMenu->setPosition(Point::ZERO);
	addChild(pMenu, 1);

	auto episodetitle = Label::createWithTTF(LS(GameInfos[game].title), NORMAL_TTF, 60.0f);
	episodetitle->setHorizontalAlignment(TextHAlignment::CENTER);
	episodetitle->setPosition(CP(0.5f, 0.45f));
	addChild(episodetitle);

	auto unlocktext = Label::createWithTTF(LS(GameInfos[game].description), NORMAL_TTF, 38.0f);
	unlocktext->setHorizontalAlignment(TextHAlignment::CENTER);
	unlocktext->setPosition(CP(0.5f, 0.30f));
	addChild(unlocktext);

#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
	if (GameSettings::Gems >= 1)
	{
		//show buy button
		auto btnBuy = MakeButton("btnGreenUp", "btnGreenDn", LS("PlayFor1Gem"), 42.0f,
			CC_CALLBACK_1(GameInfoScene::btnBuyPressed, this));
		btnBuy->setPosition(CP(0.5f, 0.05f));
		btnBuy->setAnchorPoint(Point(0.5f, 0));
		pMenu->addChild(btnBuy);
	}
	else
	{
		auto errortext = Label::createWithTTF(LS("NotEnoughGems"), FANCY_TTF, 42.0f);
		errortext->setColor(Color3B::RED);
		errortext->enableShadow();
		errortext->setPosition(CP(0.5f, 0.05f));
		addChild(errortext);
	}
#else
    auto btnBuy = MakeButton("btnGreenUp", "btnGreenDn", LS("Play"), 42.0f,
                             CC_CALLBACK_1(GameInfoScene::btnBuyPressed, this));
    btnBuy->setPosition(CP(0.5f, 0.05f));
    btnBuy->setAnchorPoint(Point(0.5f, 0));
    pMenu->addChild(btnBuy);
#endif
}