Files
2014-08-20 16:15:02 +08:00

205 lines
6.4 KiB
C++

//
// Scene_GameOver.cpp
// OnceAgain
//
// Created by xiaohai on 14-2-21.
//
//
#include "Scene_GameOver.h"
#include "Gamelist.h"
#include "StringUtil.h"
#include "GameLayer_MaxScore.h"
#include "GameLayer_LvUp.h"
#include "GameLayer_NormalScore.h"
#include "PlayerInfoManager.h"
#include "GameUIExportJson.h"
#include "GameMedalLayer.h"
#include "GameLayerPk.h"
#include "GameLayerPk2.h"
#include "PkSysManager.h"
#include "XQDate.h"
#include "GameLayer_Resource.h"
#include "GameMedalItemLayer.h"
#include "GameLayer_RiceBar.h"
enum Btn_Key{
TagMaxScore = 100,
TagPk = 101,
LevelUp_Btn = 102
};
CCScene* Scene_GameOver::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
Scene_GameOver *layer = Scene_GameOver::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
Scene_GameOver::Scene_GameOver()
{
levelSprite = NULL;
resultSprite = NULL;
maxScoreSprite = NULL;
ul = NULL;
obtainTitleUl = NULL;
taskUl = NULL;
}
Scene_GameOver::~Scene_GameOver()
{
GUIReader::shareReader()->purgeGUIReader();
DictionaryHelper::shareHelper()->purgeDictionaryHelper();
ActionManager::shareManager()->purgeActionManager();
CC_SAFE_RELEASE(ul);
CC_SAFE_RELEASE(obtainTitleUl);
//结束时候设置等级.
CPlayerInfoMan::sharedInstance().getPlayerInfo().nLevel = GameShare_Global::shareGlobal()->gameProperty.playerlevel;
// CC_SAFE_RELEASE(taskUl);
}
// on "init" you need to initialize your instance
bool Scene_GameOver::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
layerList.clear();
layerCount = 0;
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
//background
auto* pSpriteBG = CCSprite::create("./CocoStudioResources/GameOverBg.jpg");
pSpriteBG->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
pSpriteBG->setColor(ccGRAY);
this->addChild(pSpriteBG, 0);
return true;
}
void Scene_GameOver::onEnter()
{
CCLayer::onEnter();
this->setResultAndMaxScore(resultScore, maxScore);
judgeShowLayers();
}
void Scene_GameOver::judgeShowLayers() {
//判断挑战界面显示与
if (CPkSysManager::sharedInstance().pkType == PkTypeReceive) {
auto* layer = GameLayerPk::create();
layer->addSureCallbackFunc(this, callfunc_selector(Scene_GameOver::sureBtnCallBack));
layer -> retain();
layerList.push_back(layer);
}
if (CPkSysManager::sharedInstance().pkType == PkTypeSend) {
auto* layer = GameLayerPk2::create();
layer->addSureCallbackFunc(this, callfunc_selector(Scene_GameOver::sureBtnCallBack));
layer -> retain();
layerList.push_back(layer);
}
// 判断升级界面显示与否
int nowLv = CPlayerInfoMan::sharedInstance().getPlayerLevel();
sGameProperty& gameProperty = GameShare_Global::shareGlobal()->gameProperty;
int nowlv_1 = gameProperty.playerlevel;
if (nowlv_1 > nowLv) {
auto *lvUp = GameLayer_LvUp::create();
lvUp->addSureCallback(this, callfunc_selector(Scene_GameOver::sureBtnCallBack));
lvUp -> retain();
lvUp->setLv(nowlv_1);
layerList.push_back(lvUp);
if(CPlayerInfoMan::sharedInstance().getPlayerInfo().nPower<5){
GameLayer_RiceBar *Rice = GameLayer_RiceBar::create();
Rice->setRiceNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nPower);
}
}
//判断勋章界面显示与否
if(CTaskMan::sharedInstance().isNewDayTaskComplate(GameShare_Global::shareGlobal()->gameType))
{
auto *layer_1 = GameMedalLayer::create();
layer_1 -> retain();
layer_1->m_bSetBadge = true;
layer_1 -> setCallBackByGameFinish(this, callfunc_selector(Scene_GameOver::sureBtnCallBack));
layer_1 -> setGameType(GameShare_Global::shareGlobal()->gameType);
layerList.push_back(layer_1);
//layer_1->SetBadge();
}
sureBtnCallBack();
}
void Scene_GameOver::sureBtnCallBack()
{
if (layerCount == layerList.size()) {
layerList[layerCount - 1] -> release();
CCDirector::sharedDirector()->popScene();
}
else {
if (layerCount != 0) {
layerList[layerCount - 1] -> release();
layerList[layerCount - 1] -> removeFromParent();
}
this -> addChild(layerList[layerCount]);
layerCount ++;
}
}
void Scene_GameOver::menuOkCallBack(CCObject* pSender)
{
CCDirector::sharedDirector()->popScene();
}
void Scene_GameOver::menuRestartCallBack(CCObject* pSender)
{
//消耗体力,纪录体力消耗时间
if (CPlayerInfoMan::sharedInstance().getPlayerInfo().nPower == 5) {
// CPlayerInfoMan::sharedInstance().getPlayerInfo().riceEndTime = CTimeUtil::GetSystemTimeStamp();
CPlayerInfoMan::sharedInstance().getPlayerInfo().riceEndTime = 480;
}
CPlayerInfoMan::sharedInstance().RequestUseRice();
CCScene *gameScene = GameShare_Scene::getGameSceneByType(GameShare_Global::shareGlobal()->gameType);
CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(0.4, gameScene));
}
#pragma mark num sprite
void Scene_GameOver::setResultAndMaxScore(long resultScore, long maxScore)
{
auto *layer = GameLayer_MaxScore::create();
// 判断升级界面显示与否
int nowLv = CPlayerInfoMan::sharedInstance().getPlayerLevel();
sGameProperty& gameProperty = GameShare_Global::shareGlobal()->gameProperty;
int nowlv_1 = gameProperty.playerlevel;
if (CPkSysManager::sharedInstance().pkType == PkTypeReceive||CPkSysManager::sharedInstance().pkType == PkTypeSend||nowlv_1 > nowLv||CTaskMan::sharedInstance().isNewDayTaskComplate(GameShare_Global::shareGlobal()->gameType))
{
layer->getButton(true);
}
else
layer->getButton(false);
layer->addSureCallbackFunc(this, callfunc_selector(Scene_GameOver::sureBtnCallBack));
layer->setMaxScore(maxScore);
layer -> retain();
layer->setResultScore(resultScore);
layerList.push_back(layer);
return;
}