void Picking::displayIcon() { auto fileU = FileUtils::getInstance(); auto fileContent = fileU->getStringFromFile("data/animData.xml"); UserDefault* def = UserDefault::getInstance(); int key = def->getIntegerForKey(SaveDataKey[n_DataKeyNum::eMonsterData01 + m_battleNum].c_str()); doc.Parse(fileContent.c_str()); fileContent = fileU->getStringFromFile("data/monsterData.xml"); mData.Parse(fileContent.c_str()); m_HP = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("HP")->GetText()); auto sprite = doc.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str()); key = def->getIntegerForKey(SaveDataKey[n_DataKeyNum::eEnemyMonster01 + m_battleNum].c_str()); m_enemyHP = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("HP")->GetText()); //cut image to fit inside frame m_iconSprite = Sprite::create(sprite->FirstChildElement("spriteList")->FirstChildElement("animation")->FirstChildElement("stand")->GetText()); m_iconSprite->setScale(m_Mag * 1.5); m_iconSprite->setPosition(Vec2((m_visibleSize.width / 6) * 1.8, m_visibleSize.height / 2)); m_instance->addChild(m_iconSprite); }
bool GameOverScene::init() { if(!Layer::init()) { return false; } auto visibleSize = Director::getInstance()->getVisibleSize(); auto origin = Director::getInstance()->getVisibleOrigin(); UserDefault* userScore = UserDefault::getInstance(); if(score >= userScore->getIntegerForKey( "highscore" )) { userScore->setIntegerForKey( "highscore", score ); } userScore->flush(); //create background for game over scene auto background = Sprite::create("FlappyResources/Background.png"); background->setPosition(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2); this->addChild(background); //create retry item auto retry = MenuItemImage::create( "FlappyResources/Retry_Button.png", "FlappyResources/Retry_Button_Clicked.png", CC_CALLBACK_1(GameOverScene::goToGameScene, this) ); retry->setPosition( origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2 ); //create quit item auto quit = MenuItemImage::create( "FlappyResources/Menu_Button.png", "FlappyResources/Menu_Button_Clicked.png", CC_CALLBACK_1(GameOverScene::goToMainMenuScene, this) ); quit->setPosition( origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2 - quit->getContentSize().height * 2); //create menu auto menu = Menu::create( retry, quit, NULL ); menu->setPosition( Vec2(0, 0) ); //create label score auto stringScore = __String::createWithFormat( "Your score: %d", score ); auto labelScore = LabelTTF::create( stringScore->getCString(), "fonts/Marker Belt.ttf", 50 ); labelScore->setPosition( origin.x + labelScore->getContentSize().width, origin.y + visibleSize.height / 2 + labelScore->getContentSize().height * 4 ); labelScore->setFontFillColor( Color3B::YELLOW ); //create label display best score auto stringBestScore = __String::createWithFormat( "High score: %d", userScore->getIntegerForKey( "highscore" ) ); auto labelHighScore = LabelTTF::create( stringBestScore->getCString(), "fonts/Marker Belt.ttf", 50 ); labelHighScore->setPosition( origin.x + labelScore->getContentSize().width + visibleSize.width / 2, origin.y + visibleSize.height / 2 + labelHighScore->getContentSize().height * 4); labelHighScore->setFontFillColor( Color3B::RED ); this->addChild( menu ); this->addChild( labelScore ); this->addChild( labelHighScore ); return true; }
// テキストの設定 void resultText::textSelect() { // スコアデータの取得 UserDefault *userDef = UserDefault::getInstance(); float tempScore = userDef->getIntegerForKey("Score", 0); int textRoot; score = tempScore; if (SCOREBORDER_1) { textRoot = 1; } else if (SCOREBORDER_2) { textRoot = 2; } else if (SCOREBORDER_3) { textRoot = 3; } else if (SCOREBORDER_4) { textRoot = 4; } else { textRoot = 5; } texts(textRoot); }
int BBGameDataManager::getStar(int themeId, int levelId) { UserDefault* ud = UserDefault::getInstance(); // 更新星级 __String *starkey = __String::createWithFormat("star_%d_%d", themeId, levelId); return ud->getIntegerForKey(starkey->getCString(), 0); }
int BBGameDataManager::getBestTime(int themeId, int levelId) { UserDefault* ud = UserDefault::getInstance(); __String *bestkey = __String::createWithFormat("best_%d_%d", themeId, levelId); return ud->getIntegerForKey(bestkey->getCString(), 0); }
void BBHandleLayer::initData() { m_visibleSize = Director::getInstance()->getVisibleSize(); m_blockLength = kBlockLength * BBGameDataManager::getInstance()->getScreenScale(); m_row = 5; m_col = 4; m_countDown = 2; m_blockArr = Array::create(); m_blockArr->retain(); m_isReady = false; m_showTips = false; m_moves = 0; m_over = false; m_mixTimes = 100; m_blockAnimOver = true; m_idleBlockLastDirection = 0; m_curIndex = m_row * m_col + 1; UserDefault *ud = UserDefault::getInstance(); if (ud->getBoolForKey("hasLocalData")) { m_moves = ud->getIntegerForKey("moves"); } }
void InGameLayer::MenuBombCallback() { SimpleAudioEngine::getInstance()->playEffect("sound/use_bomb.mp3"); cleanAllEnemys(); if(bombNum>0) bombNum--; auto label = static_cast<Label*>(this->getChildByTag(GameSceneNodeTagNumLabel)); auto menu = static_cast<Menu*>(this->getChildByTag(GameSceneNodeTagMenuBomb)); if (bombNum == 0) { label->setVisible(false); menu->setVisible(false); } else { label->setString(__String::createWithFormat("x%d",bombNum)->getCString()); } score += 100; scoreLabel->setString(__String::createWithFormat("%d",score)->getCString()); UserDefault *defaults = UserDefault::getInstance(); int highScore = defaults->getIntegerForKey("highscore_key"); if (highScore < score) { highScore = score; defaults->setIntegerForKey("highscore_key", highScore); } __String *text = __String::createWithFormat("%i", highScore); auto lblScoreOfHigh = static_cast<Label*>(this->getChildByTag(GameSceneNodelblHighScore)); lblScoreOfHigh->setString(text->getCString()); }
void Picking::displayEnemy() { auto fileU = FileUtils::getInstance(); auto fileContent = fileU->getStringFromFile("data/animData.xml"); doc.Parse(fileContent.c_str()); UserDefault* def = UserDefault::getInstance(); enemyMonster = def->getIntegerForKey(SaveDataKey[(n_DataKeyNum::eEnemyMonster01) + m_battleNum].c_str()); auto sprite = doc.FirstChildElement()->FirstChildElement(MonsterNameData[enemyMonster].c_str()); /* //CARD on the center m_enemySpecial = Sprite::create("img/UI/battle/UI_B_12.png"); m_enemySpecial->setScale(m_Mag * 0.8); m_enemySpecial->setPosition(Vec2(m_visibleSize.width / 2, m_visibleSize.height - m_enemySpecial->getBoundingBox().getMaxY() * 0.75)); m_instance->addChild(m_enemySpecial); m_enemySpecial->setVisible(false); //hidden for animation */ //Monster Sprite number 2 m_enemyCard = Sprite::create(sprite->FirstChildElement("spriteList")->FirstChildElement("animation")->FirstChildElement("stand")->GetText()); m_enemyCard->setScale(m_Mag * 1.5); m_enemyCard->setPosition(Vec2((m_visibleSize.width / 6) * 4.5, m_visibleSize.height /2)); m_instance->addChild(m_enemyCard); }
// on "init" you need to initialize your instance bool GameOverScene::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto backgroundSprite = Sprite::create("Background.png"); backgroundSprite->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); this->addChild(backgroundSprite); auto retryItem = MenuItemImage::create("Retry Button.png", "Retry Button Clicked.png", CC_CALLBACK_1(GameOverScene::GoToGameScene, this)); retryItem->setPosition(Point(visibleSize.width /2 + origin.x, visibleSize.height / 4 * 3)); auto mainMenuItem = MenuItemImage::create("Menu Button.png", "Menu Button Clicked.png", CC_CALLBACK_1(GameOverScene::GoToMainMenuScene, this)); mainMenuItem->setPosition(Point(visibleSize.width /2 + origin.x, visibleSize.height / 4 )); auto menu = Menu::create(retryItem, mainMenuItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu); UserDefault *def = UserDefault::getInstance(); auto highScore = def->getIntegerForKey("HIGHSCORE", 0); if (score > highScore) { highScore = score; def->setIntegerForKey("HIGHSCORE", highScore); } def->flush(); __String *tempScore = __String::createWithFormat("Current : %i", score); auto currentScore = LabelTTF::create(tempScore->getCString(), "fonts/Marker Felt.ttf", visibleSize.height * SCORE_FONT_SIZE); currentScore->setPosition(Point(visibleSize.width * 0.25 + origin.x, visibleSize.height /2 + origin.y )); this->addChild(currentScore); __String *temHighpScore = __String::createWithFormat("High : %i", highScore); auto highScoreLabel = LabelTTF::create(temHighpScore->getCString(), "fonts/Marker Felt.ttf", visibleSize.height * SCORE_FONT_SIZE); highScoreLabel->setColor(Color3B::YELLOW); highScoreLabel->setPosition(Point(visibleSize.width * 0.75 + origin.x, visibleSize.height / 2 + origin.y)); this->addChild(highScoreLabel); return true; }
void HighScoreManager::registerCurrentScore(int score) { UserDefault* userDef = UserDefault::getInstance(); if (score > userDef->getIntegerForKey(KEY_HIGHSCORE.c_str(), 0)) { userDef->setIntegerForKey(KEY_HIGHSCORE.c_str(), score); } }
void ThirdPartyHelper::showReviewAlertWhenOpenTime(int opentime){ UserDefault *ud = UserDefault::getInstance(); int cu = ud->getIntegerForKey(LHOPENTIME, 0); cu ++; ud->setIntegerForKey(LHOPENTIME, cu); if (cu == opentime) { ThirdPartyHelper::showReviewAlert(); } }
void BBGameDataManager::setGameOverData(int star, int leftTime) { int themeId = m_themeId; int levelId = m_levelId + 1; UserDefault* ud = UserDefault::getInstance(); // 更新星级 __String *starkey = __String::createWithFormat("star_%d_%d", m_themeId, m_levelId); int curStar = ud->getIntegerForKey(starkey->getCString(), 0); if (curStar < star) { ud->setIntegerForKey(starkey->getCString(), star); } __String *bestkey = __String::createWithFormat("best_%d_%d", m_themeId, m_levelId); int bestTime = ud->getIntegerForKey(bestkey->getCString(), 0); if (bestTime == 0 || bestTime > leftTime) { ud->setIntegerForKey(bestkey->getCString(), leftTime); } // 更新关卡进度 int themeIdFramCache = ud->getIntegerForKey("themeId", 1); int levelIdFramCache = ud->getIntegerForKey("levelId", 1); if (themeIdFramCache > themeId) { return; } else if (themeIdFramCache == themeId) { if (levelIdFramCache >= levelId) { return; } } if (levelId > 9) { // 进入下一个主题 themeId++; levelId = 1; } ud->setIntegerForKey("themeId", themeId); ud->setIntegerForKey("levelId", levelId); ud->flush(); }
void TestGameCenter::doAction(int tag) { switch (tag) { case TAG_GC_LOGIN: { // std::function<void(int, std::string&)> callback = std::bind(&TestGameCenter::onUserCallback, this, std::placeholders::_1, std::placeholders::_2); //use cocos utils std::function<void(int, std::string&)> callback = CC_CALLBACK_2(TestGameCenter::onUserCallback, this); if (_protocolGameCenterUser->isLoggedIn()) { _resultInfo->setString("GameCenter: log in already."); } else { _protocolGameCenterUser->login(callback); } } break; case TAG_GC_LOGOUT: { std::function<void(int, std::string&)> callback = CC_CALLBACK_2(TestGameCenter::onUserCallback, this); _protocolGameCenterUser->logout(callback); break; } case TAG_GC_SHOW_LEADERBOARDS: { _protocolGameCenterSocial->showLeaderboards(); break; } case TAG_GC_SHOW_ACHIEVEMENTS: { _protocolGameCenterSocial->showAchievements(); break; } case TAG_GC_SUBMIT_SCORE: { UserDefault* userDefault = UserDefault::getInstance(); int score = userDefault->getIntegerForKey("high-score", 1000) + 1; _protocolGameCenterSocial->submitScore(GAME_CENTER_LEADERBOARD_KEY_IOS_EASY, score, CC_CALLBACK_2(TestGameCenter::onSocialCallback, this)); _resultInfo->setString(StringUtils::format("Submitting new high score: %d", score)); break; } case TAG_GC_UNLOCK_ACHIEVEMENT: { _protocolGameCenterSocial->unlockAchievement(GAME_CENTER_ACHIEVEMENT_KEY_IOS_PRIME); _resultInfo->setString("Unlocking Achievement PRIME"); break; } case TAG_GC_RESET_ACHIEVEMENTS: { _resultInfo->setString("Resetting all achievements..."); _protocolGameCenterSocial->resetAchievements(CC_CALLBACK_2(TestGameCenter::onSocialCallback, this)); break; } default: break; } }
void Flame::updateFlameCollectedCount() { StatisticsData* totaldata = StatisticsData::getRunningLayer(); UserDefault* userDefault = UserDefault::getInstance(); int FlameWhiteCount = userDefault->getIntegerForKey("collectedWhite",0); int FlameBlueCount = userDefault->getIntegerForKey("collectedBlue", 0); int FlameVioltCount = userDefault->getIntegerForKey("collectedViolet",0); int FlameOrangeCount = userDefault->getIntegerForKey("collectedOrange",0); switch(_type){ case Flame_White: FlameWhiteCount++; totaldata->totalFlame_White++; userDefault->setIntegerForKey("collectedWhite", FlameWhiteCount); break; case Flame_Blue: FlameBlueCount++; totaldata->totalFlame_Blue++; userDefault->setIntegerForKey("collectedBlue", FlameBlueCount); break; case Flame_Violet: FlameVioltCount++; totaldata->totalFlame_Violet++; userDefault->setIntegerForKey("collectedViolet", FlameVioltCount); break; case Flame_Orange: FlameOrangeCount++; totaldata->totalFlame_Orange++; userDefault->setIntegerForKey("collectedOrange", FlameOrangeCount); break; default: break; } }
//ハイスコア記録・表示 void GameScene::saveHighScore() { UserDefault* userDefault = UserDefault::getInstance(); //ハイスコアを取得する int oldHighScore = userDefault->getIntegerForKey(KEY_HIGHSCORE,0); if(oldHighScore < m_score) { //ハイスコアを保存する userDefault->setIntegerForKey(KEY_HIGHSCORE, m_score); userDefault->flush(); //ハイスコアを表示する showHighScoreLabel(); } }
void Result::pushScore(cocos2d::Ref *pSender){ UserDefault *userDef = UserDefault::getInstance(); int tempScore = userDef->getIntegerForKey("temp"); std::string str = StringUtils::toString(tempScore); char *cstr = new char[str.length() + 1]; strcpy(cstr, str.c_str()); // ScoreCenter::postScore("com.com.jugjug_scoreboard1", "30"); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) ScoreCenter::postScore("com.com.jugjug_scoreboard1",cstr); ScoreCenter::showRanking("com.com.jugjug_scoreboard1"); #endif delete [] cstr; }
// on "init" you need to initialize your instance bool Tutorial::init() { //サイズ取得を行う origin = Director::getInstance()->getVisibleOrigin(); //使用端末の(0,0)地点 visibleSize = Director::getInstance()->getVisibleSize(); //使用端末の画面サイズ this->setTouchMode(kCCTouchesOneByOne); // シングルタッチモードにする this->setTouchEnabled(true); // タッチを有効にする(内部的にEventDispatcherに登録される) auto keyboardListener = EventListenerKeyboard::create(); keyboardListener->onKeyReleased = CC_CALLBACK_2(Tutorial::onKeyReleased, this); this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(keyboardListener, this); // 背景を生成 UserDefault* userDefault = UserDefault::sharedUserDefault(); int wk_flag = userDefault->getIntegerForKey(key_tutorialFlag, 1); Sprite* pBG; if (wk_flag == 3) { pBG = Sprite::create("help_1.png"); } else { // // NEXTボタン // MenuItemImage* pSaisei = MenuItemImage::create("button_saisei.png", // "button_saisei.png", // CC_CALLBACK_1(Tutorial::tapSaiseiMenu, this)); // pSaisei->setPosition(Point(visibleSize.width * 0.5, origin.y + 220)); // Menu* pMenu = Menu::create(pSaisei, NULL); // pMenu->setPosition(Point::ZERO); // pMenu->setTag(kTag_Saisei); // this->addChild(pMenu,2); //ターゲット Node* pTarget = Sprite::create("target_0.png"); pTarget->setPosition(Point(pTarget->getContentSize().width+50.0, visibleSize.height * 0.80)); pTarget->setTag(tagTargetImg); this->addChild(pTarget,2); Node* pTarget1 = Sprite::create("target_1.png"); pTarget1->setPosition(Point(pTarget->getContentSize().width+10.0, visibleSize.height * 0.80)); pTarget1->setTag(tagTargetImgSub1); this->addChild(pTarget1,1); pTarget1 = Sprite::create("target_1.png"); pTarget1->setPosition(Point(pTarget->getContentSize().width+90.0, visibleSize.height * 0.80)); pTarget1->setRotation(180); pTarget1->setTag(tagTargetImgSub2); this->addChild(pTarget1,1); //矢印表示 Node* pArrow = Sprite::create("back_blue.png"); pArrow->setPosition(Point(visibleSize.width-80, visibleSize.height * 0.80)); pArrow->setTag(tagArrow); this->addChild(pArrow,9); Node* pArrow1 = Sprite::create("13.png"); Size bgSize = pArrow->getContentSize(); pArrow1->setPosition(Point(bgSize.width * 0.5, bgSize.height * 0.5)); pArrow->addChild(pArrow1,10); pArrow->runAction(CCRepeatForever::create(Blink::create(5,5))); //メッセージ Node* pMsg = Sprite::create("help_msg1.png"); pMsg->setPosition(Point(visibleSize.width-150, visibleSize.height * 0.80-100)); pMsg->setTag(tagMsg); this->addChild(pMsg,2); pMsg = Sprite::create("help_msg3.png"); pMsg->setPosition(Point(visibleSize.width/2 , origin.y + 200)); pMsg->setTag(tagTap2); this->addChild(pMsg,2); LabelTTF* arrowLabel = LabelTTF::create("タップしてね", "Arial", 40); arrowLabel->setColor(ccc3(0, 0, 0)); arrowLabel->setPosition(Point(visibleSize.width/2 , origin.y + 200)); arrowLabel->setTag(tagTap); this->addChild(arrowLabel,3); arrowLabel->runAction(CCRepeatForever::create(Blink::create(5,7))); pBG = Sprite::create("Tutorial.png"); } pBG->setPosition(Point(visibleSize.width * 0.5, visibleSize.height * 0.5)); this->addChild(pBG); return true; }
void Tutorial::onTouchEnded(Touch* touch, Event* event) { UserDefault* userDefault = UserDefault::sharedUserDefault(); int wk_flag = userDefault->getIntegerForKey(key_tutorialFlag, 1); if (wk_flag < 3) { Node* pArrow = this->getChildByTag(tagArrow); Node* pYubi; Node* pMsg; LabelTTF* arrowLabel; switch (scene_flag){ case 0: //アニメーション停止 pArrow->stopAllActions(); pArrow->runAction(Show::create()); pArrow->runAction(MoveTo::create(2, ccp(120.0, visibleSize.height * 0.80))); // メッセージ削除 pMsg = this->getChildByTag(tagMsg); pMsg->removeFromParentAndCleanup(true); pMsg = this->getChildByTag(tagTap); pMsg->removeFromParentAndCleanup(true); pMsg = this->getChildByTag(tagTap2); pMsg->removeFromParentAndCleanup(true); //スワイプアニメーション追加 pYubi = Sprite::create("yubi.png"); pYubi->setPosition(Point(visibleSize.width-120, visibleSize.height * 0.80-200)); pYubi->setRotation(120); pYubi->setTag(tagYubi); this->addChild(pYubi,2); pYubi->runAction(Sequence::create(MoveTo::create(1, ccp(120.0, visibleSize.height * 0.80-200)),MoveTo::create(0.7, ccp(120.0, visibleSize.height * 0.4)),NULL)); scene_flag++; this->scheduleOnce(schedule_selector(Tutorial::msg2), 2); break; case 1: //アニメーションキャンセル this->unschedule(schedule_selector(Tutorial::msg2)); //矢印を所定の位置へ移動 pArrow->stopAllActions(); pArrow->setPosition(Point(120.0, visibleSize.height * 0.80)); //yubiを所定の位置へ移動 pYubi = this->getChildByTag(tagYubi); pYubi->stopAllActions(); pYubi->setPosition(Point(120.0, visibleSize.height * 0.4)); pYubi->runAction(RotateBy::create(0.5f, -90.0f)); //メッセージ表示 pMsg = Sprite::create("help_msg2.png"); pMsg->setPosition(Point(280, visibleSize.height * 0.80-150)); pMsg->setTag(tagMsg); this->addChild(pMsg,2); pMsg = Sprite::create("help_msg3.png"); pMsg->setPosition(Point(visibleSize.width/2 , origin.y + 200)); pMsg->setTag(tagTap2); this->addChild(pMsg,2); arrowLabel = LabelTTF::create("タップしてね", "Arial", 40); arrowLabel->setColor(ccc3(0, 0, 0)); arrowLabel->setPosition(Point(visibleSize.width/2 , origin.y + 200)); arrowLabel->setTag(tagTap); this->addChild(arrowLabel,3); arrowLabel->runAction(CCRepeatForever::create(Blink::create(5,7))); scene_flag++; break; case 2: if (wk_flag == 1) { Scene* gameScene = (Scene*)TitleScene::create(); Director::getInstance()->replaceScene(gameScene); } else if (wk_flag == 2) { //相手レベル記録 UserDefault* userDefault = UserDefault::sharedUserDefault(); userDefault->setIntegerForKey(key_playEnemyLv, 1); // ゲーム画面の表示 Scene* scene = HelloWorld::createScene(); TransitionFlipX* tran = TransitionFlipX::create(0.2, scene); Director::sharedDirector()->replaceScene(tran); } } } else { if (wk_count > 3) { Scene* scene = PowerUp::createScene(); TransitionFlipX* tran = TransitionFlipX::create(1, scene); Director::sharedDirector()->replaceScene(tran); } else { wk_count = wk_count + 1; Sprite* pBG = Sprite::create(String::createWithFormat("help_%d.png", wk_count)->getCString()); pBG->setPosition(Point(visibleSize.width * 0.5, visibleSize.height * 0.5)); this->addChild(pBG); } } }
//?????????研究放在init和enter中的区别对于像score这样的可变动的量 void InGameLayer::setViews() { //////////////////添加UFO、Pause Menu start/////////////// auto bombSp = Sprite::createWithSpriteFrameName("bomb.png"); auto itemBomb = MenuItemSprite::create(bombSp,bombSp,CC_CALLBACK_0(InGameLayer::MenuBombCallback,this)); itemBomb->setPosition(VisibleRect::leftBottom()+Vec2(bombSp->getContentSize().width/2,bombSp->getContentSize().height/2)); auto menu = Menu::create(itemBomb, nullptr); menu->setPosition(VisibleRect::leftBottom()); menu->setTag(GameSceneNodeTagMenuBomb); menu->setVisible(false); addChild(menu); auto PauseSp1 = Sprite::createWithSpriteFrameName("game_pause_nor.png"); auto PauseSp2 = Sprite::createWithSpriteFrameName("game_pause_nor-44.png"); auto visibleSize = Director::getInstance()->getVisibleSize(); auto itemPause = MenuItemSprite::create(PauseSp1,PauseSp2,CC_CALLBACK_0(InGameLayer::MenuPauseCallback,this)); itemPause->setPosition(VisibleRect::leftTop()+Vec2(PauseSp1->getContentSize().width/2, - PauseSp1->getContentSize().height/2)); auto menu2 = Menu::create(itemPause,nullptr); menu2->setPosition(VisibleRect::leftBottom()); addChild(menu2); auto BombNumLabel = Label::createWithTTF("x0","fonts/hanyi.ttf",36); BombNumLabel->setPosition(VisibleRect::leftBottom()+Vec2(bombSp->getContentSize().width/2+60,bombSp->getContentSize().height/2)); BombNumLabel->setTag(GameSceneNodeTagNumLabel); BombNumLabel->setVisible(false); addChild(BombNumLabel); this->schedule(SEL_SCHEDULE(&InGameLayer::createBombs),20.0f); ///////////////////添加UFO、Pause Menu end/////////////////////////////// scoreLabel = Label::createWithTTF("0","fonts/hanyi.ttf",45); scoreLabel->setPosition(VisibleRect::leftTop()+Vec2(itemPause->getContentSize().width*2, -scoreLabel->getContentSize().height)); addChild(scoreLabel,1000); /////////////////最高分 start//////////////////////// UserDefault *defaults = UserDefault::getInstance(); int highScore = defaults->getIntegerForKey("highscore_key"); if (highScore < score) { highScore = score; defaults->setIntegerForKey("highscore_key", highScore); } __String *text = __String::createWithFormat("%i", highScore); auto lblHighScore = Label::createWithTTF(MyUtility::getUTF8Char("lblHighScore"), "fonts/hanyi.ttf", 45); lblHighScore->setAnchorPoint(Vec2(0,0)); lblHighScore->setPosition(Vec2(VisibleRect::rightTop().x-2*lblHighScore->getContentSize().width ,scoreLabel->getPosition().y-15)); addChild(lblHighScore); auto lblScoreOfHigh = Label::createWithTTF(text->getCString(), "fonts/hanyi.ttf", 45); //lblScoreOfHigh->setColor(Color3B(75,255,255)); lblScoreOfHigh->setAnchorPoint(Vec2(0,0)); lblScoreOfHigh->setPosition(lblHighScore->getPosition() + Vec2(200, 0)); lblScoreOfHigh->setTag(GameSceneNodelblHighScore); addChild(lblScoreOfHigh); //////////////////最高分 end///////////////////////////// hero = FlyPlane::create(); hero->setPosition(Vec2(VisibleRect::center().x,120));//hero的contentsize为0,为什么 hero->setIsAlive(true); hero->setTag(GameSceneNodeTagFighter); addChild(hero); m_Pos = hero->getPosition(); addEvents(); //注册 碰撞事件监听器 contactListener = EventListenerPhysicsContact::create(); contactListener->onContactBegin = [this](PhysicsContact& contact) { auto spriteA = contact.getShapeA()->getBody()->getNode(); auto spriteB = contact.getShapeB()->getBody()->getNode(); Node* enemy1 = nullptr; ////////////////////////////检测 飞机与敌人的碰撞 start////////////////////////////////// //Dlog::showLog("A = %d ------------ B = %d", spriteA->getTag(), spriteB->getTag()); if (spriteA&&spriteB&&spriteA->getTag() == GameSceneNodeTagFighter && spriteB->getTag() == GameSceneNodeBatchTagEnemy) { enemy1 = spriteB; } if (spriteA&&spriteB&&spriteA->getTag() == GameSceneNodeBatchTagEnemy && spriteB->getTag() == GameSceneNodeTagFighter) { enemy1 = spriteA; } if (enemy1 != nullptr) {//发生碰撞 if(hero&&hero->getIsAlive()) { this->EnemyAttackPlane(); } //this->handleFighterCollidingWithEnemy((Enemy*)enemy1); return false; } /////////////////////////检测 飞机与敌人的碰撞 end///////////////////////////////////// ////////////////////////////检测 炮弹与敌人的碰撞 start//////////////////////////////// Node* enemy2 = nullptr; Node* bullet = nullptr; if (spriteA&&spriteB&&spriteA->getTag() == GameSceneNodeBatchTagBullet && spriteB->getTag() == GameSceneNodeBatchTagEnemy) { //不可见的炮弹不发生碰撞 //if (!spriteA->isVisible()) // return false; //使得炮弹消失 //spriteA->setVisible(false); bullet = spriteA/*->removeFromParentAndCleanup(true)*/; enemy2 = spriteB; } if (spriteA&&spriteB&&spriteA->getTag() == GameSceneNodeBatchTagEnemy && spriteB->getTag() == GameSceneNodeBatchTagBullet) { //不可见的炮弹不发生碰撞 //if (!spriteB->isVisible()) // return false; //使得炮弹消失 //spriteB->setVisible(false); bullet = spriteB/*->removeFromParent()*/; enemy2 = spriteA; } if (enemy2 != nullptr) {//发生碰撞 bullet->removeFromParent(); this->bulletAttackEnemy((EnemyBase*)enemy2); //this->handleBulletCollidingWithEnemy((Enemy*)enemy2); return false; } /////////////////////////检测 炮弹与敌人的碰撞 end///////////////////////////////////// ////////////////////////////检测 飞机与UFO2的碰撞 start////////////////////////////////// Dlog::showLog("A = %d ------------ B = %d", spriteA->getTag(), spriteB->getTag()); Node* enemy3 = nullptr; if (spriteA&&spriteB&&spriteA->getTag() == GameSceneNodeTagFighter && spriteB->getTag() == GameSceneNodeBatchTagBomb2) { enemy3 = spriteB; } if (spriteA&&spriteB&&spriteA->getTag() == GameSceneNodeBatchTagBomb2 && spriteB->getTag() == GameSceneNodeTagFighter) { enemy3 = spriteA; } if (enemy3 != nullptr) {//发生碰撞 SimpleAudioEngine::getInstance()->playEffect("sound/get_bomb.mp3"); enemy3->setVisible(false); enemy3->removeFromParent(); this->BombAttackPlane(); //this->handleFighterCollidingWithEnemy((Enemy*)enemy1); return false; } /////////////////////////检测 飞机与UFO2的碰撞 end///////////////////////////////////// ////////////////////////////检测 飞机与UFO1的碰撞 start////////////////////////////////// Dlog::showLog("A = %d ------------ B = %d", spriteA->getTag(), spriteB->getTag()); Node* enemy4 = nullptr; if (spriteA&&spriteB&&spriteA->getTag() == GameSceneNodeTagFighter && spriteB->getTag() == GameSceneNodeBatchTagBomb1) { enemy4 = spriteB; } if (spriteA&&spriteB&&spriteA->getTag() == GameSceneNodeBatchTagBomb1 && spriteB->getTag() == GameSceneNodeTagFighter) { enemy4 = spriteA; } if (enemy4 != nullptr) {//发生碰撞 SimpleAudioEngine::getInstance()->playEffect("sound/get_double_laser.mp3"); enemy4->setVisible(false); enemy4->removeFromParent(); this->DoubleBulletsIsOn = true; this->scheduleOnce(schedule_selector(InGameLayer::updateDoubleBulletsIsOn),11.0f); //this->handleFighterCollidingWithEnemy((Enemy*)enemy1); return false; } /////////////////////////检测 飞机与UFO1的碰撞 end///////////////////////////////////// return false; }; EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); eventDispatcher->addEventListenerWithFixedPriority(contactListener,1); this->schedule(SEL_SCHEDULE(&InGameLayer::createEnemys),CCRANDOM_0_1()*0.25+0.36f); this->schedule(SEL_SCHEDULE(&InGameLayer::moveAllEnemys),0.08f); this->schedule(SEL_SCHEDULE(&InGameLayer::createbullets),0.2f); //this->schedule(SEL_SCHEDULE(&InGameLayer::moveAllbullets),0.016f); this->scheduleUpdate(); }
// on "init" you need to initialize your instance bool Result::init() { ////////////////////////////// // super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); // add a label shows "Hello World" // create and initialize a label //タッチイベントの監視を開始 auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = CC_CALLBACK_2(Result::onTouchBegan, this); listener->onTouchCancelled= CC_CALLBACK_2(Result::onTouchCancelled,this); listener->onTouchMoved= CC_CALLBACK_2(Result::onTouchMoved,this); listener->onTouchEnded = CC_CALLBACK_2(Result::onTouchEnded, this); this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); int dby=100; //スタートボタンを設置 auto startButton = MenuItemImage::create( "BACKbutton.png", // 通常状態の画像 "BACKbutton.png", // 押下状態の画像 CC_CALLBACK_1(Result::pushStart, this)); // 押下時のアクション startButton->setPosition(Point(visibleSize.width/4, visibleSize.height/2-dby)); //create menu, it's an autorelease object auto s_menu = Menu::create(startButton, NULL); s_menu->setPosition(Point::ZERO); this->addChild(s_menu, 2); //リトライボタンを設置 auto retryButton = MenuItemImage::create( "RETRYbutton.png", // 通常状態の画像 "RETRYbutton.png", // 押下状態の画像 CC_CALLBACK_1(Result::pushRetry, this)); // 押下時のアクション retryButton->setPosition(Point(visibleSize.width*3/4 ,visibleSize.height/2-dby)); //create menu, it's an autorelease object auto r_menu = Menu::create(retryButton, NULL); r_menu->setPosition(Point::ZERO); this->addChild(r_menu, 3); //this->particle = particle; // auto scoreLabel = Label::createWithSystemFont(cocos2d::StringUtils::toString(Stage:jugScore), "HiraKakuProN-W6", 48); // scoreLabel->setPosition(Point(visibleSize.width/2, visibleSize.height/2)); // scoreLabel->setTag(20); // this->addChild(scoreLabel) UserDefault *userDef = UserDefault::getInstance(); int highScore = userDef->getIntegerForKey("highScore", 0); //int型をセット int tempScore = userDef->getIntegerForKey("temp"); //点数評価 std::string honor; if(tempScore<=10) honor="GO How to Play"; else if(10<tempScore&&tempScore<=30) honor="Do you play with a blindfold?"; else if(30<tempScore&&tempScore<=50) honor="My grandma level"; else if(50<tempScore&&tempScore<=80) honor="Otedamer"; else if(80<tempScore&&tempScore<=100) honor="Pro otedamer"; else if(100<tempScore&&tempScore<=130) honor="Cool Juggler"; else if(130<tempScore&&tempScore<=150) honor="God juggler!!"; else honor="God"; std::string honor2="Your Rank : "; honor2.append(honor); auto honorLabel = Label::createWithSystemFont(honor2, "HiraKakuProN-W6", 40); honorLabel->setPosition(Point(visibleSize.width/2, visibleSize.height-70)); this->addChild(honorLabel); CCLOG("highscore=%dtempScore=%d",highScore,tempScore); if(tempScore>highScore){ userDef->setIntegerForKey("highScore", tempScore); auto scoreLabel = Label::createWithSystemFont(cocos2d::StringUtils::toString(tempScore), "HiraKakuProN-W6", 60); scoreLabel->setPosition(Point(visibleSize.width/2, visibleSize.height/2)); auto high = Label::createWithSystemFont("HIGHSCORE!!!!!", "HiraKakuProN-W6", 48); high->setPosition(Point(visibleSize.width/2, visibleSize.height/2+250)); this->addChild(high); this->addChild(scoreLabel); this->schedule( schedule_selector(Result::StageEffect), 1.8 ); }else{ auto scoreLabel = Label::createWithSystemFont(cocos2d::StringUtils::toString(tempScore), "HiraKakuProN-W6", 48); scoreLabel->setPosition(Point(visibleSize.width/2, visibleSize.height/2)); this->addChild(scoreLabel); std::string hi="highScore : "; auto highScoreLabel = Label::createWithSystemFont(hi.append(cocos2d::StringUtils::toString(highScore)), "HiraKakuProN-W6", 24); highScoreLabel->setPosition(Point(visibleSize.width-140, visibleSize.height-100)); this->addChild(highScoreLabel); } auto scoreButton = MenuItemImage::create( "sendScore.png", // 通常状態の画像 "sendScore.png", // 押下状態の画像 CC_CALLBACK_1(Result::pushScore, this)); // 押下時のアクション scoreButton->setPosition(Point(visibleSize.width*3/4+130 ,visibleSize.height/2+dby+80)); //create menu, it's an autorelease object auto sc_menu = Menu::create(scoreButton, NULL); sc_menu->setPosition(Point::ZERO); this->addChild(sc_menu, 4); return true; }
void InGameLayer::bulletAttackEnemy(EnemyBase*Ene) { /*Vector<bullet*>::iterator iter2=bulletVec.begin(); for(int i=EneVec.size()-1;i>=0;--i) { auto Ene=EneVec.at(i); for(int j=bulletVec.size()-1;j>=0;--j)//如果就j!=0会出现越界 { auto bult=bulletVec.at(j); if(bult->testhurt(Ene)) { bult->removeFromParent(); bulletVec.erase(j);*/ Ene->hurt(1); if(Ene->getIsBlowUp()) { switch (Ene->getEnemyType()) { case 0: { SimpleAudioEngine::getInstance()->playEffect("sound/enemy3_down.mp3"); score += 50; break;} case 1: { SimpleAudioEngine::getInstance()->playEffect("sound/enemy1_down.mp3"); score += 10; break; } case 2: { SimpleAudioEngine::getInstance()->playEffect("sound/enemy2_down.mp3"); score += 20; break; } default: break; } scoreLabel->setString(__String::createWithFormat("%d",score)->getCString()); EneVec.eraseObject(Ene); UserDefault *defaults = UserDefault::getInstance(); int highScore = defaults->getIntegerForKey("highscore_key"); if (highScore < score) { highScore = score; defaults->setIntegerForKey("highscore_key", highScore); } __String *text = __String::createWithFormat("%i", highScore); auto lblScoreOfHigh = static_cast<Label*>(this->getChildByTag(GameSceneNodelblHighScore)); lblScoreOfHigh->setString(text->getCString()); } /* break; } } //正序删与倒序删1 2 3 4 } }*/ }
Bird::Bird( cocos2d::Layer *layer, b2World *world ) { visibleSize = Director::getInstance()->getVisibleSize(); int visibleWidth = visibleSize.width; int visibleHeight = visibleSize.height; float positionX, positionY; long whichBird; auto region = rand() % 4 + 1; // Adjust random region based on previous regions UserDefault *def = UserDefault::getInstance(); auto velocity = def->getFloatForKey("velocity", 0); auto power3_activated = def->getIntegerForKey("power3_activated",0); auto bird1_region = def->getIntegerForKey("bird1_region", 0); auto bird2_region = def->getIntegerForKey("bird2_region", 0); auto blue1 = def->getIntegerForKey("blue1"); auto blue2 = def->getIntegerForKey("blue2"); auto blue3 = def->getIntegerForKey("blue3"); if(bird1_region == 0) { def->setIntegerForKey("bird1_region", region); whichBird = 1; } else { if(bird2_region == 0){ while(region == bird1_region){ region = rand() % 4 + 1; } def->setIntegerForKey("bird2_region", region); whichBird = 2; } else { while(region == bird1_region || region == bird2_region){ region = rand() % 4 + 1; } whichBird = 3; } } if((whichBird == 1 && !blue1) || (whichBird == 2 && !blue2) || (whichBird == 3 && !blue3)) { bird = Sprite::create("bird_left.png"); } else { bird = Sprite::create("blue_left.png"); } def->flush(); auto rotation = rand() % 46 + 1; int halfBird = bird->getContentSize().width / 2; auto birdY = rand() % (visibleHeight - halfBird) + halfBird; auto birdX = rand() % (visibleWidth - halfBird) + halfBird; bool top = false; if(region == 1 || region == 3) { if(birdY > visibleHeight / 2){ top = true; rotation = rand() % 26 + 1; } } else { rotation = rotation + 45; if(birdX > visibleWidth / 2) top = true; } auto angle = rotation * M_PI / 180; auto xPos = cos(angle) * (visibleWidth * 1.5); auto yPos = sin(angle) * (visibleWidth * 1.5); // Set the bird's position based on region if(region == 1) // Left { bird->setPosition(Point(-halfBird,birdY)); if((whichBird == 1 && !blue1) || (whichBird == 2 && !blue2) || (whichBird == 3 && !blue3)) { bird->setTexture("bird_right.png"); } else { bird->setTexture("blue_right.png"); } if(top) // Above middle of screen { bird->setRotation(rotation); bird->setTag(1); positionX = bird->getPositionX() + xPos; positionY = -(bird->getPositionY() + yPos); } else // Below middle of screen { bird->setRotation(-rotation); bird->setTag(2); positionX = bird->getPositionX() + xPos; positionY = bird->getPositionY() + yPos; } } if(region == 2) // Top { bird->setPosition(Point(birdX, visibleHeight + halfBird)); if(top) // Past middle of screen on x axis { bird->setRotation(-rotation); bird->setTag(3); positionX = -(bird->getPositionX() + xPos); positionY = -(bird->getPositionY() + yPos); } else // Before middle of screen on x axis { bird->setTag(4); if((whichBird == 1 && !blue1) || (whichBird == 2 && !blue2) || (whichBird == 3 && !blue3)) { bird->setTexture("bird_right.png"); } else { bird->setTexture("blue_right.png"); } bird->setRotation(rotation); positionX = bird->getPositionX() + xPos; positionY = -(bird->getPositionY() + yPos); } } if(region == 3) // Right { bird->setPosition(Point(visibleWidth + halfBird, birdY)); if(top) // Above middle of screen { bird->setRotation(-rotation); bird->setTag(5); positionX = -(bird->getPositionX() + xPos); positionY = -(bird->getPositionY() + yPos); } else // Below middle of screen { bird->setRotation(rotation); bird->setTag(6); positionX = -(bird->getPositionX() + xPos); positionY = bird->getPositionY() + yPos; } } if(region == 4) // Bottom { bird->setPosition(Point(birdX, -halfBird)); if(top) // Past middle of screen on x axis { bird->setRotation(rotation); bird->setTag(7); positionX = -(bird->getPositionX() + xPos); positionY = bird->getPositionY() + yPos; } else // Before middle of screen on x axis { if((whichBird == 1 && !blue1) || (whichBird == 2 && !blue2) || (whichBird == 3 && !blue3)) { bird->setTexture("bird_right.png"); } else { bird->setTexture("blue_right.png"); } bird->setRotation(-rotation); bird->setTag(8); positionX = bird->getPositionX() + xPos; positionY = bird->getPositionY() + yPos; } } // Create ball body b2BodyDef ballBodyDef; ballBodyDef.type = b2_dynamicBody; ballBodyDef.userData = bird; ballBodyDef.position.Set(bird->getPositionX() / PTM_RATIO,bird->getPositionY() / PTM_RATIO); b2Body *ballBody = world->CreateBody(&ballBodyDef); // Create circle shape b2CircleShape circle; circle.m_radius = (bird->getContentSize().height / 2) / PTM_RATIO; // Create shape definition and add body b2FixtureDef ballShapeDef; ballShapeDef.shape = &circle; ballShapeDef.density = 1.0f; ballShapeDef.friction = 0.f; ballShapeDef.restitution = 0.f; ballShapeDef.isSensor = true; ballShapeDef.filter.categoryBits = BIRD_COLLISION_BITMASK; ballShapeDef.filter.maskBits = BIRD_COLLISION_BITMASK; ballShapeDef.userData = (void*) whichBird; ballBody->SetLinearVelocity( b2Vec2(positionX * velocity / PTM_RATIO, positionY * velocity / PTM_RATIO)); ballBody->CreateFixture(&ballShapeDef); if(!power3_activated){ auto tmpScale = bird->getScale(); //tmpScale = tmpScale / 1.5; bird->setScale(tmpScale); } else { bird->setScale(1.5); } layer->addChild(bird, 100); //setup touch listener auto touchListener = EventListenerTouchOneByOne::create(); touchListener->setSwallowTouches( true ); touchListener->onTouchBegan = CC_CALLBACK_2( Bird::onTouchBegan, this ); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener, bird); }
bool HomeLayer::init() { if (!Layer::init()) return false; this->setKeyboardEnabled(true); auto ul = Layer::create(); this->addChild(ul); Size winSize = Director::getInstance()->getWinSize(); auto image = ui::ImageView::create("level.png"); image->setPosition(Vec2(winSize.width / 2, winSize.height / 2 + 240)); ul->addChild(image); mlevel = GameData::shareGameData()->mlevel; mxp = GameData::shareGameData()->mxp; char str[32]; sprintf(str, "%d", mlevel); levellabel = Label::create(); levellabel->setSystemFontSize(48); levellabel->setString(str); levellabel->setPosition(ccp(image->getPosition().x + 20, image->getPosition().y - 10)); ul->addChild(levellabel); int totalxp = getExp(1.1, mlevel); auto timebg = ui::ImageView::create("xp2.png"); timebg->setPosition(Vec2(winSize.width / 2, image->getPosition().y - image->getContentSize().height / 2 - 20)); ul->addChild(timebg); auto sp = Sprite::create("xp1.png"); healthBar = ProgressTimer::create(sp); ul->addChild(healthBar); healthBar->setPosition(Vec2(winSize.width / 2, image->getPosition().y - image->getContentSize().height / 2 - 20)); healthBar->setType(kCCProgressTimerTypeBar); healthBar->setMidpoint(Vec2(0, 0.5)); healthBar->setBarChangeRate(Vec2(1, 0)); healthBar->setPercentage(((float)mxp / (float)totalxp) * 100); __String *exp = __String::createWithFormat("%d/%d", mxp, totalxp); xpLabel = LabelTTF::create(exp->getCString(), "Arial", 25); xpLabel->setColor(Color3B::BLUE); xpLabel->setPosition(healthBar->getPosition()); ul->addChild(xpLabel); auto *moneyBg = ui::ImageView::create("coin1.png"); moneyBg->setPosition(Vec2(winSize.width / 2 - 60, winSize.height / 2 - moneyBg->getPosition().y + 100)); ul->addChild(moneyBg); auto *coinBg = ui::ImageView::create("money1.png"); coinBg->setPosition(Vec2(winSize.width / 2 - 60, winSize.height / 2 - coinBg->getPosition().y)); ul->addChild(coinBg); int money = GameData::shareGameData()->mMoney; __String *strMoney = __String::createWithFormat("%d", money); moneyLabel = LabelTTF::create(); moneyLabel->setFontSize(32); moneyLabel->setPosition(Vec2(120 + moneyBg->getPosition().x, moneyBg->getPosition().y)); moneyLabel->setString(strMoney->getCString()); this->addChild(moneyLabel); int coin = GameData::shareGameData()->mCoin; __String *strCoin = __String::createWithFormat("%d", coin); coinLabel = LabelTTF::create(); coinLabel->setFontSize(32); coinLabel->setPosition(Vec2(coinBg->getPosition().x + 120, coinBg->getPosition().y)); coinLabel->setString(strCoin->getCString()); addChild(coinLabel); auto *textButton = ui::Button::create(); textButton->setEnabled(true); textButton->loadTextures("zhuangbei1.png", "zhuangbei2.png", "zhuangbei2.png"); textButton->setPosition(Vec2(textButton->getContentSize().width / 2, winSize.height / 2 + 100)); textButton->addClickEventListener(CC_CALLBACK_1(HomeLayer::menuCallback, this)); textButton->setTag(11); ul->addChild(textButton); auto *textButton1 = ui::Button::create(); textButton1->setEnabled(true); textButton1->loadTextures("yinxiong1.png", "yinxiong2.png", ""); textButton1->setPosition(Vec2(textButton1->getContentSize().width / 2, winSize.height / 2)); textButton1->addClickEventListener(CC_CALLBACK_1(HomeLayer::menuCallback, this)); textButton1->setTag(12); ul->addChild(textButton1); auto *textButton2 = ui::Button::create(); textButton2->setEnabled(true); textButton2->loadTextures("login1.png", "login2.png", ""); textButton2->setPosition(Vec2(winSize.width - textButton2->getContentSize().width / 2, winSize.height / 2 + 100)); textButton2->addClickEventListener(CC_CALLBACK_1(HomeLayer::menuCallback, this)); textButton2->setTag(13); ul->addChild(textButton2); auto *textButton3 = ui::Button::create(); textButton3->setEnabled(true); textButton3->loadTextures("levelup1.png", "levelup2.png", ""); textButton3->setPosition(Vec2(winSize.width - textButton3->getContentSize().width / 2, winSize.height / 2)); textButton3->addClickEventListener(CC_CALLBACK_1(HomeLayer::menuCallback, this)); textButton3->setTag(14); ul->addChild(textButton3); UserDefault *TextFieldV = UserDefault::getInstance(); coinNum = TextFieldV->getIntegerForKey("coin", 20000); diamondsNum = TextFieldV->getIntegerForKey("money", 200); UserDefault::sharedUserDefault()->flush(); healthBarLogic(NULL); return true; }
bool ResultState::init(Layer* layer){ mSceneState = FADEIN; mUpdateState = UPDATESTART; parentLayer = layer; //点数 UserDefault* userDef = UserDefault::getInstance(); CCLOG("A %i", userDef->getIntegerForKey("blue")); CCLOG("B %i", userDef->getIntegerForKey("red")); auto resultbg = Sprite::create("Scene/Result/background.png"); parentLayer->addChild(resultbg); resultbg->setPosition(Director::getInstance()->getVisibleSize() / 2); auto resultrogo = Sprite::create("Scene/Result/result_logo.png"); parentLayer->addChild(resultrogo); resultrogo->setPosition(resultrogo->getContentSize().width / 2, Director::getInstance()->getVisibleSize().height - resultrogo->getContentSize().height / 2); auto player1icon = Sprite::create("Chara/1P/player1_icon.png"); player1icon->setScale(2, 2); parentLayer->addChild(player1icon); player1icon->setPosition(player1icon->getContentSize().width + player1icon->getContentSize().width / 2, player1icon->getContentSize().height + player1icon->getContentSize().height / 2); auto player2icon = Sprite::create("Chara/2P/player2_icon.png"); player2icon->setScale(2, 2); parentLayer->addChild(player2icon); player2icon->setPosition(Director::getInstance()->getVisibleSize().width - (player2icon->getContentSize().width + player2icon->getContentSize().width / 2), player2icon->getContentSize().height + player2icon->getContentSize().height / 2); //1P点数 if (userDef->getIntegerForKey("blue") - 9 >= 1) { int mNum = 0; mNum = userDef->getIntegerForKey("blue"); mNum = mNum / 10; mNum = mNum % 10; auto rect = CCRectMake(mNum * 80, 0, 80, 128); auto player1num = Sprite::create("Scene/Result/num1P.png", rect); player1num->setPosition(player1icon->getPositionX() - 36, Director::getInstance()->getVisibleSize().height - player1icon->getContentSize().height * 2); parentLayer->addChild(player1num); mNum = userDef->getIntegerForKey("blue"); mNum = mNum % 10; auto rect2 = CCRectMake(mNum * 80, 0, 80, 128); auto player1num2 = Sprite::create("Scene/Result/num1P.png", rect2); player1num2->setPosition(player1icon->getPositionX() + 36, Director::getInstance()->getVisibleSize().height - player1icon->getContentSize().height * 2); parentLayer->addChild(player1num2); } else { int mNum = 0; mNum = userDef->getIntegerForKey("blue") * 80; auto rect = CCRectMake(mNum, 0, 80, 128); auto player1num = Sprite::create("Scene/Result/num1P.png", rect); player1num->setPosition(player1icon->getPositionX(), Director::getInstance()->getVisibleSize().height - player1icon->getContentSize().height * 2); parentLayer->addChild(player1num); } //2P点数 if (userDef->getIntegerForKey("red") - 9 >= 1) { int mNum = 0; mNum = userDef->getIntegerForKey("red"); mNum = mNum / 10; mNum = mNum % 10; auto rect = CCRectMake(mNum * 80, 0, 80, 128); auto player2num = Sprite::create("Scene/Result/num2P.png", rect); player2num->setPosition(player2icon->getPositionX() - 36, Director::getInstance()->getVisibleSize().height - player2icon->getContentSize().height * 2); parentLayer->addChild(player2num); mNum = userDef->getIntegerForKey("red"); mNum = mNum % 10; auto rect2 = CCRectMake(mNum * 80, 0, 80, 128); auto player2num2 = Sprite::create("Scene/Result/num2P.png", rect2); player2num2->setPosition(player2icon->getPositionX() + 36, Director::getInstance()->getVisibleSize().height - player2icon->getContentSize().height * 2); parentLayer->addChild(player2num2); } else { int mNum = 0; mNum = userDef->getIntegerForKey("blue") * 80; auto rect = CCRectMake(mNum, 0, 80, 128); auto player2num = Sprite::create("Scene/Result/num2P.png", rect); player2num->setPosition(player2icon->getPositionX(), Director::getInstance()->getVisibleSize().height - player2icon->getContentSize().height * 2); parentLayer->addChild(player2num); } auto player1point = Sprite::create("Scene/Result/blue_bar.png"); player1point->setAnchorPoint(Vec2(0.5f, 0)); auto scl = ScaleTo::create(2, 1, userDef->getIntegerForKey("blue")); player1point->runAction(scl); parentLayer->addChild(player1point); player1point->setPosition(player1icon->getPositionX(), player1icon->getPositionY() + player1icon->getContentSize().height + 48); auto player2point = Sprite::create("Scene/Result/red_bar.png"); player2point->setAnchorPoint(Vec2(0.5f, 0)); auto scl2 = ScaleTo::create(2, 1, userDef->getIntegerForKey("red")); player2point->runAction(scl2); parentLayer->addChild(player2point); player2point->setPosition(player2icon->getPositionX(), player2icon->getPositionY() + player2icon->getContentSize().height + 48); auto player1name = Sprite::create("Scene/Result/1P_turn.png"); parentLayer->addChild(player1name); player1name->setPosition(player1icon->getPositionX(), player1icon->getPositionY() + player1name->getContentSize().height + 12); auto player2name = Sprite::create("Scene/Result/2P_turn.png"); parentLayer->addChild(player2name); player2name->setPosition(player2icon->getPositionX(), player2icon->getPositionY() + player2name->getContentSize().height + 12); mCount = 0; SimpleAudioEngine::getInstance()->preloadBackgroundMusic("Sound/BGM/BGM_result.mp3"); SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(1.0f); if (userDef->getIntegerForKey("blue") > userDef->getIntegerForKey("red")) { auto win = Sprite::create("Scene/Result/win.png"); parentLayer->addChild(win); win->setPosition(player1icon->getPositionX(), player1icon->getPositionY() - 100); auto lose = Sprite::create("Scene/Result/lose.png"); parentLayer->addChild(lose); lose->setPosition(player2icon->getPositionX(), player2icon->getPositionY() - 100); } else { auto win = Sprite::create("Scene/Result/win.png"); parentLayer->addChild(win); win->setPosition(player2icon->getPositionX(), player2icon->getPositionY() - 100); auto lose = Sprite::create("Scene/Result/lose.png"); parentLayer->addChild(lose); lose->setPosition(player1icon->getPositionX(), player1icon->getPositionY() - 100); } return true; }
// on "init" you need to initialize your instance bool GameOverScene::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto backgroundSprite = Sprite::create( "BackGroundFlappy.png"); auto backgroundSprite2 = Sprite::create("BackGroundFlappy.png"); auto backgroundSprite3 = Sprite::create("BackGroundFlappy.png"); auto groundSprite = Sprite::create("Ground.png"); auto groundSprite2 = Sprite::create("Ground.png"); auto groundSprite3 = Sprite::create("Ground.png"); backgroundSprite->setScale(1.4); backgroundSprite2->setScale(1.4); backgroundSprite3->setScale(1.4); backgroundSprite->setPosition(visibleSize.width/2.2 + origin.x/2, visibleSize.height/2 - origin.y/2); groundSprite->setPosition(visibleSize.width/2.2, 0); backgroundSprite->setAnchorPoint(Vec2(0.5,0.4)); backgroundSprite2->setAnchorPoint(Vec2(0.5,0.4)); backgroundSprite3->setAnchorPoint(Vec2(0.5,0.4)); auto sizeBack = backgroundSprite->getContentSize(); backgroundSprite2->setPosition(backgroundSprite->getPositionX() + sizeBack.width/2, backgroundSprite->getPositionY()); backgroundSprite3->setPosition(backgroundSprite2->getPositionX() + sizeBack.width/2, backgroundSprite->getPositionY()); groundSprite->setScale(1.95); groundSprite2->setScale(1.95); groundSprite3->setScale(1.95); auto sizeGround = groundSprite->getContentSize(); groundSprite->setAnchorPoint(Vec2(0.5, 0.4)); groundSprite2->setAnchorPoint(Vec2(0.5, 0.4)); groundSprite3->setAnchorPoint(Vec2(0.5, 0.4)); groundSprite2->setPosition(groundSprite->getPositionX() + sizeGround.width/2, groundSprite->getPositionY()); groundSprite3->setPosition(groundSprite2->getPositionX() + sizeGround.width/2, groundSprite->getPositionY()); this->addChild( backgroundSprite); this->addChild( backgroundSprite2); this->addChild( backgroundSprite3); this->addChild(groundSprite); this->addChild(groundSprite2); this->addChild(groundSprite3); auto retryItem = MenuItemImage::create( "Restart.png", "Restart.png", CC_CALLBACK_1( GameOverScene::GoToGameScene, this ) ); retryItem->setPosition( Point( visibleSize.width / 2 + origin.x, visibleSize.height / 4 * 3 ) ); auto menu = Menu::create( retryItem, NULL ); menu->setPosition( Point::ZERO ); this->addChild( menu); UserDefault *def = UserDefault::getInstance( ); auto highScore = def->getIntegerForKey( "HIGHSCORE FLAPPY", 0 ); if ( score > highScore ) { highScore = score; def->setIntegerForKey( "HIGHSCORE FLAPPY", highScore ); } def->flush( ); __String *tempScore = __String::createWithFormat( "%i", score ); auto currentScore = Label::createWithTTF (tempScore->getCString( ), "fonts/FlappyFont.TTF", visibleSize.height * SCORE_FONT_SIZE ); currentScore->setPosition( Point( visibleSize.width * 0.25 + origin.x, visibleSize.height / 2 + origin.y ) ); currentScore->setColor( Color3B::BLACK ); auto currentLabel = Label::createWithTTF("SCORE", "fonts/FlappyFont.TTF", visibleSize.height * SCORE_FONT_SIZE ); currentLabel->setPosition( Point( visibleSize.width * 0.25 + origin.x, visibleSize.height / 1.7 + origin.y ) ); currentLabel->setColor( Color3B::BLACK ); currentLabel->setScale(0.9); this->addChild( currentScore ); this->addChild( currentLabel ); __String *tempHighScore = __String::createWithFormat( "%i", highScore ); auto highScoreLabel = Label::createWithTTF( tempHighScore->getCString( ), "fonts/FlappyFont.TTF", visibleSize.height * SCORE_FONT_SIZE ); highScoreLabel->setColor( Color3B::BLACK ); highScoreLabel->setPosition( Point( visibleSize.width * 0.75 + origin.x, visibleSize.height / 2 + origin.y ) ); auto bestLabel = Label::createWithTTF("BEST", "fonts/FlappyFont.TTF", visibleSize.height * SCORE_FONT_SIZE ); bestLabel->setColor( Color3B::BLACK ); bestLabel->setPosition( Point( visibleSize.width * 0.75 + origin.x, visibleSize.height / 1.7 + origin.y ) ); bestLabel->setScale(0.9); this->addChild( highScoreLabel ); this->addChild( bestLabel ); return true; }
void Picking::randomize(int iterator) { auto fileU = FileUtils::getInstance(); auto fileContent = fileU->getStringFromFile("data/monsterData.xml"); mData.Parse(fileContent.c_str()); UserDefault* def = UserDefault::getInstance(); int key = def->getIntegerForKey(SaveDataKey[n_DataKeyNum::eMonsterData01 + m_battleNum].c_str()); int rockProb = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("luck")->FirstChildElement("rock")->GetText()); int sissorsProb = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("luck")->FirstChildElement("sissors")->GetText()); int paperProb = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("luck")->FirstChildElement("paper")->GetText()); //int monsterLevel = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("special")->FirstChildElement("level")->GetText()); int specialProb = rockProb + sissorsProb + paperProb; int randomNum = rand() % 100; if (randomNum < (100 - specialProb)) //------------------ normal card { randomNum = rand() % 3; } else if (randomNum >= (100 - specialProb)) //--------------------- super card { //randomNum = rand() % 3 + 3; randomNum = rand() % specialProb; if (randomNum <= rockProb) { randomNum = rand() % 10; if (randomNum < 7) randomNum = SUPER_ROCK; else randomNum = ULTRA_ROCK; } else if (randomNum <= (rockProb + sissorsProb) && randomNum > rockProb) { randomNum = rand() % 10; if (randomNum < 7) randomNum = SUPER_SISSORS; else randomNum = ULTRA_SISSORS; } else if (randomNum > (rockProb + sissorsProb)) { randomNum = rand() % 10; if (randomNum < 7) randomNum = SUPER_PAPER; else randomNum = ULTRA_PAPER; } else //error case randomNum = rand() % 3; } else //error case { randomNum = rand() % 3; } switch (randomNum) { case ROCK: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_08.png"); break; case SISSORS: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_09.png"); break; case PAPER: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_10.png"); break; case SUPER_ROCK: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_11.png"); break; case SUPER_SISSORS: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_12.png"); break; case SUPER_PAPER: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_13.png"); break; case ULTRA_ROCK: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_11-G.png"); break; case ULTRA_SISSORS: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_12-G.png"); break; case ULTRA_PAPER: m_cards[iterator] = Sprite::create("img/UI/battle/UI_B_13-G.png"); break; } m_cards[iterator]->setScale(m_Mag*0.5); m_cards[iterator]->setPosition(Vec2(m_visibleSize.width / 8 * (((iterator + 1) * 1.5) + 1), m_cards[iterator]->getBoundingBox().getMaxY())); m_cards[iterator]->setName("Cards" + Generic::intToStrnig(iterator)); m_cards[iterator]->setZOrder(10); m_instance->addChild(m_cards[iterator]); cardData[iterator] = randomNum; }
bool GameOverLayer::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); //bg auto bg = TMXTiledMap::create("map/blue_bg.tmx"); this->addChild(bg); //eff ParticleSystem *ps = ParticleSystemQuad::create("particle/light.plist"); ps->setPosition(Vec2(visibleSize.width, visibleSize.height - 200) / 2); this->addChild(ps); auto top = Sprite::createWithSpriteFrameName("gameover.top.png"); //top top->setAnchorPoint(Vec2(0,0)); top->setPosition(Vec2(0, visibleSize.height - top->getContentSize().height)); this->addChild(top); UserDefault *defaults = UserDefault::getInstance(); int highScore = defaults->getIntegerForKey(HIGHSCORE_KEY); if (highScore < score) { highScore = score; defaults->setIntegerForKey(HIGHSCORE_KEY,highScore); } __String *text = __String::createWithFormat("%i points", highScore); auto lblHighScore = Label::createWithTTF(HellcUtils::getUTF8Char("lblHighScore"), "fonts/hanyi.ttf", 25); lblHighScore->setAnchorPoint(Vec2(0,0)); lblHighScore->setPosition(Vec2(60, top->getPosition().y - 30)); addChild(lblHighScore); auto lblScore = Label::createWithTTF(text->getCString(), "fonts/hanyi.ttf", 24); lblScore->setColor(Color3B(75,255,255)); lblScore->setAnchorPoint(Vec2(0,0)); lblScore->setPosition(lblHighScore->getPosition() - Vec2(0, 40)); addChild(lblScore); auto text2 = Label::createWithTTF("Tap the Screen to Play", "fonts/hanyi.ttf", 24); text2->setAnchorPoint(Vec2(0,0)); text2->setPosition(lblScore->getPosition() - Vec2(10, 45)); addChild(text2); //touch auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = [](Touch* touch, Event* event){ Director::getInstance()->popScene(); if (UserDefault::getInstance()->getBoolForKey(SOUND_KEY)) { SimpleAudioEngine::getInstance()->playEffect(sound_1); } return false; }; //touch EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); return true; }
bool OpningScene::init(){ ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Vec2 origin = Director::getInstance()->getVisibleOrigin(); //背景色のグラデーション auto bgGradient = LayerGradient::create(Color4B(255,255,255,255), Color4B(255,255,255,255)); this -> addChild(bgGradient); //ドーンのスプライト Sprite *topSprite = Sprite::create("done.png"); topSprite -> setPosition(Vec2(selfFrame.width/2 , selfFrame.height/3*2 )); topSprite -> setScale(0.2f); this -> addChild(topSprite); auto action1 = ScaleBy::create(0.4,1.3); auto action2 = ScaleBy::create(0.4,0.76923077); auto sequence = Sequence::create(action1,action2,NULL); auto repeatForever = RepeatForever::create(sequence); topSprite -> runAction(repeatForever); //スタートボタン start = Sprite::create(); start -> setTextureRect(cocos2d::Rect(0, 0, selfFrame.width/1.8, selfFrame.width/4)); start -> setColor(Color3B::WHITE); start -> setPosition(Vec2(selfFrame.width/2, selfFrame.height/5*2)); //ラベル作成 Label *startLabel = Label::createWithSystemFont("開始!","KouzanBrushFont",80); startLabel -> setPosition(Vec2(start->getContentSize().width / 2, start->getContentSize().height / 2)); startLabel ->setColor(Color3B::BLACK); start -> addChild(startLabel); this->addChild(start); //ゲームセンターへのログイン GameCenterBridge::loginGameCenter(); //ランキング ranking = Sprite::create(); ranking -> setTextureRect(cocos2d::Rect(0, 0, selfFrame.width/1.8, selfFrame.width/4)); ranking -> setColor(Color3B::WHITE); ranking -> setPosition(Vec2(selfFrame.width/2, selfFrame.height/5)); //ラベル作成 Label *rankingLabel = Label::createWithSystemFont("序列!","KouzanBrushFont",80); rankingLabel -> setPosition(Vec2(ranking->getContentSize().width / 2, ranking->getContentSize().height / 2)); rankingLabel ->setColor(Color3B::BLACK); ranking -> addChild(rankingLabel); this->addChild(ranking); /************** ドッチイベント設定 ******************/ //シングルタップ用リスナーを用意する auto listener = EventListenerTouchOneByOne::create(); //listener -> setSwallowTouches(_swallowsTouches); //各イベントの割り当て listener -> onTouchBegan = CC_CALLBACK_2(OpningScene::onTouchBegan,this); listener -> onTouchEnded = CC_CALLBACK_2(OpningScene::onTouchEnded,this); listener -> onTouchMoved = CC_CALLBACK_2(OpningScene::onTouchMoved,this); //イベントディスパッチャようにリスナーを追加する _eventDispatcher -> addEventListenerWithSceneGraphPriority(listener, this); /************* ドッチイベント設定 終 ****************/ //エフェクトプリロード CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("SOIYA.mp3"); //BGM再生 CocosDenshion::SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(0.1); CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("hueloop.mp3",true); //nend(本番用) char apiKey[] = "33f7cda082e680f88ea5537bb4f24d3f16818379"; char spotID[] = "264071"; //nend(テスト用) //char apiKey[] = "a6eca9dd074372c898dd1df549301f277c53f2b9"; //char spotID[] = "3172"; NendModule::createNADViewBottom(apiKey, spotID); //appCloud // AppCCloudPlugin::Ad::showSimpleView(AppCCloudPlugin::BOTTOM); //ハイスコアを取る //初回は表示させないようにする UserDefault *userDef = UserDefault::getInstance(); if(userDef->getIntegerForKey("score") != 0){ auto score = userDef->getIntegerForKey("score"); //秒数を取り出す unsigned long sec = score / 100; //ミリ秒を取り出す unsigned long mSec = (score % 100); //分を作る unsigned long min = (int)sec / 60; auto scoreLabel = Label::createWithSystemFont(StringUtils::format("最速演舞:%02lu:%02lu:%02lu",min,sec,mSec), "KouzanBrushFont", 35); scoreLabel->setColor(Color3B::BLACK); scoreLabel->setPosition(Vec2(0+scoreLabel->getContentSize().width/2,selfFrame.height-scoreLabel->getContentSize().height)); this->addChild(scoreLabel); } return true; }
int HighScoreManager::getHighScore() { UserDefault* userDef = UserDefault::getInstance(); int highScore = userDef->getIntegerForKey(KEY_HIGHSCORE.c_str(), 0); return highScore; }
void Picking::setCards() { string cardPath; auto fileU = FileUtils::getInstance(); auto fileContent = fileU->getStringFromFile("data/monsterData.xml"); mData.Parse(fileContent.c_str()); UserDefault* def = UserDefault::getInstance(); //----------------------------------------------------------------------------------- //Player Special Card //----------------------------------------------------------------------------------- int key = def->getIntegerForKey(SaveDataKey[n_DataKeyNum::eMonsterData01 + m_battleNum].c_str()); int type = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("special")->FirstChildElement("type")->GetText()); int level = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("special")->FirstChildElement("level")->GetText()); if (type == ROCK) { if (level == 0) { //normal cardPath = "img/UI/battle/UI_B_08.png"; m_specialType = ROCK; } else if (level == 1) { cardPath = "img/UI/battle/UI_B_11.png"; m_specialType = SUPER_ROCK; } else { //super or ultra cardPath = "img/UI/battle/UI_B_11-G.png"; m_specialType = ULTRA_ROCK; } } else if (type == SISSORS) { if (level == 0) //normal { cardPath = "img/UI/battle/UI_B_09.png"; m_specialType = SISSORS; } else if (level == 1) { cardPath = "img/UI/battle/UI_B_12.png"; m_specialType = SUPER_SISSORS; } else //super or ultra { cardPath = "img/UI/battle/UI_B_12-G.png"; m_specialType = ULTRA_SISSORS; } } else if (type == PAPER) { if (level == 0) //normal { cardPath = "img/UI/battle/UI_B_10.png"; m_specialType = PAPER; } else if (level == 1) { cardPath = "img/UI/battle/UI_B_13.png"; m_specialType = SUPER_PAPER; } else //super or ultra { cardPath = "img/UI/battle/UI_B_13-G.png"; m_specialType = ULTRA_PAPER; } } //render player special card m_specialCard = Sprite::create(cardPath); m_specialCard->setScale(m_Mag * 0.5); m_specialCard->setPosition(Vec2(m_specialCard->getBoundingBox().getMaxX() * 1.8, m_specialCard->getBoundingBox().getMaxY())); m_specialCard->setScale(m_Mag * 1.2); m_specialCard->setZOrder(10); m_instance->addChild(m_specialCard); auto smallenPlayer = ScaleTo::create(0.5, m_Mag*0.5); m_specialCard->runAction(Sequence::create(smallenPlayer, NULL)); //----------------------------------------------------------------------------------- //Enemy Special Card //----------------------------------------------------------------------------------- key = def->getIntegerForKey(SaveDataKey[n_DataKeyNum::eEnemyMonster01 + m_battleNum].c_str()); type = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("special")->FirstChildElement("type")->GetText()); level = atoi(mData.FirstChildElement()->FirstChildElement(MonsterNameData[key].c_str())->FirstChildElement("special")->FirstChildElement("level")->GetText()); if (type == ROCK) { if (level == 0) { //normal cardPath = "img/UI/battle/UI_B_08.png"; m_enemySpecialType = ROCK; } else if (level == 1) //super { cardPath = "img/UI/battle/UI_B_11.png"; m_enemySpecialType = SUPER_ROCK; } else //ultra { cardPath = "img/UI/battle/UI_B_11-G.png"; m_enemySpecialType = ULTRA_ROCK; } } else if (type == SISSORS) { if (level == 0) //normal { cardPath = "img/UI/battle/UI_B_09.png"; m_enemySpecialType = SISSORS; } else if (level == 1) //super { cardPath = "img/UI/battle/UI_B_12.png"; m_enemySpecialType = SUPER_SISSORS; } else //ultra { cardPath = "img/UI/battle/UI_B_12-G.png"; m_enemySpecialType = ULTRA_SISSORS; } } else if (type == PAPER) { if (level == 0) //normal { cardPath = "img/UI/battle/UI_B_10.png"; m_enemySpecialType = PAPER; } else if (level == 1) //super { cardPath = "img/UI/battle/UI_B_13.png"; m_enemySpecialType = SUPER_PAPER; } else //ultra { cardPath = "img/UI/battle/UI_B_13-G.png"; m_enemySpecialType = ULTRA_PAPER; } } //render enemy Special card m_enemySpecial = Sprite::create(cardPath); m_enemySpecial->setScale(m_Mag * 0.5); m_enemySpecial->setPosition(Vec2(m_visibleSize.width - m_enemySpecial->getBoundingBox().getMaxX() * 1.8, m_visibleSize.height - m_enemySpecial->getBoundingBox().getMaxY())); m_enemySpecial->setScale(m_Mag * 1.2); m_enemySpecial->setZOrder(10); m_instance->addChild(m_enemySpecial); auto smallenEnemy = ScaleTo::create(0.5, m_Mag*0.5); m_enemySpecial->runAction(Sequence::create(smallenEnemy, NULL)); //----------------------------------------------------------------------------------- //Other Cards //----------------------------------------------------------------------------------- srand(time(NULL)); for (int i = 0; i < 4; i++) { randomize(i); m_hiddenCards[i] = Sprite::create("img/UI/battle/UI_B_14.png"); m_hiddenCards[i]->setPositionX(m_cards[i]->getPositionX() - 270); m_hiddenCards[i]->setScale(m_Mag*0.5); m_hiddenCards[i]->setPositionY(m_visibleSize.height - m_hiddenCards[i]->getBoundingBox().getMaxY()); m_instance->addChild(m_hiddenCards[i]); } auto callback = CallFunc::create([this]() { this->displayUI(); }); MoveTo* appear[4]; MoveTo* appearEnemy[4]; for (int i = 0; i < 4; i++) { //player other cards animation appear[i] = MoveTo::create((4-i)*0.5, Vec2(m_cards[i]->getPosition().x, m_cards[i]->getPosition().y)); auto wait = DelayTime::create(1.5); m_cards[i]->setPosition(m_cards[i]->getPosition().x, -m_cards[i]->getBoundingBox().getMaxY()*(4-i)); if (i == 3) m_cards[i]->runAction(Sequence::create(appear[i], wait, callback, NULL)); else m_cards[i]->runAction(appear[i]); //enemy other cards animation appearEnemy[i] = MoveTo::create(i * 0.5, Vec2(m_hiddenCards[i]->getPositionX(), m_hiddenCards[i]->getPositionY())); m_hiddenCards[i]->setPosition(m_hiddenCards[i]->getPositionX(), m_visibleSize.height + m_hiddenCards[i]->getBoundingBox().getMaxY() * i); m_hiddenCards[i]->runAction(appearEnemy[i]); } }