// // ToyLevelPickerLayer.cpp // HalloweenSpaceInvaders-mobile // // Created by Katarzyna Kalinowska-Górska on 03/10/2019. // #include #include "ToyLevelPickerLayer.h" #include "ToyScalingUtils.h" #include "ToySimpleButton.h" #include "ToyMiscUtils.h" ToyLevelPickerLayer* ToyLevelPickerLayer::create(float width, float height){ ToyLevelPickerLayer * view = new (std::nothrow) ToyLevelPickerLayer(); if(view && view->init(width, height)) { view->autorelease(); return view; } CC_SAFE_DELETE(view); return nullptr; } bool ToyLevelPickerLayer::init(float width, float height){ if(!cocos2d::LayerColor::initWithColor(cocos2d::Color4B(0,0,0,220), width, height)){ return false; } setCascadeOpacityEnabled(true); // add the level picker std::vector levelImagePaths = { "graphics/levels/level_1.png", "graphics/levels/level_2.png", "graphics/levels/level_3.png" }; std::vector levelNames = { "EASY", "MEDIUM", "DIFFICULT" }; //TODO HARD CODED _levelPickerView = ToyLevelPickerView::create(levelImagePaths, levelNames); addChild(_levelPickerView); _levelPickerView->setAnchorPoint(cocos2d::Vec2(0.5, 0.5)); _levelPickerView->setPosition(width/2, height/2); _levelPickerView->addOnLevelChangedCallback([](int pickedLevel){ ToyMiscUtils::saveLastLevel(pickedLevel); }); _levelPickerView->selectLevelIndex((int)ToyMiscUtils::lastLevel(), false); // add the instruction label auto instructionLabel = cocos2d::Label::createWithTTF("CHOOSE YOUR LEVEL:", "fonts/ComicSansMSBold.ttf", 120*ToyScalingUtils::getScaleForFont()); //magic number addChild(instructionLabel); auto paddingTop = instructionLabel->getBoundingBox().size.height*1.5f; instructionLabel->setPosition(width/2, _levelPickerView->getBoundingBox().getMaxY() + paddingTop); // add the go button auto buttonGo = ToySimpleButton::create(); auto goButtonTexturePath = "buttons/graphics/dark_green.png"; buttonGo->loadTextures(goButtonTexturePath, goButtonTexturePath, goButtonTexturePath); auto buttonBg = cocos2d::Sprite::create("buttons/graphics/button_go.png"); buttonGo->addChild(buttonBg); buttonBg->setPosition(cocos2d::Vec2(buttonGo->getContentSize().width/2,buttonGo->getContentSize().height/2)); addChild(buttonGo); auto paddingBottom = paddingTop; buttonGo->setAnchorPoint(cocos2d::Vec2(1, 0.5)); buttonGo->setPosition(cocos2d::Vec2(_levelPickerView->getBoundingBox().getMaxX(), _levelPickerView->getBoundingBox().getMinY() - paddingBottom)); buttonGo->setOnTouchEndedCallback([&](std::string name, cocos2d::ui::Widget::TouchEventType eventType){ if(_onGoPressedCallback != nullptr){ _onGoPressedCallback(); } ToyMiscUtils::hideAndRemoveView(this, true); }); return true; } void ToyLevelPickerLayer::addOnGoPressedCallback(std::function onGoPressed){ _onGoPressedCallback = onGoPressed; }