Exemplo n.º 1
0
void AdventureLevelClass::loadResAndInit()
{
    CCSize size = LcdAdapClass::sharedLCDADAP()->getWinSize();
    
    
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Themes/scene/stages_bg-hd.plist");
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Themes/scene/themescene1-hd.plist");
    
    memset(comBuffer, 0, sizeof(comBuffer));
    sprintf(comBuffer, "Themes/scene/stages_theme%d-hd.plist",GameStageConClass::sharedStageCon()->getGameStageIndex());
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(comBuffer);
    
    
    bgSprite = CCSprite::createWithSpriteFrameName("ss_bg.png");
    CCSize bgSize = bgSprite->getContentSize();
    //    bgSprite->setPosition(ccp(size.width / 2, size.height / 2));
    LcdAdapClass::sharedLCDADAP()->setAdaptorNodePos(bgSprite, ccp(size.width / 2, size.height / 2));
    this->addChild(bgSprite,1);
    
    CCSprite* bgCN = CCSprite::createWithSpriteFrameName("ss_bg_CN.png");
    bgCN->setPosition(ccp(bgSize.width/2, bgSize.height/2));
    bgSprite->addChild(bgCN,1);
    
    
    if (GameStageConClass::sharedStageCon()->getGameStageIndex() != GAME_STAGE_TYPE_EXTRE) {
        memset(comBuffer, 0, sizeof(comBuffer));
        sprintf(comBuffer, "ss_towers_%02d.png",(curPageIndex + 1));
        levelTowerTypeSP = CCSprite::createWithSpriteFrameName(comBuffer);//default
        levelTowerTypeSP->setPosition(ccp(bgSize.width/2, bgSize.height * 18/100));
        bgSprite->addChild(levelTowerTypeSP,3);
        
        levelNumSP = CCSprite::createWithSpriteFrameName("ss_waves_10.png");//default
        levelNumSP->setPosition(ccp(bgSize.width/2, bgSize.height * 84/100));
        bgSprite->addChild(levelNumSP,3);
        
        CCSprite* leftCloud = CCSprite::createWithSpriteFrameName("ss_cloud.png");
        CCSize cloudSize = leftCloud->getContentSize();
        leftCloud->setPosition(ccp(bgSize.width / 2, bgSize.height / 2));
        bgSprite->addChild(leftCloud,5);
    }
    
    ccColor4B color;
    color.a = 125;
    color.b = 0;
    color.g = 0;
    color.r = 0;
    
    scrollLayer = CCLayer::create();//default pos is (0,0)
    scrollLayer->setContentSize(CCSize(size.width * levelNum / 2, size.height));
    bgSprite->addChild(scrollLayer,15);
    
    
    
    for (int i = 0; i < levelNum; i++) {
        
        gameLevelInfoStruct levelInfo = HUDClass::sharedHUD()->getGameCurLevelInfo((GAME_STAGE_TYPE)(GameStageConClass::sharedStageCon()->getGameStageIndex()), (i + 1));
        
        
        
        memset(comBuffer, 0, sizeof(comBuffer));
        sprintf(comBuffer, "ss_map%02d.png",(i + 1));
        CCSprite* sprite = CCSprite::createWithSpriteFrameName(comBuffer);
        CCSize spriteSize = sprite->getContentSize();
        //sprite->setPosition(ccp(size.width / 2, size.height / 2));
        
        memset(comBuffer, 0, sizeof(comBuffer));
        sprintf(comBuffer, "%s","gainhonor_1.png");//这里要加个判断,判断用户的荣誉
        CCSprite* honorSP = NULL;
        if (levelInfo.UserGained > 0 && levelInfo.UserGained < 4) {
            sprintf(comBuffer, "gainhonor_%d.png",levelInfo.UserGained);
            honorSP = CCSprite::createWithSpriteFrameName(comBuffer);
            honorSP->setVisible(true);//要不要显示
        }
        else
        {
            honorSP = CCSprite::createWithSpriteFrameName(comBuffer);
            honorSP->setVisible(false);//要不要显示
        }
        
        honorSP->setPosition(ccp(spriteSize.width * 84/100, spriteSize.height * 22/100));
        sprite->addChild(honorSP,1);
        
        CCSprite* allClearSP = CCSprite::createWithSpriteFrameName("gainhonor_4.png");
        if (!levelInfo.isClearAllObject) {
            allClearSP->setVisible(false);
        }
        allClearSP->setPosition(ccp(spriteSize.width * 60/100, spriteSize.height * 22/100));
        sprite->addChild(allClearSP,1);
        
        levelNormalArray->addObject(sprite);//normal
        
        CCLayerColor* layer = CCLayerColor::create(color);
        layer->setContentSize(spriteSize);
		ccBlendFunc blend = {GL_DST_ALPHA, GL_SRC_ALPHA};
		layer->setBlendFunc(blend);
        
        CCRenderTexture* rt = CCRenderTexture::create(spriteSize.width, spriteSize.height);
        sprite->setPosition(ccp(spriteSize.width/2, spriteSize.height/2));
        rt->begin();
        sprite->visit();
        layer->visit();
        rt->end();
        
        CCSprite* levelShade = CCSprite::createWithTexture(rt->getSprite()->getTexture());
        levelShade->setFlipY(true);
        levelShade->setPosition(ccp((bgSize.width/2) * (i + 1), bgSize.height / 2));
        levelShadeArray->addObject(levelShade);
        
        sprite->setPosition(ccp((bgSize.width/2) * (i + 1), bgSize.height / 2));
        sprite->setVisible(false);
        scrollLayer->addChild(levelShade,1);
        scrollLayer->addChild(sprite,1);
        
        if (i == curPageIndex) {//加个判断,哪一个关卡点亮
            curShadeLevelSprite = levelShade;
            curNormalLevelSprite = sprite;
            curShadeLevelSprite->setVisible(false);
            curNormalLevelSprite->setVisible(true);
        }
    }
    
    gameStartMenu = CCMenuItemImage::create("ss_play_normal_CN.png", "ss_play_pressed_CN.png", this, menu_selector(AdventureLevelClass::selMenuCallBack));
    
    if (GameStageConClass::sharedStageCon()->checkIsCurLevelLocked((curPageIndex + 1))) {
        gameStartMenu->setNormalSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("ss_locked_CN.png"));
        gameStartMenu->setEnabled(false);
    }
    
    gameStartMenu->setTag(MENU_ID_START_TAG);
    gameStartMenu->setPosition(ccp(bgSize.width/2, bgSize.height * 8/ 100));
    
    CCMenuItemImage* homeBtn = CCMenuItemImage::create("ss_back_normal.png", "ss_back_pressed.png", this, menu_selector(AdventureLevelClass::selMenuCallBack));
    homeBtn->setTag(MENU_ID_HOME_TAG);
    homeBtn->setPosition(ccp(bgSize.width/25, bgSize.height * 95.5 / 100));
    
    CCMenuItemImage* helpBtn = CCMenuItemImage::create("ss_help_normal.png", "ss_help_pressed.png", this, menu_selector(AdventureLevelClass::selMenuCallBack));
    helpBtn->setTag(MENU_ID_HELP_TAG);
    helpBtn->setPosition(ccp(bgSize.width * 24/25, bgSize.height * 95.5 / 100));
    
    
    CCMenu* menu = CCMenu::create(homeBtn,helpBtn,gameStartMenu,NULL);
    menu->setPosition(CCPointZero);
    bgSprite->addChild(menu,2);
    
    loadWaitSprite->removeFromParentAndCleanup(true);
//    this->gotoPageIndexNow(curPageIndex);
    
    scrollLayer->setPosition(ccp((bgSize.width/2) * (-curPageIndex), 0));
}