void HallMainWidget::finish() { float hrate = getHorAdaptResourceScale(); CCSprite *bottomBg = CCSprite::createWithSpriteFrameName("hallbottom.png"); CCSize bgSize = bottomBg->getContentSize(); BasNodeDelegateWidget *bottomBar = new BasNodeDelegateWidget(bottomBg,CCSizeMake(bgSize.width * hrate,bgSize.height * hrate)); this->addChild(bottomBar); bottomBar->setLeft("parent",uilib::Left); bottomBar->setRight("parent",uilib::Right); bottomBar->setBottom("parent",uilib::Bottom); bottomBar->setHeight(bgSize.height * hrate); BasWidget *pageWidget = new BasWidget; this->addChild(pageWidget); pageWidget->setLeft("parent",uilib::Left); pageWidget->setRight("parent",uilib::Right); pageWidget->setTop("parent",uilib::Top); pageWidget->setBottom(bottomBar->getName(),uilib::Top); BasWidget *buttonContainer = bottomBar; if(m_pages.size() != 0){ HorizontalLayout *barlay = new HorizontalLayout; barlay->setSpacing(5); barlay->setAlignChildsSize(true); barlay->setAveraged(true); barlay->setSizeLimitedToParent(); BasButton *button; if(m_buttonTheme.empty()) m_buttonTheme = "default"; BasNodeAction *pageMoveIn = UiNodeActionFactory::getInstance()->getMoveActionByName("movein"); pageMoveIn->setEaseType(uilib::EaseNone); pageMoveIn->setMoveInType(uilib::HorizontalRightIn); BasNodeAction *pageMoveOut = UiNodeActionFactory::getInstance()->getMoveActionByName("moveout"); pageMoveOut->setEaseType(uilib::EaseNone); pageMoveOut->setMoveOutType(uilib::HorizontalRightOut); for(unsigned int i = 0;i < m_pages.size();i++){ HallPageDef *page = m_pages[i]; button = new BasButton; button->setTouchPriority(uilib::HighestPriority); button->setButtonIndex(i); button->setClickCB(this,callfuncND_selector(HallMainWidget::onPageButtonClicked)); button->setButtonInfo("",m_buttonTheme, page->m_img, CCSizeMake(0,0), page->m_pressedImg ); button->setWidthHeightRate(0.735); barlay->addWidget(button); page->m_page->setContainer(pageWidget); page->m_page->setMoveinAction(pageMoveIn); page->m_page->setMoveoutAction(pageMoveOut); } buttonContainer->setLayout(barlay); m_currPage = 0; } }
Dialog::Dialog(std::shared_ptr<DialogData> p) { using namespace DialogSettings; sizePolicy = WidgetSizePolicy::PREFER; layout._setPos(IntPair{borderSz, borderSz}); layout.setMargins(0, 0, 0, 0); layout.setWidgetAlignment(WidgetAlignmentHoriz::LEFT, WidgetAlignmentVert::TOP); layout.setSpacing(widgetSpacing); // process data assert(p); data = p; assert(!data->title.empty()); assert(!data->message.empty()); assert(!data->buttonText.empty()); TextRenderer* tr = GameData::instance().resources->getDefaultTR(); WidgetText* textTitle = new WidgetText; textTitle->enableBackground(colTitleBg); textTitle->setRenderer(tr); textTitle->setTextColor(colText); textTitle->setText(data->title); WidgetText* textMessage = new WidgetText; textMessage->setRenderer(tr); textMessage->setTextColor(colText); textMessage->setText(data->message); // add buttons HorizontalLayout* hLayout = new HorizontalLayout; hLayout->setWidgetAlignment(WidgetAlignmentHoriz::LEFT, WidgetAlignmentVert::TOP); hLayout->setSpacing(btnSpacing); std::shared_ptr<TextButton::Style> buttonStyle = std::make_shared<TextButton::Style>(); buttonStyle->tr = tr; buttonStyle->outlineSz = 0; buttonStyle->colText = colBtnText; buttonStyle->colBgOut = colBtnBgOut; buttonStyle->colBgOver = colBtnBgOver; buttonStyle->colBgDown = colBtnBgDown; TextButton* button; for (std::size_t i = 0; i < data->buttonText.size(); ++i) { button = new TextButton; button->setStyle(buttonStyle); button->setText(data->buttonText[i]); button->setCallback(std::bind(&self_type::buttonCallback, this, i)); hLayout->add(button); } // add to layout layout.add(textTitle); layout.add(textMessage); layout.add(hLayout); // finalize layout._setParent(this); _resize(getPrefSize(), WidgetResizeFlag::SELF); }