Exemplo n.º 1
0
UI::UI( cocos2d::Layer *layer, int &gameState )
{
    this->gameState = &gameState;
    
    Size screenSize = Director::getInstance( )->getVisibleSize( );
    Vec2 origin = Director::getInstance( )->getVisibleOrigin( );

    MenuItemSprite *pauseItem = MenuItemSprite::create( Sprite::create( PAUSE_BUTTON ), Sprite::create( PAUSE_BUTTON_PRESSED ), Sprite::create( PAUSE_BUTTON_PRESSED ), CC_CALLBACK_1( UI::PauseGame, this ) );
    pauseItem->setPosition( Vec2( screenSize.width - ( pauseItem->getContentSize( ).width / 2 ) + origin.x, screenSize.height - ( pauseItem->getContentSize( ).height / 2 ) + origin.y ) );
    
    Menu *menuButtons = Menu::create( pauseItem, NULL );
    menuButtons->setPosition( Vec2::ZERO );
    layer->addChild( menuButtons );
    
    pausebackground = Sprite::create( PAUSE_BACKGROUND );
    pausebackground->setPosition( SonarCocosHelper::UI::GetScreenCenter( ) );
    pausebackground->setOpacity( 0 );
    layer->addChild( pausebackground );
    
    
    MenuItemImage *overlayPauseWindowItem = MenuItemImage::create( PAUSE_WINDOW, PAUSE_WINDOW, PAUSE_WINDOW, NULL );
    MenuItemSprite *resumeItem = MenuItemSprite::create( Sprite::create( RESUME_BUTTON ), Sprite::create( RESUME_BUTTON_PRESSED ), Sprite::create( RESUME_BUTTON ), CC_CALLBACK_1( UI::PauseGame, this ) );
    resumeItem->setPosition( Vec2( -overlayPauseWindowItem->getContentSize( ).width / 4, resumeItem->getPositionY( ) ) );
    MenuItemSprite *mainMenuItem = MenuItemSprite::create( Sprite::create( HOME_BUTTON ), Sprite::create( HOME_BUTTON_PRESSED ), Sprite::create( HOME_BUTTON_PRESSED ), CC_CALLBACK_1( UI::GoToMainMenu, this ) );
    mainMenuItem->setPosition( Vec2( overlayPauseWindowItem->getContentSize( ).width / 4, mainMenuItem->getPositionY( ) ) );
    
    pauseMenu = Menu::create( overlayPauseWindowItem, resumeItem, mainMenuItem, NULL );
    pauseMenu->setPosition( Vec2( SonarCocosHelper::UI::GetScreenCenter( ).x, SonarCocosHelper::UI::GetScreenCenter( ).y + screenSize.height ) );
    layer->addChild( pauseMenu );
}
Exemplo n.º 2
0
void UI::ShowGameOver( cocos2d::Layer *layer )
{
    Size screenSize = Director::getInstance( )->getVisibleSize( );

    Sprite *background = Sprite::create( GAME_OVER_BACKGROUND );
    background->setPosition( SonarCocosHelper::UI::GetScreenCenter( ) );
    background->setOpacity( 0 );
    layer->addChild( background );
    background->runAction( Sequence::create( DelayTime::create( PIECE_FADE_IN_TIME * 2.5 ), FadeIn::create( GAME_OVER_BACKGROUND_FADE_IN_TIME ), NULL ) );
    
    MenuItemImage *overlayWindowItem = MenuItemImage::create( GAME_OVER_WINDOW, GAME_OVER_WINDOW, GAME_OVER_WINDOW, NULL );
    MenuItemSprite *retryItem = MenuItemSprite::create( Sprite::create( RETRY_BUTTON ), Sprite::create( RETRY_BUTTON_PRESSED ), Sprite::create( RETRY_BUTTON ), CC_CALLBACK_1( UI::Retry, this ) );
    retryItem->setPosition( Vec2( overlayWindowItem->getContentSize( ).width / 4, retryItem->getPositionY( ) ) );
    MenuItemSprite *mainMenuItem = MenuItemSprite::create( Sprite::create( HOME_BUTTON ), Sprite::create( HOME_BUTTON_PRESSED ), Sprite::create( HOME_BUTTON_PRESSED ), CC_CALLBACK_1( UI::GoToMainMenu, this ) );
    mainMenuItem->setPosition( Vec2( -overlayWindowItem->getContentSize( ).width / 4, mainMenuItem->getPositionY( ) ) );
    
    
    Menu *menu = Menu::create( overlayWindowItem, retryItem, mainMenuItem, NULL );
    menu->setPosition( Vec2( SonarCocosHelper::UI::GetScreenCenter( ).x, SonarCocosHelper::UI::GetScreenCenter( ).y + screenSize.height ) );
    layer->addChild( menu );
    

    EaseBounceOut *menuActionEasing = EaseBounceOut::create( MoveTo::create( MENU_MOVE_BOUNCE_DURATION, SonarCocosHelper::UI::GetScreenCenter( ) ) );
    Sequence *menuShowSeq = Sequence::create( DelayTime::create( PIECE_FADE_IN_TIME * 2.5 ), menuActionEasing, NULL );
    menu->runAction( menuShowSeq );
}
Exemplo n.º 3
0
void ConfirmLayer::createLayersContent() {
    GameModel* gameModel = GameModel::getInstance();
    
    Face* backgroundFade = new Face();
    backgroundFade->initWithFile(ANI_BACKGROUND_FADE);
    backgroundFade->setPosition(Point(gameModel->getDisplayResolutionSize().width / 2, gameModel->getDisplayResolutionSize().height / 2));
    backgroundFade->setOpacity(0);
    this->mainLayer->addChild(backgroundFade);
    this->backgroundFade = backgroundFade;
    {
        FiniteTimeAction* fadeIn = FadeIn::create(0.5f);
        backgroundFade->registerState(STATE_FADE_IN, fadeIn);
        
        FiniteTimeAction* fadeOut = FadeOut::create(0.5f);
        backgroundFade->registerState(STATE_FADE_OUT, fadeOut);
    }
    
    Face* menuFace = new Face();
    menuFace->initWithSpriteFrameName(ANI_BOX_CONFIRM);
    menuFace->setPosition(Point(gameModel->getDisplayResolutionSize().width / 2, -500));
    this->mainLayer->addChild(menuFace);
    this->menuFace = menuFace;
    Size menuFaceSize = menuFace->getContentSize();
    
    UGMenu* optionMenu = UGMenu::create();
    optionMenu->setPosition(Point::ZERO);
    menuFace->addChild(optionMenu);
    {
        Label* confirmLabel = Label::createWithBMFont(FONT_GAME_SMALL, TXT_CONFIRM_TEXT);
        confirmLabel->setPosition(menuFaceSize.width / 2, menuFaceSize.height / 2);
        this->menuFace->addChild(confirmLabel);
    }
    {
        FiniteTimeAction* move1 = MoveTo::create(0, menuFace->getPosition());
        FiniteTimeAction* move2 = MoveTo::create(0.5f, Point(gameModel->getDisplayResolutionSize().width / 2, gameModel->getDisplayResolutionSize().height / 2));
        FiniteTimeAction* move3 = CallFunc::create(CC_CALLBACK_0(ConfirmLayer::onOptionBoardMoveUpDone, this));
        FiniteTimeAction* move123 = Sequence::create(move1, move2, move3, NULL);
        menuFace->registerState(STATE_MOVE_UP, move123);
        
        FiniteTimeAction* move4 = MoveTo::create(0, Point(gameModel->getDisplayResolutionSize().width / 2, gameModel->getDisplayResolutionSize().height / 2));
        FiniteTimeAction* move5 = MoveTo::create(0.5f, menuFace->getPosition());
        FiniteTimeAction* move6 = CallFunc::create(CC_CALLBACK_0(ConfirmLayer::onOptionBoardMoveDownDone, this));
        FiniteTimeAction* move456 = Sequence::create(move4, move5, move6, NULL);
        menuFace->registerState(STATE_MOVE_DOWN, move456);
        
        MenuItemSprite* okButton = Utils::createButton((char*) TXT_OK, 16, ANI_BUTTON_SMALL, ANI_BUTTON_SMALL);
        okButton->setCallback(CC_CALLBACK_1(ConfirmLayer::onOkButtonClick, this));
        okButton->setPosition(Point(menuFaceSize.width / 2 - 129, 0));
        okButton->setEnabled(false);
        optionMenu->addChild(okButton);
        this->okButton = okButton;
        
        MenuItemSprite* cancelButton = Utils::createButton((char*) TXT_CANCEL, 16, ANI_BUTTON_SMALL, ANI_BUTTON_SMALL);
        cancelButton->setCallback(CC_CALLBACK_1(ConfirmLayer::onCancelButtonClick, this));
        cancelButton->setPosition(Point(menuFaceSize.width / 2 + 129, 0));
        cancelButton->setEnabled(false);
        optionMenu->addChild(cancelButton);
        this->cancelButton = cancelButton;
    }
}
Exemplo n.º 4
0
bool GameOverLayer::init(){

	if(!Layer::init()){
		return false;
	}



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

	MenuItemSprite *reStartBtn = MenuItemSprite::create(Sprite::create("res/image/uires_5.png"),
			Sprite::create("res/image/uires_5.png"),
			NULL,
			CC_CALLBACK_0(GameOverLayer::reStart,this)
			);
	MenuItemSprite *homeBtn = MenuItemSprite::create(Sprite::create("res/image/uires_8.png"),
			Sprite::create("res/image/uires_8.png"),
			NULL,
			CC_CALLBACK_0(GameOverLayer::home,this)
			);

	reStartBtn->setPosition(MyWinSize.width/2+reStartBtn->getContentSize().width/2,MyWinSize.height/2 +8);
	homeBtn->setPosition(MyWinSize.width/2-homeBtn->getContentSize().width/2,MyWinSize.height/2 +8);
	Menu *menu = Menu::create(reStartBtn,homeBtn,NULL);
	menu->setPosition(0,0);
	this->addChild(menu);
	return true;
}
//pageview的用法
void TeachingLayer::addLayer(int index)
{
	auto winSize = Director::getInstance()->getWinSize();
	pageView = PageView::create();
	//一定要设置大小,不然看不见
	pageView->setContentSize(winSize);
	pageView->setBackGroundColor(Color3B::GREEN);
	pageView->setBackGroundColorType(Layout::BackGroundColorType::SOLID);
	pageView->removeAllPages();
	pageView->setPosition(Vec2::ZERO);
	if (index == 0)
	{
		for (int i=0;i<4;++i)
		{
			//pageview一定要配合layout使用
			Layout* layout = Layout::create();
			layout->setContentSize(winSize);
			auto layer = TeachingSubLayer::create(index,i);
			//layer->setPosition(Vec2(winSize.width/2,winSize.height/2));
			layout->addChild(layer);
			//----按钮
			MenuItemSprite* pJumpItem;
			if (i<=2)
			{
				auto nextNormal = Sprite::create("teaching_next.png");
				auto nextPressed = Sprite::create("teaching_next.png");
				nextPressed->setScale(1.4f);
				pJumpItem = MenuItemSprite::create(nextNormal,nextPressed,CC_CALLBACK_0(TeachingLayer::menuJump,this));
				//pJumpItem->setPosition(Vec2(winSize.width/2 - 60,35-winSize.height/2));
				pJumpItem->setPosition(Vec2(winSize.width - pJumpItem->getContentSize().width,
					pJumpItem->getContentSize().height));
			}
			else//最后一步
			{
				auto nextNormal = Sprite::create("teaching_enter.png");
				auto nextPressed = Sprite::create("teaching_enter.png");
				nextPressed->setScale(1.4f);
				pJumpItem = MenuItemSprite::create(nextNormal,nextPressed,CC_CALLBACK_0(TeachingLayer::menuJump,this));
				pJumpItem->setPosition(Vec2(winSize.width - pJumpItem->getContentSize().width,
					pJumpItem->getContentSize().height));
			}
			pJumpItem->setAnchorPoint(Vec2::ANCHOR_BOTTOM_RIGHT);

			auto pMenu = Menu::create(pJumpItem,nullptr);
			pMenu->setPosition(Vec2::ZERO);
			layer->addChild(pMenu,3);

			pageView->insertPage(layout,i);
		}
	}

	curPage = 0;
	pageView->scrollToPage(curPage);
	pageView->addEventListener(CC_CALLBACK_2(TeachingLayer::pageViewEvent, this));

	this->addChild(pageView);
}
Exemplo n.º 6
0
// on "init" you need to initialize your instance
bool MainMenu::init()
{
  if ( !Layer::init() )
  {
    return false;
  }
  
  Sprite* background = Sprite::create("mainbg.jpg");
  background->setPosition(SCREEN_SIZE.width/2, SCREEN_SIZE.height/2);
  setScale(SCREEN_SIZE.width/background->getContentSize().width,
           SCREEN_SIZE.height/background->getContentSize().height);
  
  addChild(background);
  
  Sprite* normalS = Sprite::create("startButton.png");
  Sprite* selectedS = Sprite::create("startButton.png");
  selectedS->setColor(Color3B::GRAY);
  MenuItemSprite* start = MenuItemSprite::create(normalS,
                                                selectedS,
                                                CC_CALLBACK_1(MainMenu::goToStartScene, this));
  Point posStart = Point(SCREEN_SIZE.width/2, SCREEN_SIZE.height/4 + 10);
  start->setPosition(posStart);
  start->setScale(0.5f);
  
  Sprite* normalE = Sprite::create("emergencyButton.png");
  normalE->setColor(Color3B::RED);
  Sprite* selectedE = Sprite::create("emergencyButton.png");
  selectedE->setColor(Color3B::GRAY);
  MenuItemSprite* emergency = MenuItemSprite::create(normalE,
                                                     selectedE,
                                                     CC_CALLBACK_1(MainMenu::goToStartScene, this));
  Point posEmer = Point(SCREEN_SIZE.width/3 + 10, SCREEN_SIZE.height/4 + 10);
  emergency->setPosition(posEmer);
  emergency->setScale(0.5f);
  
  Sprite* normalSe = Sprite::create("settingButton.png");
  Sprite* selectedSe = Sprite::create("settingButton.png");
  selectedSe->setColor(Color3B::GRAY);
  MenuItemSprite* settings = MenuItemSprite::create(normalSe,
                                                    selectedSe,
                                                    CC_CALLBACK_1(MainMenu::goToStartScene, this));
  Point posSe = Point(2 * SCREEN_SIZE.width/3 - 10, SCREEN_SIZE.height/4 + 10);
  settings->setPosition(posSe);
  settings->setScale(0.5f);


  Menu* menu = Menu::create(start, emergency, settings, NULL);
  menu->setPosition(Point::ZERO);
  
  addChild(menu, 1);
  
  return true;
}
Exemplo n.º 7
0
void HelloWorld::showResult() {

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

    //add black cover
    blackLayer = LayerColor::create(Color4B(0, 0, 0, 120));
    blackLayer->setContentSize(visibleSize);
    blackLayer->setPosition(0,0);
    addChild(blackLayer);


    cool = Label::createWithSystemFont("COOL!", "Hobo std", 90);
    cool->setPosition(visibleSize.width/2, visibleSize.height*2/3);
    this->addChild(cool);
    moon->setSpriteFrame("MoonCry.png");

    //Play again button
    Sprite* PlayAgainButton = Sprite::createWithSpriteFrameName("ReplayButton.png");
    MenuItemSprite* PlayButtonItem = MenuItemSprite::create(PlayAgainButton, PlayAgainButton,
                                     CC_CALLBACK_1(HelloWorld::playAgainCallBack, this));
    PlayButtonItem->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2-100, visibleSize.height*3/4)));


    //add all items into setMenu
    playAgainMenu = Menu::create(PlayButtonItem, NULL);
    playAgainMenu->setPosition(Vec2::ZERO);
    this->addChild(playAgainMenu);


}
Exemplo n.º 8
0
bool BowManHightScore::init()
{
	if(!Layer::init()){
		return false;
	}


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

	Sprite* backSprite1 = Sprite::create("img/button/back_btn.png");
	Sprite* backSprite2 = Sprite::create("img/button/back_btn1.png");


	MenuItemSprite* backBtn = MenuItemSprite::create(
		backSprite1 , 
		backSprite2 ,
		CC_CALLBACK_1(BowManHightScore::backCallback , this)
		);

	backBtn->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
	backBtn->setPosition(Vec2(
		10 + backBtn->getContentSize().width/2 ,
		visibleSize.height - 10 - backBtn->getContentSize().height/2
		));

	Menu* menu = Menu::create(
		backBtn,
		NULL
		);

	this->addChild(menu);

	return true;
}
Exemplo n.º 9
0
bool BowManInforGame::init()
{
    if(!Layer::init())
    {
        return false;
    }

    /////////////////////////////////////////////////////////////////
    // BACKGROUNG INFO
    /////////////////////////////////////////////////////////////////

    Sprite* background = Sprite::create("img/background/bg_info.png");
    background->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
    background->setPosition(Vec2(WINSIZE.width/2 , WINSIZE.height/2));
    this->addChild(background);


    /////////////////////////////////////////////////////////////////
    // DIALOG INFO
    /////////////////////////////////////////////////////////////////

    Sprite* infoDialog = Sprite::create("img/dialog/info_dialog.png");
    infoDialog->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
    infoDialog->setPosition(Vec2(WINSIZE.width/2 , WINSIZE.height/2));
    this->addChild(infoDialog);



    /////////////////////////////////////////////////////////////////
    // BACK BUTTON
    /////////////////////////////////////////////////////////////////

    Sprite* backSprite1 = Sprite::create("img/button/back_btn.png");
    Sprite* backSprite2 = Sprite::create("img/button/back_btn1.png");

    MenuItemSprite* backBtn = MenuItemSprite::create(
                                  backSprite1,
                                  backSprite2,
                                  CC_CALLBACK_1(BowManInforGame::backCallback, this)
                              );

    backBtn->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
    backBtn->setPosition(Vec2(
                             10 + backBtn->getContentSize().width / 2,
                             WINSIZE.height - 10 - backBtn->getContentSize().height / 2
                         ));

    Menu* menu = Menu::create(backBtn,NULL);

    this->addChild(menu);

    return true;
}
Exemplo n.º 10
0
// on "init" you need to initialize your instance
bool MusicLayer_2::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    log("MusicLayer_2 init");
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    
    Sprite *bg = Sprite::create("background.png");
    
    // position the label on the center of the screen
    bg->setPosition(Vec2(origin.x + visibleSize.width/2,
                         origin.y + visibleSize.height /2));
    this->addChild(bg);
    
    //开始精灵
    Sprite *startSpriteNormal = Sprite::create("start-up.png");
    Sprite *startSpriteSelected = Sprite::create("start-down.png");
    
    MenuItemSprite *startMenuItem = MenuItemSprite::create(startSpriteNormal,
                                                           startSpriteSelected,
                                                           CC_CALLBACK_1(MusicLayer_2::menuItemStartCallback, this));
    startMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(700, 170)));
    
    // 设置图片菜单
    MenuItemImage *settingMenuItem = MenuItemImage::create(
                                                           "setting-up.png",
                                                           "setting-down.png",
                                                           CC_CALLBACK_1(MusicLayer_2::menuItemSettingCallback, this));
    settingMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(480, 400)));
    
    // 帮助图片菜单
    MenuItemImage *helpMenuItem = MenuItemImage::create(
                                                        "help-up.png",
                                                        "help-down.png",
                                                        CC_CALLBACK_1(MusicLayer_2::menuItemHelpCallback, this));
    helpMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(860, 480)));
    
    Menu* mu = Menu::create(startMenuItem, settingMenuItem, helpMenuItem, NULL);
    mu->setPosition(Vec2::ZERO);
    this->addChild(mu);
    
    return true;
}
Exemplo n.º 11
0
void LayerGameMain::updateBigBoomCount(int bigBoomCount)
{
	String strBoomCount;
	Sprite * norBoom = Sprite::createWithSpriteFrameName("bomb.png");
	Sprite * selBoom = Sprite::createWithSpriteFrameName("bomb.png");
	if (bigBoomCount < 0)
	{
		return;
	}
	else if (bigBoomCount == 0)
	{
		if (this->getChildByTag(TAG_BIGBOOM))
		{
			this->removeChildByTag(TAG_BIGBOOM,true);
		}
		if (this->getChildByTag(TAG_BIGBOOMCOUNT))
		{
			this->removeChildByTag(TAG_BIGBOOMCOUNT,true);
		}
	}
	else if (bigBoomCount == 1)
	{
		if ( !(this->getChildByTag(TAG_BIGBOOM)) )
		{
			MenuItemSprite * boomItem = MenuItemSprite::create(norBoom,
															   selBoom,
															   CC_CALLBACK_1(LayerGameMain::boomMenuCallback,this));
			boomItem->setPosition(norBoom->getContentSize().width/2,norBoom->getContentSize().height/2);
			Menu * boomMenu = Menu::create(boomItem,nullptr);
			boomMenu->setPosition(Point::ZERO);
			this->addChild(boomMenu,0,TAG_BIGBOOM);
		}
		if ( !(this->getChildByTag(TAG_BIGBOOMCOUNT)) )
		{
			strBoomCount.initWithFormat("X %d",bigBoomCount);
			LabelBMFont * labelBoomCount = LabelBMFont::create(strBoomCount.getCString(),"font/font.fnt");
			labelBoomCount->setAnchorPoint(Point::ANCHOR_MIDDLE_LEFT);
			labelBoomCount->setPosition(Point(norBoom->getContentSize().width,norBoom->getContentSize().height - 30));
			this->addChild(labelBoomCount,0,TAG_BIGBOOMCOUNT);
		}
	}
	else if (bigBoomCount > 1 && bigBoomCount < MAX_BIGBOOM_COUNT)
	{
		strBoomCount.initWithFormat("X %d",bigBoomCount);
		LabelBMFont * labelCount = (LabelBMFont *)this->getChildByTag(TAG_BIGBOOMCOUNT);
		labelCount->setString(strBoomCount.getCString());
	}
}
Exemplo n.º 12
0
bool DialogLayer::addButton(const char* title, Sprite* normalImage, Sprite* selectedImage, Sprite* disableImage, const ccMenuCallback& callback, int tag/* =0 */)
{
	Size winSize = Director::getInstance()->getWinSize();
	Point pCenter = Point(winSize.width / 2, winSize.height / 2);

	// 创建图片菜单按钮
	MenuItemSprite* menuImage = MenuItemSprite::create(normalImage, selectedImage, disableImage, callback);
	menuImage->setTag(tag);
	menuImage->setPosition(pCenter);

	// 添加文字说明并设置位置
	Size imenu = menuImage->getContentSize();
	LabelTTF* ttf = CCLabelTTF::create(title, "Arial", 25);
	ttf->setColor(Color3B(0, 0, 0));
	ttf->setPosition(imenu.width / 2, imenu.height / 2);
	menuImage->addChild(ttf);

	getMenuButton()->addChild(menuImage);
	return true;
}
Exemplo n.º 13
0
void LevelScene::createLayersContent() {
    Size winSize = Director::getInstance()->getWinSize();
    
    // create background
    CSprite* backgroundFace = new CSprite();
    backgroundFace->initWithFile(FRAME_BG);
    backgroundFace->setPosition(winSize.width / 2, winSize.height / 2);
    this->backgroundLayer->addChild(backgroundFace);
    
    // create level title
    CSprite* chapterTitle = new CSprite();
    chapterTitle->initWithSpriteFrameName(FRAME_LEVEL_TITLE);
    chapterTitle->setPosition(winSize.width / 2, winSize.height - chapterTitle->getContentSize().height / 2 - 20);
    this->mainLayer->addChild(chapterTitle);
    
    // create menu
    Menu* mainMenu = Menu::create();
    mainMenu->setPosition(Point::ZERO);
    this->mainLayer->addChild(mainMenu);
    
    // create back button
    MenuItemSprite* backButton = CNodeUtil::createButton(FRAME_BACK_BUTTON, FRAME_BACK_BUTTON_SELECTED);
    backButton->setCallback(CC_CALLBACK_1(LevelScene::backButtonClick, this));
    backButton->setPosition(winSize.width / 2, 20 + backButton->getContentSize().height / 2);
    mainMenu->addChild(backButton);
    
    // create level layer
    this->levelLayer = Layer::create();
    int levelTotal = CONFIG_LEVELS_PER_CHAPTER;
    int totalPageSize = ((levelTotal - 1) / CONF_TOTAL_LEVEL_SIZE_PER_PAGE) + 1;
    int levelPerPage = CONF_TOTAL_LEVEL_SIZE_PER_PAGE;
    int levelPerRow = levelPerPage / CONF_TOTAL_LEVEL_ROW;
    int previousLevelTotal = this->getTotalPreviousLevel(this->currentChapter);
    
    this->levelLayer->setContentSize(Size(winSize.width * totalPageSize, winSize.height / 1.5));
    this->levelLayer->setPosition(0, winSize.height / 2 - this->levelLayer->getContentSize().height / 2);
    this->levelLayerOffset = this->levelLayer->getPosition();
    this->mainLayer->addChild(this->levelLayer);
    
    for (int i = 0; i < levelTotal; i++) {
        int level = i + 1;
        
        CSprite* levelFace = new CSprite();
        int realLevel = level + previousLevelTotal;
//        if (gameModel->checkMapLock(realLevel)) {
            levelFace->initWithSpriteFrameName(FRAME_BOX_LEVEL);
            levelFace->setTag(realLevel);
            {
                char levelChar[10];
                sprintf(levelChar, "%d", level);
                Label* levelLabel = CNodeUtil::createLabelTTF(levelChar, 12);
                levelLabel->setPosition(levelFace->getContentSize().width / 2, levelFace->getContentSize().height / 2);
                levelFace->addChild(levelLabel);
            }
//        } else {
//            levelFace->initWithSpriteFrameName(ANI_BOX_MAP_LOCK);
//            levelFace->setTag(-1);
//        }
        this->levelLayer->addChild(levelFace);
        
        int page = i / levelPerPage;
        int row = ((level - (page * levelPerPage)) - 1) / levelPerRow;
        int column = i % levelPerRow;
        Point pagePosition = Point(winSize.width * page, 0);
        float totalWidth = levelFace->getContentSize().width * levelPerRow + (10 * (levelPerRow + 1));
        float totalHeight = levelFace->getContentSize().height * CONF_TOTAL_LEVEL_ROW + (10 * (CONF_TOTAL_LEVEL_ROW  + 1));
        float initX = (winSize.width - totalWidth) / 2;
        float initY = this->levelLayer->getContentSize().height - ((this->levelLayer->getContentSize().height - totalHeight) / 2);
        float levelPositionX = initX + (10 * (column + 1)) + (levelFace->getContentSize().width / 2 * (column + 1)) + (levelFace->getContentSize().width / 2 * column);
        float levelPositionY = initY - (10 * (row + 1)) - (levelFace->getContentSize().height / 2 * (row + 1)) - (levelFace->getContentSize().height / 2 * row);
        levelFace->setPosition(Point(levelPositionX, levelPositionY) + pagePosition);
    }
}
Exemplo n.º 14
0
void ChapterScene::createLayersContent() {
    GameModel* gameModel = GameModel::getInstance();
    Size displayResolutionSize = gameModel->getDisplayResolutionSize();
    
    Face* backgroundFace = new Face();
    backgroundFace->initWithFile(ANI_BACKGROUND);
    backgroundFace->setScale(CONF_FAKE_1);
    backgroundFace->setPosition(displayResolutionSize.width / 2, displayResolutionSize.height / 2);
    this->backgroundLayer->addChild(backgroundFace);
    
    Face* chapterTitle = new Face();
    chapterTitle->initWithSpriteFrameName(ANI_CHAPTER_TITLE);
    chapterTitle->setPosition(displayResolutionSize.width / 2, displayResolutionSize.height - chapterTitle->getContentSize().height / 2 - 20);
    this->mainLayer->addChild(chapterTitle);
    
    UGMenu* mainMenu = UGMenu::create();
    mainMenu->setPosition(Point::ZERO);
    this->mainLayer->addChild(mainMenu);
    
    MenuItemSprite* backButton = Utils::createButton((char*) TXT_BACK, 16, ANI_BUTTON, ANI_BUTTON);
    backButton->setCallback(CC_CALLBACK_1(ChapterScene::backButtonClick, this));
    backButton->setPosition(gameModel->getDisplayResolutionSize().width / 2, 20 + backButton->getContentSize().height / 2);
    mainMenu->addChild(backButton);
    this->nodes->setObject(backButton, NODE_BUTTON_BACK);
    
    // create chapters
    this->chapterLayer = UGLayerColor::create();
    float totalChapterSize = gameModel->getMapData()->getLevelSize();
    float distancePerChapter = CONF_DISTANCE_PER_CHAPTER;
    float totalChapterWidth = (totalChapterSize - 1) * distancePerChapter;
    
    Face* chapterTemp = new Face();
    chapterTemp->initWithSpriteFrameName(ANI_BOX_CHAPTER);
    this->chapterTempSize = chapterTemp->getContentSize();
    
    this->chapterLayer->setContentSize(Size(totalChapterWidth + this->chapterTempSize.width, displayResolutionSize.height / 2));
    this->chapterLayer->setPosition(displayResolutionSize.width / 2 - this->chapterTempSize.width / 2, displayResolutionSize.height / 2 - this->chapterLayer->getContentSize().height / 2);
    this->chapterLayerOffset = this->chapterLayer->getPosition();
    this->mainLayer->addChild(this->chapterLayer);
    
    float posX = this->chapterTempSize.width / 2;
    float posY = this->chapterLayer->getContentSize().height / 2;
    for (int i = 0; i < totalChapterSize; i++) {
        Face* levelBox = new Face();
        if (!gameModel->checkLevelLock(i + 1)) {
            levelBox->initWithSpriteFrameName(ANI_BOX_CHAPTER);
            levelBox->setTag(i + 1);
            {
                int chapter = gameModel->getMapData()->getChapter(i + 1);
                int chapterLevel = gameModel->getMapData()->getChapterLevel(i + 1);
                char mapPath[200];
                sprintf(mapPath, DOC_BG_MAP, chapter, chapterLevel);
                
                SpriteFrameCache* sfc = SpriteFrameCache::getInstance();
                sfc->addSpriteFramesWithFile(mapPath);
                char bg1Path[200];
                sprintf(bg1Path, ANI_MAP, chapter, chapterLevel, 1);

                Face* chapterThumb = new Face();
                chapterThumb->initWithSpriteFrameName(bg1Path);
                chapterThumb->setPosition(levelBox->getContentSize().width / 2, levelBox->getContentSize().height / 2 - 10);
                chapterThumb->setTextureRect(Rect(0, 0, 160, 115));
                levelBox->addChild(chapterThumb);
                
                string levelName = gameModel->getMapData()->getLevelName(i + 1);
                char levelNameChar[200];
                sprintf(levelNameChar, "%s", levelName.data());
                Label* levelNameLabel = Label::createWithBMFont(FONT_GAME_SMALL, levelNameChar);
                levelNameLabel->setPosition(chapterThumb->getPosition() + Point(0, chapterThumb->getContentSize().height / 2 + 12));
                levelBox->addChild(levelNameLabel);
            }
        } else {
            levelBox->setTag(-1);
            levelBox->initWithSpriteFrameName(ANI_BOX_CHAPTER_LOCK);
        }
        
        levelBox->setPosition(posX, posY);
        posX = posX + distancePerChapter;
        this->chapterLayer->addChild(levelBox);
    }
    
    // add parent button for share layer
    this->shareLayer->getParentButtons()->pushBack((MenuItemSprite*) this->nodes->objectForKey(NODE_BUTTON_BACK));
}
Exemplo n.º 15
0
bool ChoseLevel::init(PhysicsWorld* world){
	if (!Layer::init()){
		return false;
	}
	m_world = world;
	visibleSize = Director::getInstance()->getVisibleSize();
	origin = Director::getInstance()->getVisibleOrigin();

	if (!database->getBoolForKey("isExit")){
		database->setBoolForKey("isExit", true);
		database->setIntegerForKey("nowLevel",0);
		database->setIntegerForKey("nowStage",0);
		level = 0;
		stage = 0;
	}
	else{
		level = database->getIntegerForKey("nowLevel");
		stage = database->getIntegerForKey("nowStage");
	}

	Sprite* bgImage = Sprite::create("images/bg.png");
	bgImage->setPosition(visibleSize.width/2, visibleSize.height/2);
	this->addChild(bgImage,1);

	auto homeItem = MenuItemImage::create("images/home.png","images/home.png",CC_CALLBACK_0(ChoseLevel::backHome,this));
	auto homeMenu = Menu::createWithItem(homeItem);
	this->addChild(homeMenu,5);
	homeMenu->setPosition(visibleSize.width-homeItem->getContentSize().width/2, visibleSize.height-homeItem->getContentSize().height/2);

	//auto levelOne = MenuItemLabel::create(Label::createWithTTF("Zero","fonts/arial.ttf",40),
	//													CC_CALLBACK_0(ChoseLevel::selectLevel,this,0));
	//levelOne->setPosition(-2*levelOne->getContentSize().width,0);
	//auto levelTwo = MenuItemLabel::create(Label::createWithTTF("One", "fonts/arial.ttf", 40),
	//													CC_CALLBACK_0(ChoseLevel::selectLevel, this, 1));
	//levelTwo->setPosition(0,0);
	//auto levelThree = MenuItemLabel::create(Label::createWithTTF("Two", "fonts/arial.ttf", 40),
	//													CC_CALLBACK_0(ChoseLevel::selectLevel, this, 2));
	//levelThree->setPosition(2 * levelThree->getContentSize().width, 0);
	//auto choseMenu = Menu::create(levelOne,levelTwo,levelThree,NULL);

	//choseMenu->setPosition(visibleSize.width/2,visibleSize.height/2);
	//this->addChild(choseMenu,2);

	auto menuBg = Sprite::create("images/scroll.png");
	menuBg->setPosition(visibleSize.width/2, visibleSize.height/2);
	this->addChild(menuBg,2);

	Vector<MenuItem*> levels;
	MenuItemSprite* levelItem;
	/*
	for (int i = 0; i < unlock; i++){
		auto normalSprite = Sprite::create("images/levelImage.png");
		auto selectedSprite = Sprite::create("images/levelImage.png");
		selectedSprite->setOpacity(200);
		levelItem = MenuItemSprite::create(normalSprite, selectedSprite, CC_CALLBACK_0(ChoseLevel::selectLevel,this,i));
		levelItem->setPosition(i*levelItem->getContentSize().width*3/2,0);
		
		auto levelStr = String::createWithFormat("%d",i+1);
		auto levelLabel = Label::createWithTTF(levelStr->getCString(),"fonts/arial.ttf",40);
		levelLabel->setPosition(levelItem->getContentSize().width/2, levelItem->getContentSize().height/2);
		levelItem->addChild(levelLabel);
		levels.pushBack(levelItem);
	}*/
	
	int count = 0;

	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 2; j++){
			auto normalSprite = Sprite::create("images/levelImage.png");
			auto selectedSprite = Sprite::create("images/levelImage.png");
			selectedSprite->setOpacity(200);
			levelItem = MenuItemSprite::create(normalSprite, selectedSprite);
			levelItem->setPosition(i*levelItem->getContentSize().width*3/2, -j*levelItem->getContentSize().height*3/2);

			if (count <= level){
				levelItem->setCallback(CC_CALLBACK_0(ChoseLevel::selectLevel, this, count));
				auto levelStr = String::createWithFormat("%d", count + 1);
				auto levelLabel = Label::createWithTTF(levelStr->getCString(), "fonts/arial.ttf", 40);
				levelLabel->setPosition(levelItem->getContentSize().width / 2, levelItem->getContentSize().height / 2);
				levelItem->addChild(levelLabel);
				count++;
			}
			else{
				auto lock = Sprite::create("images/locked.png");
				lock->setPosition(levelItem->getContentSize().width / 2, levelItem->getContentSize().height / 2);
				levelItem->addChild(lock);
			}

			levels.pushBack(levelItem);
		}
	}

	auto levelMenu = Menu::createWithArray(levels);
	levelMenu->setPosition(visibleSize.width / 2 - levelItem->getContentSize().width * 3 / 2, visibleSize.height / 2 + levelItem->getContentSize().width/10*7);
	this->addChild(levelMenu,3);

	return true;
}
Exemplo n.º 16
0
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }

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

    //add image texture to cache
    SpriteFrameCache* frameCache = SpriteFrameCache::getInstance();
    frameCache->addSpriteFramesWithFile("WormHeroSaga.plist");

    //create background
    auto background = Sprite::createWithSpriteFrameName("Background.png");
    background->setPosition(visibleSize/2);
    this->addChild(background);

    moon = Sprite::createWithSpriteFrameName("MoonLaugh.png");
    moon->setPosition(Director::getInstance()->convertToGL(Vec2(490,234)));
    this->addChild(moon);


    //Start button
    Sprite* startButtonItem_normal = Sprite::createWithSpriteFrameName("StartButton_normal.png");
    Sprite* startButtonItem_onClick = Sprite::createWithSpriteFrameName("StartButton_onClick.png");

    MenuItemSprite* startButton = MenuItemSprite::create(startButtonItem_normal,
                                  startButtonItem_onClick,
                                  CC_CALLBACK_1(HelloWorld::startButtonCallBack, this));

    startButton->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2,730)));

    startMenu = Menu::create(startButton, NULL);

    startMenu->setPosition(Vec2::ZERO);
    startMenu->setTag(START_TAG);
    this->addChild(startMenu);



    //add stop button with setting menus
    Sprite* stopButton = Sprite::createWithSpriteFrameName("StopButton.png");
    MenuItemSprite* stopButtonItem = MenuItemSprite::create(stopButton, stopButton,
                                     CC_CALLBACK_1(HelloWorld::stopButtonCallBack, this));
    stopButtonItem->setPosition(Director::getInstance()->convertToGL(Vec2(71,38)));
    stopMenu = Menu::create(stopButtonItem, NULL);
    stopMenu->setPosition(Vec2::ZERO);
    stopMenu->setTag(STOP_TAG);
    stopMenu->setVisible(false);

    this->addChild(stopMenu);


    //below list set menu
    //music setting in setting menu
    Sprite* musicOn = Sprite::createWithSpriteFrameName("MusicOn.png");
    Sprite* musicOff = Sprite::createWithSpriteFrameName("MusicOff.png");
    auto musicOnSprite  = MenuItemSprite::create(musicOn,musicOn);
    auto musicOffSprite  = MenuItemSprite::create(musicOff,musicOff);
    auto musicToggleMenuItem = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::MusicOnCallBack, this), musicOnSprite, musicOffSprite, NULL);

    musicToggleMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2-10, 550)));




    //effect setting in setting menu
    Sprite* effectOn = Sprite::createWithSpriteFrameName("EffectOn.png");
    Sprite* effectOff = Sprite::createWithSpriteFrameName("EffectOff.png");
    auto effectOnSprite  = MenuItemSprite::create(effectOn,effectOn);
    auto effectOffSprite  = MenuItemSprite::create(effectOff,effectOff);
    auto effectToggleMenuItem = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::MusicOnCallBack, this), effectOnSprite, effectOffSprite, NULL);
    effectToggleMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2, 730)));


    //play setting in setting menu
    Sprite* PlayButton = Sprite::createWithSpriteFrameName("PlayButton.png");
    MenuItemSprite* PlayButtonItem = MenuItemSprite::create(PlayButton, PlayButton,
                                     CC_CALLBACK_1(HelloWorld::playCallBack, this));
    PlayButtonItem->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2, 910)));


    //add all items into setMenu
    setMenu = Menu::create(musicToggleMenuItem, effectToggleMenuItem, PlayButtonItem, NULL);
    setMenu->setPosition(Vec2::ZERO);
    this->addChild(setMenu);

    setMenu->setVisible(false);



    return true;
}
Exemplo n.º 17
0
//================================================================================
// シーン初期化
//================================================================================
bool PauseScene::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }

    Size visibleSize = Director::getInstance()->getVisibleSize() / 2 + SCREEN_CENTER;
    Vec2 origin = Director::getInstance()->getVisibleSize() / 2 - SCREEN_CENTER;

    //終了ボタン生成
    auto closeItem = MenuItemImage::create(
                                           "CloseNormal.png",
                                           "CloseSelected.png",
                                           CC_CALLBACK_1(PauseScene::menuCloseCallback, this));

    closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                                origin.y + closeItem->getContentSize().height/2));

    // create menu, it's an autorelease object
    auto menu = Menu::create(closeItem, NULL);
    menu->setPosition(Vec2::ZERO);
    this->addChild(menu, 1);

    // 更新処理の追加
    this->scheduleUpdate();
    
    // タッチ機能の有効化
    m_pTouchEventOneByOne =  EventListenerTouchOneByOne::create();
    m_pTouchEventOneByOne->setSwallowTouches(true);
    m_pTouchEventOneByOne->onTouchBegan = CC_CALLBACK_2(PauseScene::onTouchBegin,this);
    m_pTouchEventOneByOne->onTouchMoved = CC_CALLBACK_2(PauseScene::onTouchMoved,this);
    m_pTouchEventOneByOne->onTouchCancelled = CC_CALLBACK_2(PauseScene::onTouchCancelled, this);
    m_pTouchEventOneByOne->onTouchEnded = CC_CALLBACK_2(PauseScene::onTouchEnded, this);
    this->getEventDispatcher()->addEventListenerWithFixedPriority(m_pTouchEventOneByOne, 2);

    // 薄暗いスプライトを作成
    m_pMaskSprite = Sprite::create();
    m_pMaskSprite->setTextureRect(Rect(0,0,visibleSize.width,visibleSize.height));
    m_pMaskSprite->setColor(Color3B::BLACK);
    m_pMaskSprite->setOpacity(125);
    m_pMaskSprite->setPosition(Vec2(visibleSize.width / 2,visibleSize.height / 2));
    this->addChild(m_pMaskSprite);

    // メニューバースプライトの作成
    m_pMenuBarSpriteBase = Sprite::create(TEX_MENU_BUTTON);
    Sprite* pMenuBarSpriteSelected = Sprite::create(TEX_MENU_BUTTON);
    pMenuBarSpriteSelected->setColor(Color3B(200,200,200));
    MenuItemSprite* pMenuBarMenuItemSprite = MenuItemSprite::create(m_pMenuBarSpriteBase, pMenuBarSpriteSelected,
                                                                     CC_CALLBACK_0(PauseScene::returnGameCallback, this));
    pMenuBarMenuItemSprite->setPosition(Vec2(565, visibleSize.height - 32));

    // ゲーム再開メニュースプライトの作成
    m_pReturnGameSpriteBase = Sprite::create(TEX_BUTTON_RETURN_GAME);
    Sprite* pReturnGameSpriteSelected = Sprite::create(TEX_BUTTON_RETURN_GAME);
    pReturnGameSpriteSelected->setColor(Color3B(200,200,200));
    MenuItemSprite* pReturnGameMenuItemSprite = MenuItemSprite::create(m_pReturnGameSpriteBase, pReturnGameSpriteSelected,
                                                                       CC_CALLBACK_0(PauseScene::returnGameCallback, this));
    pReturnGameMenuItemSprite->setPosition(Vec2(visibleSize.width /2,origin.y + 700));

    // ゲームやり直しメニュースプライトの作成
    m_pRetryGameSpriteBase = Sprite::create(TEX_RESULT_RETRY_BUTTON);
    Sprite* pRetryGameSpriteSelected = Sprite::create(TEX_RESULT_RETRY_BUTTON);
    pRetryGameSpriteSelected->setColor(Color3B(200,200,200));
    MenuItemSprite* pRetryGameMenuItemSprite = MenuItemSprite::create(m_pRetryGameSpriteBase, pRetryGameSpriteSelected,
                                                                      CC_CALLBACK_0(PauseScene::retryGameCallback, this));
    pRetryGameMenuItemSprite->setPosition(Vec2(visibleSize.width / 2,origin.y + 600));

    // タイトルリターンメニュースプライトの作成
    m_pReturnTitleSpriteBase = Sprite::create(TEX_RESULT_TITLE_BUTTON);
    Sprite* pReturnTitleSpriteSelected = Sprite::create(TEX_RESULT_TITLE_BUTTON);
    pReturnTitleSpriteSelected->setColor(Color3B(200,200,200));
    MenuItemSprite* pReturnTitleMenuItemSptire = MenuItemSprite::create(m_pReturnTitleSpriteBase, pReturnTitleSpriteSelected,
                                                                        CC_CALLBACK_0(PauseScene::returnTitleCallback, this));
    pReturnTitleMenuItemSptire->setPosition(Vec2(visibleSize.width / 2,origin.y + 500));

    // メニューの一括登録
    Menu* pPauseSceneMenu = Menu::create(pMenuBarMenuItemSprite,pReturnGameMenuItemSprite,pReturnTitleMenuItemSptire,pRetryGameMenuItemSprite, NULL);
    pPauseSceneMenu->setPosition(Vec2::ZERO);
    this->addChild(pPauseSceneMenu);

    // コンフィグスプライト生成
    m_pConfigSprite = Sprite::create();
    m_pConfigSprite->setTextureRect(Rect(0,0,100,100));
    m_pConfigSprite->setColor(Color3B::YELLOW);
    m_pConfigSprite->setPosition(Vec2(400,200));
    //this->addChild(m_pConfigSprite);

    return true;
}
Exemplo n.º 18
0
bool PopupLayer::initSuspendLayer(int gameType) {
    if(!LayerColor::initWithColor(Color4B(255, 255, 255, 120))) {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    //set menu layer properties
    switch (userTheme) {
        case PINK:
            menuLayer = LayerColor::create(Color4B(234, 97, 137, 255));
            break;
        case GRAY:
            menuLayer = LayerColor::create(Color4B(194, 194, 194, 255));
            break;
        case BLUE:
            menuLayer = LayerColor::create(Color4B(20, 142, 204, 255));
            break;
        case JELLY:
            menuLayer = LayerColor::create(Color4B(90, 191, 188, 255));
            break;
        case DARK:
            menuLayer = LayerColor::create(Color4B(50, 50, 50, 255));
            break;
        default:
            menuLayer = LayerColor::create(Color4B(20, 142, 204, 255));
            break;
    }
    menuLayer->setContentSize(Size(350, 200));
    menuLayer->ignoreAnchorPointForPosition(false);
    menuLayer->setAnchorPoint(Point(0.5, 0.5));
    menuLayer->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
    
    //add label "suspend"
    auto *suspendLabel = Label::create("Suspend", "Futura.ttf", 30);
    suspendLabel->setPosition(Point(menuLayer->getContentSize().width / 2, menuLayer->getContentSize().height / 2 + 50));
    
    //add menus icons
    Sprite *homeButton = Sprite::create("home.png");
    Sprite *activeHomeButton = Sprite::create("home.png");
    activeHomeButton->setPositionY(5);
    auto homeMenuItem = MenuItemSprite::create(homeButton, activeHomeButton, NULL, CC_CALLBACK_1(PopupLayer::homeCallBack, this));
    homeMenuItem->setPosition(menuLayer->getContentSize().width / 2 - 100, menuLayer->getContentSize().height / 2 - 30);
    auto homeMenu = Menu::create(homeMenuItem, NULL);
    homeMenu->setPosition(Point(0, 0));
    Sprite *resumeButton = Sprite::create("start.png");
    Sprite *activeResumeButton = Sprite::create("start.png");
    activeResumeButton->setPositionY(5);
    MenuItemSprite *resumeMenuItem;
    if (gameType == 1) {
        resumeMenuItem = MenuItemSprite::create(resumeButton, activeResumeButton, NULL, CC_CALLBACK_1(PopupLayer::resumeNormalMode, this));
    }else {
        resumeMenuItem = MenuItemSprite::create(resumeButton, activeResumeButton, NULL, CC_CALLBACK_1(PopupLayer::resumeGetTheOne, this));
    }
    resumeMenuItem->setPosition(menuLayer->getContentSize().width / 2, menuLayer->getContentSize().height / 2 - 30);
    auto resumeMenu = Menu::create(resumeMenuItem, NULL);
    resumeMenu->setPosition(Point(0, 0));
    Sprite *restartButton = Sprite::create("restart.png");
    Sprite *activeRestartButton = Sprite::create("restart.png");
    activeRestartButton->setPositionY(5);
    MenuItemSprite *restartMenuItem;
    if (gameType == 1) {
        restartMenuItem = MenuItemSprite::create(restartButton, activeRestartButton, NULL, CC_CALLBACK_1(PopupLayer::restartNormalMode, this));
    }else{
        restartMenuItem = MenuItemSprite::create(restartButton, activeRestartButton, NULL, CC_CALLBACK_1(PopupLayer::restartGetTheOne, this));
    }
    restartMenuItem->setPosition(menuLayer->getContentSize().width / 2 + 100, menuLayer->getContentSize().height / 2 - 30);
    auto restartMenu = Menu::create(restartMenuItem, NULL);
    restartMenu->setPosition(Point(0, 0));
    
    //add shadow for menuLayer
    auto *shadowLayer = LayerColor::create(Color4B(100, 100, 100, 100));
    shadowLayer->setContentSize(Size(350, 200));
    shadowLayer->ignoreAnchorPointForPosition(false);
    shadowLayer->setAnchorPoint(Point(0.5, 0.5));
    shadowLayer->setPosition(Point(visibleSize.width / 2 + 8, visibleSize.height / 2 - 8));
    
    menuLayer->addChild(suspendLabel);
    menuLayer->addChild(homeMenu);
    menuLayer->addChild(resumeMenu);
    menuLayer->addChild(restartMenu);
    
    this->addChild(shadowLayer);
    this->addChild(menuLayer);
    
    //swallow touch
    auto callback = [](Touch * ,Event *) {
        return true;
    };
    
    //add event listener
    auto listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = callback;
    listener->setSwallowTouches(true);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);
    
    return true;
}
Exemplo n.º 19
0
void PlayLayer::initToolLayer()
{
	auto size = Director::getInstance()->getWinSize();
	//add by  
	auto zoom = size.height / 864;
	toolLayer = Layer::create();
	addChild(toolLayer);

	spritetool = Sprite::createWithSpriteFrameName("status.png");
	//auto spritetool = Sprite::create("status.png");

	//add by  
	auto statussize=spritetool->getContentSize();
	//auto patchsize=(size.width - statussize.width)/2;

	spritetool->setAnchorPoint(Point(0.5f, 1));
	spritetool->setPosition (Point(size.width / 2, size.height));
	toolLayer->addChild(spritetool);

	//金币像素 54;波数370,分数 484;怪数 684,分数 790;生命1060,add by  
	money = instance->getMoney();
	moneyLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " ");
	// moneyLabel->setPosition(Point(spritetool->getContentSize().width / 8, spritetool->getContentSize().height / 2));
	//由于该图片被整体所放过,所有要相应进行像素处理。
	moneyLabel->setPosition(Point( 54* zoom, spritetool->getContentSize().height / 2));
	moneyLabel->setAnchorPoint(Point(0, 0.5f));
	//modify by  
	char countBuf3[16] = "";
	sprintf(countBuf3, "%d", money);
	auto moneyText = countBuf3;
	//
	//auto moneyText = std::to_string(money);
	moneyLabel->setString(moneyText);
	spritetool->addChild(moneyLabel);


	//波数的分数
	//int groupTotal = instance->getGroupNum();	
	int temp =1;
	char countBuf5[16] = "";
	sprintf(countBuf5, "%d",temp);
	groupcurrLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " ");
	auto groupInfoText2 = countBuf5;
	groupcurrLabel->setPosition(Point(370 * zoom , spritetool->getContentSize().height / 2 ));
	groupcurrLabel->setAnchorPoint(Point(0.0f , 0.5f));
	groupcurrLabel->setString(groupInfoText2);
	spritetool->addChild(groupcurrLabel);
	//总共波数
	int groupTotal = instance->getGroupNum();
	groupLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " ");
	groupLabel->setPosition(Point(484 * zoom , spritetool->getContentSize().height / 2 ));
	groupLabel->setAnchorPoint(Point(0.0f , 0.5f));
	char countBuf4[16] = "";
	sprintf(countBuf4, "%d", groupTotal);
	auto groupInfoText = countBuf4;
	groupLabel->setString(groupInfoText);
	spritetool->addChild(groupLabel);








	//by  
	//当前波的怪物
	char countBuf6[16] = "";
	sprintf(countBuf6, "%d", temp);
	auto groupTotalText3 = countBuf6;	
	numcurrLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " ");
	numcurrLabel->setPosition(Point( 684 * zoom , spritetool->getContentSize().height / 2 ));
	numcurrLabel->setAnchorPoint(Point(0.0f , 0.5f));
	numcurrLabel->setString(groupTotalText3);
	spritetool->addChild(numcurrLabel);

	//当前波的怪物 分数
	char countBuf7[16] = "";
	auto en= instance->getEnemyNum();	
	sprintf(countBuf7, "%d", en);
	auto groupTotalText4 = countBuf7;	
	numLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " ");
	numLabel->setPosition(Point( 790 * zoom , spritetool->getContentSize().height / 2 ));
	numLabel->setAnchorPoint(Point(0.0f , 0.5f));
	numLabel->setString(groupTotalText4);
	spritetool->addChild(numLabel);

	//当前生命值的 分数
	char countBuf8[16] = "";
	sprintf(countBuf8, "100");
	auto groupTotalText5 = countBuf8;	
	hpLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " ");
	hpLabel->setPosition(Point( 1060 * zoom , spritetool->getContentSize().height / 2 ));
	hpLabel->setAnchorPoint(Point(0.0f , 0.5f));
	hpLabel->setString(groupTotalText5);
	spritetool->addChild(hpLabel);




	// back
	//add by  
	Sprite *backItem1 = CCSprite::createWithSpriteFrameName("btn_back.png");
	Sprite *backItem2 = CCSprite::createWithSpriteFrameName("btn_back_press.png");
	MenuItemSprite *pPauseItem = MenuItemSprite::create(backItem1, backItem2, CC_CALLBACK_1(PlayLayer::menuBackCallback, this));
	pPauseItem->setPosition(Point(spritetool->getContentSize().width + backItem1->getContentSize().width / 2, spritetool->getContentSize().height / 2));

	pPauseItem->setAnchorPoint(Point(0, 0.5f));
	Menu* pMenu = Menu::create(pPauseItem, NULL);
	pMenu->setPosition(Point::ZERO);
	spritetool->addChild(pMenu);
}
Exemplo n.º 20
0
bool HomeLayer::init(){
    bool isDay = UserDefault::getInstance()->getBoolForKey(DayTime, true);
    string file = "modify/day_bg.png";
    if (isDay == false) {
        file = string("modify/night_bg.png");
    }
    if (GameLayerBase::initWithBgFileName(file.c_str())) {
        
        Sprite* centerTitle = Sprite::create("modify/title.png");
        centerTitle->setAnchorPoint(Vec2(0.5, 1.0));
        centerTitle->setPosition(STVisibleRect::getCenterOfScene().x, STVisibleRect::getPointOfSceneLeftUp().y - 60);
        addChild(centerTitle, 1);
  
//
//        TableViewTest* pLayer = TableViewTest::create();
//        this->addChild(pLayer, 2);
        MenuItemSprite* lightBtn = CocosHelper::menuItemSprite("modify/night.png");
        MenuItemSprite* settingBtn = CocosHelper::menuItemSprite("modify/setting.png");
        MenuItemSprite* vedioBtn = CocosHelper::menuItemSprite("modify/video.png");
        string soundFile = "modify/sound1.png";
        if (!SoundPlayer::getInstance()->isMusicOpen()) {
            soundFile = "modify/sound2.png";
        }
        MenuItemSprite* soundBtn = CocosHelper::menuItemSprite(soundFile.c_str());
        MenuItemSprite* shareBtn = CocosHelper::menuItemSprite("modify/share.png");

        lightBtn->setTag(kLightBtnTag);
        settingBtn->setTag(kSettingBtnTag);
        vedioBtn->setTag(kVedioBtnTag);
        soundBtn->setTag(kSoundBtnTag);
        shareBtn->setTag(kShareBtnTag);
        
        lightBtn->setAnchorPoint(Vec2(0, 0));
        settingBtn->setAnchorPoint(Vec2(1.0, 0));
        vedioBtn->setAnchorPoint(Vec2(0.5, 0));
        soundBtn->setAnchorPoint(Vec2(1.0, 0));
        shareBtn->setAnchorPoint(Vec2(1.0, 0));
        
        lightBtn->setPosition(Vec2(STVisibleRect::getOriginalPoint().x + 15, 60*0.618+STVisibleRect::getOriginalPoint().y));
        settingBtn->setPosition(Vec2(STVisibleRect::getPointOfSceneRightBottom().x - 15, 60*0.618 + STVisibleRect::getOriginalPoint().y));
        vedioBtn->setPosition(Vec2(STVisibleRect::getCenterOfScene().x, lightBtn->getBoundingBox().getMaxY() + 15));
        soundBtn->setPosition(settingBtn->getPosition()+Vec2(15, 0));
        shareBtn->setPosition(settingBtn->getPosition()+Vec2(15, 0));
        
        lightBtn->setCallback(CC_CALLBACK_1(HomeLayer::onClickedMenuItems, this));
        settingBtn->setCallback(CC_CALLBACK_1(HomeLayer::onClickedMenuItems, this));
        vedioBtn->setCallback(CC_CALLBACK_1(HomeLayer::onClickedMenuItems, this));
        
        
        Menu* pBtns = Menu::create(lightBtn, settingBtn, vedioBtn, NULL);
        pBtns->setAnchorPoint(Vec2(0, 0));
        pBtns->setPosition(Vec2(0, 0));
        addChild(pBtns, 2);
        
        float maxHeight = centerTitle->getBoundingBox().getMidY() - vedioBtn->getBoundingBox().getMaxY();
        log("the max height is %.2f", maxHeight);

        float tableHeight = maxHeight - 100*1.618;
        float tableWidth = STVisibleRect::getGlvisibleSize().width - 200*0.618;
        
        log("the tablewidth is %.2f, and the tableheight is %.2f", tableWidth, tableHeight);
        int w = (int)tableWidth;
        int h = (int)tableHeight;
        
        TableViewTest* pLayer = TableViewTest::create(Size(w, h));
        pLayer->setPosition(Vec2(100*0.618 + STVisibleRect::getOriginalPoint().x, vedioBtn->getBoundingBox().getMaxY() + 100*0.618));
        addChild(pLayer, 10);
        pLayer->setDelegate(this);
        return true;
    }
    return false;
}
Exemplo n.º 21
0
bool MapLayer::init() {
    if(!Layer::init()) {
        return false;
    }
    
    cocos2d::Size s = Director::getInstance()->getWinSize();
    DoodleTruck *doodleTruck = DoodleTruck::sharedDoodleTruck();
    
    Sprite * bg_sprite = XSprite::xspriteWithFile(IMG_SPRITE_BG);
    this->addChild(bg_sprite);
    
    bg_sprite->setPosition(Vec2(s.width/2, s.height/2));
    
    int cols = MAX_MAP / 2;
    for (int i = 0; i < MAX_MAP; i++) {
        
        char s1[100], s2[100];
        sprintf(s1, "select level_%02d_nml.png", i + 1);
        sprintf(s2, "select level_%02d_act.png", i + 1);
        
        std::string level_nml = s1;
        std::string level_act = s2;
        
        Sprite *level_normal = XSprite::xspriteWithFile(level_nml);
        Sprite *level_select = XSprite::xspriteWithFile(level_act);
        //MenuItemSprite *item = [CCMenuItemImage itemFromNormalSprite:level_normal selectedSprite:level_select target:self selector:@selector(onMap:)];
        
        //MenuItemSprite *[item = MenuItemImage::create(level_normal, level_select, <#const std::string &disabledImage#>, //);
        MenuItemSprite* item = MenuItemSprite::create(level_normal, level_select, NULL, this, menu_selector(MapLayer::onMap));
        
        map_menu[i] = item;
        int col = i % cols + 1;
        int row = i / cols;
        item->setPosition(Vec2(s.width / (cols + 1) * col, s.height / 4.0f * (3 - row)));
        
        int recorded_count = getRecordedCount(i);
        int star_index = 0;
        if (recorded_count >= getFineStoneNum(i))
            star_index = 2;
        else if (recorded_count >= getPassStoneNum(i))
            star_index = 1;
        
        if (star_index) {
            Sprite *star_sprite = XSprite::xspriteWithFile("");//:[NSString stringWithFormat:@"star_%d.png", star_index]];
            item->addChild(star_sprite);
            star_sprite->setPosition(Vec2(star_sprite->getContentSize().width /2, star_sprite->getContentSize().height /2));
        }
    }
    menu = Menu::createWithItem(map_menu[0]);
    
    
    for (int i = 1; i < MAX_MAP; i++)
        menu->addChild(map_menu[i]);
    
    map_menu[doodleTruck->getMapIndex()]->selected();
    
    Sprite *back_normal = XSprite::xspriteWithFile(IMG_BACK_NOR);
    Sprite *back_select = XSprite::xspriteWithFile(IMG_BACK_HIGH);
    MenuItemSprite* item_back = MenuItemSprite::create(back_normal, back_select, NULL, this, menu_selector(MapLayer::onBack));
    
    Sprite *ok_normal = XSprite::xspriteWithFile(IMG_OK_NOR);
    Sprite *ok_select = XSprite::xspriteWithFile(IMG_OK_HIGH);
    MenuItemSprite* item_ok = MenuItemSprite::create(ok_normal, ok_select, NULL, this, menu_selector(MapLayer::onOk));
    
    menu->addChild(item_back);
    menu->addChild(item_ok);
    item_back->setPosition(Vec2(s.width / 2.0f - s.width / 5.0f, item_back->getContentSize().height));
    item_ok->setPosition(Vec2(s.width / 2.0f + s.width / 5.0f, item_ok->getContentSize().height));
    
    menu->setPosition(Vec2(s.width, 0));
    
    this->addChild(menu);
    
    doneEnter();
    
    return true;
}
Exemplo n.º 22
0
bool HelloWorld::init(PhysicsWorld* world,int _level)
{
    if ( !Layer::init() )
    {
        return false;
    } 
	level = _level;
	//NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(HelloWorld::setLevel), "selectedLevel", NULL);
	dispatcher = Director::getInstance()->getEventDispatcher();

	preLoadMusic();
	playBgMusic();

	m_world = world;
	//m_world->setAutoStep(false);
	m_world->setGravity(Vect(0,-grivity));
	this->setAnchorPoint(Point(0,0));
    winSize = Director::getInstance()->getWinSize();
	visibleSize = Director::getInstance()->getVisibleSize();
	origin = Director::getInstance()->getVisibleOrigin();

	auto map1path = String::createWithFormat("%s%d%s","images/level",level,"/bg.png");
	map1 = Sprite::create(map1path->getCString());
	map1->setPosition(map1->getContentSize().width/2+origin.x, map1->getContentSize().height/2+origin.y);
	this->addChild(map1,1,MAP1_TAG);
	auto map2path = String::createWithFormat("%s%d%s", "images/level", level, "/bg.png");
	map2 = Sprite::create(map2path->getCString());
	map2->setPosition(map1->getContentSize().width+map2->getContentSize().width/2+origin.x, map2->getContentSize().height/2+origin.y);
	this->addChild(map2,1,MAP2_TAG);

	Sprite* edge1 = Sprite::create();
	edge1->setContentSize(visibleSize);
	PhysicsBody* edgeBody1 = PhysicsBody::createEdgeBox(visibleSize);
	edgeBody1->setDynamic(false);
	edgeBody1->setGravityEnable(false);
	edgeBody1->setMass(100000.0f);
	edgeBody1->getShape(0)->setRestitution(0.0f);
	edgeBody1->setContactTestBitmask(0xFF);
	edgeBody1->setCategoryBitmask(0x04);
	edgeBody1->setCollisionBitmask(0xFF);
	edgeBody1->getShape(0)->setTag(EDGE_TAG);
	edge1->setPhysicsBody(edgeBody1);
	edge1->setPosition(visibleSize.width/2,visibleSize.height/2);
	addChild(edge1,1,EDGEONE_TAG);

	Sprite* edge = Sprite::create();
	edge->setContentSize(visibleSize);
	PhysicsBody* edgeBody = PhysicsBody::createEdgeBox(Size(visibleSize.width,visibleSize.height/6));
	edgeBody->setDynamic(false);
	edgeBody->setGravityEnable(false);
	edgeBody->setMass(100000.0f);
	edgeBody->getShape(0)->setRestitution(0.0f);
	edgeBody->setContactTestBitmask(0xFF);
	edgeBody->setCategoryBitmask(0x04);
	edgeBody->setCollisionBitmask(0xFF);
	edgeBody->getShape(0)->setTag(EDGE_TAG);
	edge->setPhysicsBody(edgeBody);
	edge->setPosition(visibleSize.width / 2, visibleSize.height / 12);
	addChild(edge, 1, EDGE_TAG);


	Sprite* floor = Sprite::create();
	PhysicsBody* floorBody = PhysicsBody::createEdgeSegment(Point(0, visibleSize.height / 10), Point(visibleSize.width, visibleSize.height / 10));
	floorBody->setDynamic(false);
	floorBody->setGravityEnable(false);
	floorBody->getShape(0)->setRestitution(0.0f);
	floorBody->setMass(100000.0f);
	floorBody->setCategoryBitmask(0x0003);
	floorBody->setContactTestBitmask(0x0003);
	floorBody->setCollisionBitmask(0x0001);
	floor->setPosition(0, visibleSize.height / 10);
	floor->setPhysicsBody(floorBody);
	//this->addChild(floor,2,FLOOR_TAG);

	setEnemyFrameNumber();
	setPlayerFrameNumber();
	initDamage();

	player1 = new player();
	auto playerPath = String::createWithFormat("%s%d%s", "images/level", level, "/player.png");
	player1->sprite = Sprite::create(playerPath->getCString());
	PhysicsBody* playerBody = PhysicsBody::createBox(player1->sprite->getContentSize());
	playerBody->setRotationEnable(false);
	playerBody->getShape(0)->setRestitution(0.0f);
	playerBody->getShape(0)->setFriction(0.8f);
	playerBody->setMass(player1->mass);
	playerBody->setCollisionBitmask(0x04);
	playerBody->setCategoryBitmask(0x01);
	playerBody->setContactTestBitmask(0xFF);
	playerBody->getShape(0)->setTag(PLAYER_TAG);
	player1->sprite->setPhysicsBody(playerBody);
	player1->sprite->setPosition(player1->sprite->getContentSize().width/2+5, floor->getPositionY()+player1->sprite->getContentSize().height*3);
	addChild(player1->sprite,2,PLAYER_TAG);

	preLoadAnimation();

	auto backItem = MenuItemImage::create("images/CloseNormal.png", "images/CloseSelected.png", CC_CALLBACK_0(HelloWorld::backToChoseLevel, this));
	//auto pauseItem = MenuItemImage::create("CloseNormal.png", "CloseSelected.png", CC_CALLBACK_0(HelloWorld::pauseScene, this));
	auto popupItem = MenuItemImage::create("images/CloseNormal.png", "images/CloseSelected.png", CC_CALLBACK_0(HelloWorld::toPopup, this));
	//pauseItem->setPosition(-backItem->getContentSize().width,0);
	popupItem->setPosition(0,0);
	backItem->setPosition(backItem->getContentSize().width,0);

	auto backmenu = Menu::create(popupItem,backItem,NULL);
	backmenu->setPosition(visibleSize.width - backItem->getContentSize().width*2, visibleSize.height - backItem->getContentSize().height / 2);
	addChild(backmenu, 10);

	hpLayer = HPLayer::create();
	hpLayer->setPosition(0, visibleSize.height / 15 * 14);
	addChild(hpLayer, 2, HPLAYER_TAG);

	Vector<MenuItem*> attackLogoItems;
	MenuItemSprite* attackLogoItem;
	for (int i = 0; i < ATTACKNUMBER; i++){
		auto logoPath = String::createWithFormat("%s%d%s%d%s", "images/level", level, "/attack", i, "/logo.png");
		auto normalSprite = Sprite::create(logoPath->getCString());
		normalSprite->setOpacity(200);
		auto selectedSprite = Sprite::create(logoPath->getCString());
		attackLogoItem = MenuItemSprite::create(normalSprite, selectedSprite, CC_CALLBACK_0(player::setAttack, player1, i));
		attackLogoItem->setPosition(Vec2(0, -i*attackLogoItem->getContentSize().height));
		attackLogoItems.pushBack(attackLogoItem);

	}
	auto attackLogoMenu = Menu::createWithArray(attackLogoItems);
	attackLogoMenu->setPosition(visibleSize.width - attackLogoItem->getContentSize().width, visibleSize.height / 2 + 2 * attackLogoItem->getContentSize().height);
	addChild(attackLogoMenu, 10);


	onTouchEvent();
	onKeyBoardEvent();
	physicsEvent();
	EventCustom e("custom");
	dispatcher->dispatchEvent(&e);

	enemyComing(1.0f);
	

	this->schedule(schedule_selector(HelloWorld::enemyComing), 5.0f);
	this->schedule(schedule_selector(HelloWorld::enemyAttack), 2.0f);
	this->scheduleUpdate();
	
	log("init");
    return true;
}