bool MainMenuLayer::init() { if(!Layer::init()) { return false; } MenuItemFont::setFontName("fonts/arial.ttf"); MenuItemFont::setFontSize(40); auto menuItemSelectMap = MenuItemFont::create(std::string(LocalizedCStringByKey("start_game"))); menuItemSelectMap->setCallback( [=](Ref*) { static_cast<LayerMultiplex*>(_parent)->switchTo(1); } ); auto menuItemMapMaker = MenuItemFont::create(std::string(LocalizedCStringByKey("map_maker"))); menuItemMapMaker->setCallback( [](Ref*) { auto scene = Scene::create(); scene->addChild(MapMakerScene::create()); Director::getInstance()->replaceScene(TransitionFlipX::create(0.5, scene)); } ); auto menu = Menu::create(menuItemSelectMap, menuItemMapMaker, nullptr); menu->alignItemsVerticallyWithPadding(20); auto s = Director::getInstance()->getWinSize(); addChild(menu); menu->setPosition(Vec2(s.width / 2, s.height / 2)); return true; }
bool SJIndex::init(){ if (!Layer::init()) { return false; } cocos2d::Size size = Director::getInstance()->getWinSize(); auto layer=LayerColor::create(Color4B(239, 241, 224, 255)); this->addChild(layer,0); // auto startBtn=ControlButton::create(); // startBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(SJIndex::start), Control::EventType::TOUCH_UP_INSIDE); ; auto titleLabel=Label::createWithTTF(LocalizedCStringByKey("appName"), "fonts/hyz.ttf", 48); titleLabel->setPosition(size.width/2,size.height/4*3); titleLabel->setTextColor(ccc4(0, 0, 0, 255)); this->addChild(titleLabel,1); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) //iOS代码 auto commenUsBtn=Sprite::create("commentUs.png"); commenUsBtn->setPosition(Vec2(size.width/2, size.height/12*5)); this->addChild(commenUsBtn,1); auto comentListen = EventListenerTouchOneByOne::create();//创建一个触摸监听 comentListen->onTouchBegan =CC_CALLBACK_2(SJIndex::commentUs,this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(comentListen, commenUsBtn); #else //Android代码 #endif auto startBtn=Sprite::create("easy.png"); startBtn->setPosition(Vec2(size.width/5*1, size.height/3)); startBtn->setTag(2); this->addChild(startBtn,1); auto startBtn2=Sprite::create("middle.png"); startBtn2->setPosition(Vec2(size.width/5*4, size.height/3)); startBtn2->setTag(3); this->addChild(startBtn2,1); auto startBtn3=Sprite::create("hard.png"); startBtn3->setPosition(Vec2(size.width/10*3, size.height/6)); startBtn3->setTag(4); this->addChild(startBtn3,1); bool isVeryHardUnLock = UserDefault::getInstance()->getBoolForKey("isVeryHardUnLock"); auto startBtn4=Sprite::create(isVeryHardUnLock?"veryHard.png":"veryHard_lock.png"); startBtn4->setPosition(Vec2(size.width/10*7., size.height/6)); startBtn4->setTag(5); this->addChild(startBtn4,1); int coinCount = UserDefault::getInstance()->getIntegerForKey("coinCount"); String *s=String ::createWithFormat("金币:%d",coinCount); coinLabel=Label::createWithTTF(s->getCString(), "fonts/hyz.ttf", 28); coinLabel->setPosition(WIDTH/2, HEIGHT/8*5); coinLabel->setTextColor(ccc4(0, 0, 0, 255)); coinLabel->setTag(18); this->addChild(coinLabel,5); alertBox=Sprite::create("alertBox.png"); alertBox->setPosition(WIDTH/2, HEIGHT+HEIGHT/2); this->addChild(alertBox,99); auto msgStr=String::createWithFormat("是否使用1000金币解锁关卡?\n你现在拥有金币%d个",coinCount); auto msgLabel=Label::createWithTTF(msgStr->getCString(), "fonts/hyz.ttf", 28); msgLabel->setPosition(alertBox->getBoundingBox().size.width/2, alertBox->getBoundingBox().size.height-100); msgLabel->setTextColor(ccc4(0, 0, 0, 255)); alertBox->addChild(msgLabel,5); auto okBtn=Sprite::create("okBtn.png"); okBtn->setPosition(120,50); alertBox->addChild(okBtn); auto cancelBtn=Sprite::create("cancelBtn.png"); cancelBtn->setPosition(300,50); alertBox->addChild(cancelBtn); auto listener1 = EventListenerTouchOneByOne::create();//创建一个触摸监听 listener1->onTouchBegan =CC_CALLBACK_2(SJIndex::start,this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener1, startBtn); auto listener2 = EventListenerTouchOneByOne::create();//创建一个触摸监听 listener2->onTouchBegan =CC_CALLBACK_2(SJIndex::start,this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener2, startBtn2); auto listener3 = EventListenerTouchOneByOne::create();//创建一个触摸监听 listener3->onTouchBegan =CC_CALLBACK_2(SJIndex::start,this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener3, startBtn3); auto listener4 = EventListenerTouchOneByOne::create();//创建一个触摸监听 listener4->onTouchBegan =CC_CALLBACK_2(SJIndex::start,this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener4, startBtn4); auto okListener = EventListenerTouchOneByOne::create();//创建一个触摸监听 okListener->onTouchBegan =CC_CALLBACK_2(SJIndex::ok,this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(okListener, okBtn); auto cancelListen = EventListenerTouchOneByOne::create();//创建一个触摸监听 cancelListen->onTouchBegan =CC_CALLBACK_2(SJIndex::cancel,this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(cancelListen, cancelBtn); // UserDefault::getInstance()->setBoolForKey("isVeryHardUnLock", true); return true; }
bool MapMakerScene::init() { if (!Layer::init()) { return false; } m_lastSelectGroup = nullptr; Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto s = Director::getInstance()->getWinSize(); //input map name auto pTextField = TextFieldTTF::textFieldWithPlaceHolder(std::string(LocalizedCStringByKey("input_map_name")), "fonts/arial.ttf", 48); addChild(pTextField,0,"tbMapName"); pTextField->setPosition(Vec2(s.width / 2,s.height - 250)); //输入事件 auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [pTextField](Touch* touch, Event*) { auto beginPos = touch->getLocation(); Rect rect; rect.size = pTextField->getContentSize(); auto clicked = isScreenPointInRect(beginPos, Camera::getVisitingCamera(), pTextField->getWorldToNodeTransform(), rect, nullptr); if (clicked) { return true; } pTextField->detachWithIME(); return false; }; listener->onTouchEnded = [pTextField](Touch* touch, Event* event) { auto endPos = touch->getLocation(); Rect rect; rect.size = pTextField->getContentSize(); auto clicked = isScreenPointInRect(endPos, Camera::getVisitingCamera(), pTextField->getWorldToNodeTransform(), rect, nullptr); if (clicked) { pTextField->attachWithIME(); } }; _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); //返回主菜单 auto returnToMainMenuItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(MapMakerScene::returnToMainMenuCallback, this) ); returnToMainMenuItem->setPosition(Vec2(origin.x + visibleSize.width - returnToMainMenuItem->getContentSize().width / 2, origin.y + returnToMainMenuItem->getContentSize().height / 2)); auto menu = Menu::create(returnToMainMenuItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); //baseplate auto baseplateLayer = SquareBaseplateLayer::create(); baseplateLayer->createEmptyMap(BaseSize(15,15)); baseplateLayer->drawBasesplate(Vec2(32,32)); baseplateLayer->setPosition(Vec2(100,200)); addChild(baseplateLayer); //菜单,创建group auto menuItemCreateGroup = MenuItemFont::create(LocalizedCStringByKey("create_group")); menuItemCreateGroup->setCallback( [=](Ref*) { auto squareGroup = SquareGroupMapMaker::create(); squareGroup->setPosition(Vec2(100,100)); squareGroup->SetSquareGroup(Vec2(32,32),SquareGroup::SQUAREGROUP_TYPE::ST_Z,Square::SQUARE_COLOR::SC_GREEN); squareGroup->DrawGroup(); squareGroup->setSelectedListener( [=](SquareGroup* sg) { m_lastSelectGroup = sg; }); this->addChild(squareGroup); } ); //菜单,删除group auto menuItemDeleteSelectedGroup = MenuItemFont::create(LocalizedCStringByKey("delete_group")); menuItemDeleteSelectedGroup->setCallback( [=](Ref*) { for(Node* node:this->getChildren()) { SquareGroupMapMaker* sg = dynamic_cast<SquareGroupMapMaker*>(node); if(sg != nullptr) { if(sg->getGroupState() == SGS_SELECTED) { assert(m_lastSelectGroup == sg); m_lastSelectGroup = nullptr; this->removeChild(node); } } } } ); //菜单,保存地图 auto menuItemSaveMap = MenuItemFont::create(LocalizedCStringByKey("save_map")); menuItemSaveMap->setCallback( [=](Ref*) { saveMapToFile(); } ); //创建菜单组 auto operationMenu = Menu::create(menuItemCreateGroup,menuItemDeleteSelectedGroup,menuItemSaveMap, NULL); operationMenu->alignItemsVerticallyWithPadding(20); addChild(operationMenu); operationMenu->setPosition(Vec2(s.width / 2, s.height - 100)); //产生本地图的guid m_guid = std::string(GameUilityTools::CreateGuidString()); //添加选择颜色的层 auto colorLayer = SelectColorLayer::create(); colorLayer->setPosition(Vec2(0, 0)); colorLayer->setColorChangeListener( [=](Square::SQUARE_COLOR color){ //todo xuhua if (m_lastSelectGroup) { m_lastSelectGroup->setSquareGroupColor(color); m_lastSelectGroup->DrawGroup(); } } ); addChild(colorLayer, 0); return true; }
bool SelectLevelMenuLayer::init() { if (!Layer::init()) { return false; } MenuItemFont::setFontName("fonts/arial.ttf"); MenuItemFont::setFontSize(40); Vector<MenuItem*>* menuItemList =new Vector < MenuItem* >() ; auto menuItemBack = MenuItemFont::create(std::string(LocalizedCStringByKey("back"))); menuItemBack->setCallback( [=](Ref*) { static_cast<LayerMultiplex*>(_parent)->switchTo(0); } ); menuItemList->pushBack(menuItemBack); GameDB::getInstance()->loopMapTable( [menuItemList](std::string uuid, std::string mapName, std::string mapBuffer) { rapidjson::Document _json; _json.Parse<0>(mapBuffer.c_str()); if (_json.HasParseError()) { CCLOG("SelectLevelMenuLayer::init() _json.HasParseError() mapName:%s,uuid:%s", mapName.c_str(),uuid.c_str()); } else { if (_json.IsObject()) { auto _mapName = mapName == "" ? uuid : mapName; auto menuItemMap = MenuItemFont::create(_mapName); menuItemMap->setCallback( [uuid](Ref * ref) { auto scene = Scene::create(); scene->addChild(GamePlayScene::create(uuid)); Director::getInstance()->replaceScene(TransitionFlipX::create(0.5, scene)); } ); menuItemList->pushBack(menuItemMap); } else { //localStorageRemoveItem(mapName); } } } ); // std::string path = FileUtils::getInstance()->getWritablePath(); //// localStorageInit(path + "/map"); // std::string mapNameList; //// if (localStorageGetItem("namelist", &mapNameList)) // { // std::vector< std::string >* namelist = new std::vector< std::string >(); // std::string splitStr = "|"; // split(mapNameList, splitStr, namelist); // for (auto mapName : *namelist) // { // std::string _mapBuffer; //// if (localStorageGetItem(mapName, &_mapBuffer)) // { // rapidjson::Document _json; // _json.Parse<0>(_mapBuffer.c_str()); // if (_json.HasParseError()) // { //// localStorageRemoveItem(mapName); // } // else // { // if (_json.IsObject()) // { // auto menuItemMap = MenuItemFont::create(mapName); // menuItemMap->setCallback( // [mapName](Ref * ref) // { // auto scene = Scene::create(); // scene->addChild(GamePlayScene::create(mapName)); // Director::getInstance()->replaceScene(TransitionFlipX::create(0.5, scene)); // } // ); // menuItemList.pushBack(menuItemMap); // } // else // { // //localStorageRemoveItem(mapName); // } // } // //SquareBaseplateLayer::getInstance()->readMapBuf(_mapBuffer); // } // //else // //{ // // localStorageRemoveItem(mapName); // //} // } // namelist->clear(); // delete namelist; // // } // localStorageFree(); auto menu = Menu::createWithArray(*menuItemList); menuItemList->clear(); auto s = Director::getInstance()->getWinSize(); addChild(menu); menu->setPosition(Vec2(s.width / 2, s.height / 2)); menu->alignItemsVerticallyWithPadding(20); return true; }