コード例 #1
0
ファイル: MainMenuLayer.cpp プロジェクト: xu1hua/SquareClear
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;
}
コード例 #2
0
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;
}
コード例 #3
0
ファイル: MapMakerScene.cpp プロジェクト: xu1hua/WindFighter
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;
}
コード例 #4
0
ファイル: MainMenuLayer.cpp プロジェクト: xu1hua/SquareClear
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;
}