mirror of
https://github.com/wu736139669/SmallGame_Cocos2dx.git
synced 2026-08-05 06:23:09 +00:00
205 lines
6.4 KiB
C++
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;
|
|
}
|
|
|
|
|
|
|
|
|