mirror of
https://github.com/wu736139669/SmallGame_Cocos2dx.git
synced 2026-08-05 06:23:09 +00:00
784 lines
27 KiB
C++
784 lines
27 KiB
C++
//
|
|
// GameShare_Scene.cpp
|
|
// OnceAgain
|
|
//
|
|
// Created by mac on 14-3-6.
|
|
//
|
|
//
|
|
|
|
#include "GameShare_Scene.h"
|
|
#include "Gamelist.h"
|
|
#include "CircleScene.h"
|
|
#include "PlayerInfoManager.h"
|
|
#include "SpriteFrameManage.h"
|
|
#include "GameLayerCrazyMode.h"
|
|
#include "GameInfoManager.h"
|
|
#include "DaPaoScene.h"
|
|
#include "TaikoScene.h"
|
|
#include "PkSysManager.h"
|
|
#include "TimeUtil.h"
|
|
#include "GameUIExportJson.h"
|
|
#include "GameMedalLayer.h"
|
|
#include "MsgDefine.h"
|
|
#include "Scene_GameItem.h"
|
|
#include "GameLayerNewerGuide.h"
|
|
#include "AudioHelper.h"
|
|
#include "DataManager.h"
|
|
#include "EffectActionHelp.h"
|
|
#include "RandomUtil.h"
|
|
#include "DialogManager.h"
|
|
#include "GameItemManager.h"
|
|
#include "TaskDefine.h"
|
|
|
|
|
|
enum Key_Sprite
|
|
{
|
|
Key_Time = 100,
|
|
Key_NewerHelp = 60000,
|
|
};
|
|
|
|
#define CrazyTag_Left 5001
|
|
#define CrazyTag_Right 5002
|
|
#define CrazyTag_Top 5003
|
|
#define CrazyTag_Bottom 5004
|
|
#define CrazyTag_Text 5005
|
|
|
|
GameShare_Scene::GameShare_Scene(void):mpUILayer(NULL),mbShowReadyGoAni(false)
|
|
{
|
|
batterSprite = NULL;
|
|
boom = NULL;
|
|
pTimeProcessLayer = NULL;
|
|
pauseMenuItem = NULL;
|
|
pMenu = NULL;
|
|
gameShare_Score = NULL;
|
|
gameLayerPause = NULL;
|
|
batter = 0;
|
|
score = 0;
|
|
energy = 0;
|
|
mTime = 0;
|
|
game_mode = Mode_Normal;
|
|
}
|
|
GameShare_Scene::~GameShare_Scene(void)
|
|
{
|
|
//wsp
|
|
//superItem->release();
|
|
gameLayerPause->release();
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
|
|
CCNotificationCenter::sharedNotificationCenter()->removeAllObservers(this);
|
|
}
|
|
CCScene* GameShare_Scene::scene()
|
|
{
|
|
// 'scene' Automatic release memory
|
|
CCScene *scene = CCScene::create();
|
|
// 'layer' Automatic release memory
|
|
GameShare_Scene *layer = GameShare_Scene::create();
|
|
scene->addChild(layer);
|
|
return scene;
|
|
}
|
|
|
|
bool GameShare_Scene::init()
|
|
{
|
|
if (!CCLayer::init()) {
|
|
return false;
|
|
}
|
|
CRandomUtil::InitRandom();
|
|
//初始化疯狂模式
|
|
//Crazy_Init();
|
|
addMoney = 0;
|
|
|
|
this->initBgView();
|
|
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
|
|
|
|
//添加炸弹
|
|
boom = GameShare_Boom::create();
|
|
boom->setPosition(ccp(visibleSize.width/2-265, visibleSize.height/2+285));
|
|
boom->setMaxEnergy(BOOM_MAXENERGY);
|
|
this->addChild(boom,Tag_Max);
|
|
|
|
//添加时间条.
|
|
pTimeProcessLayer = GameShare_TimeProcess::create();
|
|
pTimeProcessLayer->setTag(Key_Time);
|
|
this->addChild(pTimeProcessLayer,Tag_Max);
|
|
|
|
|
|
//暂停按键
|
|
pauseMenuItem = CCMenuItemImage::create();
|
|
//pauseMenuItem->setNormalSpriteFrame(GameShare_Texture::sharedTexture()->GetSpriteFrameByCCRect(akoopang_image, CCRect(402, 1785, 88, 80)));
|
|
pauseMenuItem->setNormalSpriteFrame(CCSpriteFrameManage::getInstance()->spriteFrameByName("common/pause.png"));
|
|
pauseMenuItem->setTarget(this, menu_selector(GameShare_Scene::menuPauseCallBack));
|
|
pauseMenuItem->setAnchorPoint(ccp(0, 0));
|
|
pauseMenuItem->setPosition(ccp(0, visibleSize.height-pauseMenuItem->getContentSize().height));
|
|
// pauseMenuItem->setVisible(false);
|
|
pMenu = CCMenu::create(pauseMenuItem, NULL);
|
|
pMenu->setPosition(ccp(0, 0));
|
|
pMenu->setVisible(false);
|
|
pMenu->setTouchEnabled(false);
|
|
this->addChild(pMenu,Tag_Max);
|
|
|
|
//分数
|
|
gameShare_Score = GameShare_Score::create();
|
|
gameShare_Score->setPosition(ccp(visibleSize.width-20, visibleSize.height /*- gameShare_Score->getBg()->getContentSize().height/2*/));
|
|
this->addChild(gameShare_Score,Tag_Max);
|
|
|
|
//连击
|
|
batterSprite = GameShare_Batter::create();
|
|
batterSprite->setPosition(ccp(visibleSize.width/2 - batterSprite->getRealWidth()/2, visibleSize.height - 287 - 26));
|
|
batterSprite->setVisible(false);
|
|
// batterSprite->setBatter(50);
|
|
this->addChild(batterSprite,Tag_Max);
|
|
|
|
//暂停按钮.
|
|
gameLayerPause = GameShare_Pause::create();
|
|
gameLayerPause->retain();
|
|
gameLayerPause->setNewGameCallbackFunc(this, callfuncO_selector(GameShare_Scene::menuNewCallBack));
|
|
gameLayerPause->setQuitGameCallbackFunc(this, callfuncO_selector(GameShare_Scene::menuQuitCallBack));
|
|
gameLayerPause->setContinueCallbackFunc(this, callfuncO_selector(GameShare_Scene::menuContinueCallBack));
|
|
gameLayerPause->setHelpCallbackFunc(this, callfuncO_selector(GameShare_Scene::menuHelpCallfunc));
|
|
//注册监听
|
|
this->initListerner();
|
|
|
|
//
|
|
mpUILayer = CGameLayerCrazyMode::create();
|
|
mpUILayer->setVisible(false);
|
|
this->addChild(mpUILayer, 5);
|
|
// CCDirector::sharedDirector()->pause();
|
|
// scheduleOnce(schedule_selector(GameShare_Scene::popSuperItem), 1.0);
|
|
|
|
// //纪录体力消耗时间
|
|
if (CPlayerInfoMan::sharedInstance().getPlayerInfo().nPower == 5) {
|
|
// CPlayerInfoMan::sharedInstance().getPlayerInfo().riceEndTime = CTimeUtil::GetSystemTimeStamp();
|
|
CPlayerInfoMan::sharedInstance().getPlayerInfo().riceEndTime = 480;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void GameShare_Scene::setBackgroundMusic(const char *pszFilename)
|
|
{
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(CCFileUtils::sharedFileUtils()->fullPathFromRelativeFile(pszFilename,""));
|
|
if (!CocosDenshion::SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()) {
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic(std::string(CCFileUtils::sharedFileUtils()->fullPathFromRelativeFile(pszFilename,"")).c_str(), true);
|
|
}
|
|
}
|
|
void GameShare_Scene::sureSuperItem(cocos2d::CCObject *object)
|
|
{
|
|
GameLayer_SuperItem* p = dynamic_cast<GameLayer_SuperItem*>(object);
|
|
if(p == NULL)
|
|
return;
|
|
|
|
clickLayerClose();
|
|
if (p->getEvent() == eSuperItemBuyCrazy)
|
|
{
|
|
if(CItemMan::sharedInstance().useItem(ItemTag_15))
|
|
{
|
|
sItemData* pItem = CItemMan::sharedInstance().getSuperItem(ItemTag_15)->pData;
|
|
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameShare_Scene::msgHanlde_GameTimeOutPer), kGameTimeOutNamePer, NULL);
|
|
time_addSecond(5);
|
|
CItemMan::sharedInstance().removeSuperItem(ItemTag_15);
|
|
CItemMan::sharedInstance().setGameOverBuyItemCounter(CItemMan::sharedInstance().getGameOverBuyItemCounter() + 1);
|
|
resurgeCallfunc(1);
|
|
}else if(CItemMan::sharedInstance().useItem(ItemTag_16))
|
|
{
|
|
sItemData* pItem = CItemMan::sharedInstance().getSuperItem(ItemTag_16)->pData;
|
|
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameShare_Scene::msgHanlde_GameTimeOutPer), kGameTimeOutNamePer, NULL);
|
|
time_addSecond(10);
|
|
CItemMan::sharedInstance().removeSuperItem(ItemTag_16);
|
|
CItemMan::sharedInstance().setGameOverBuyItemCounter(CItemMan::sharedInstance().getGameOverBuyItemCounter() + 1);
|
|
resurgeCallfunc(2);
|
|
}
|
|
}
|
|
}
|
|
void GameShare_Scene::resurgeCallfunc(int nTimes)
|
|
{
|
|
|
|
}
|
|
void GameShare_Scene::cancelSuperItem(CCObject* object)
|
|
{
|
|
GameLayer_SuperItem* p = dynamic_cast<GameLayer_SuperItem*>(object);
|
|
if(p == NULL)
|
|
return;
|
|
clickLayerClose();
|
|
if (p->getEvent() == eSuperItemBuyCrazy)
|
|
{
|
|
msgHanlde_GameTimeOut(NULL);
|
|
}
|
|
}
|
|
void GameShare_Scene::showReadyGo(CCObject* p)
|
|
{
|
|
mbShowReadyGoAni = false;
|
|
CCSize visibleSize= CCDirector::sharedDirector()->getVisibleSize();
|
|
CCActionInterval* rpAction = CCSequence::create(CCShow::create(), CCScaleTo::create(1, 0.7), CCHide::create(), NULL);
|
|
//CCSprite *readySprite = GameShare_Texture::sharedTexture()->GetSpriteByCCRect(akooakoo_image, CCRect(2, 462, 323, 281));
|
|
CCSprite *readySprite = CCSprite::createWithSpriteFrame(CCSpriteFrameManage::getInstance()->spriteFrameByName("common/ready.png"));
|
|
readySprite->runAction(rpAction);
|
|
readySprite->setVisible(false);
|
|
readySprite->setPosition(ccp(visibleSize.width/2, visibleSize.height/2));
|
|
this->addChild(readySprite,Tag_Max);
|
|
|
|
|
|
rpAction = CCSequence::create(CCDelayTime::create(1), CCShow::create(), CCScaleTo::create(0.8, 0.7), CCHide::create(), NULL);
|
|
//CCSprite *goSprite = GameShare_Texture::sharedTexture()->GetSpriteByCCRect(akooakoo_image, CCRect(421, 604, 323, 281));
|
|
CCSprite *goSprite = CCSprite::createWithSpriteFrame(CCSpriteFrameManage::getInstance()->spriteFrameByName("common/start.png"));
|
|
goSprite->setVisible(false);
|
|
goSprite->setPosition(ccp(visibleSize.width/2, visibleSize.height/2));
|
|
goSprite->runAction(rpAction);
|
|
this->addChild(goSprite,Tag_Max);
|
|
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(muEF_play_ready_go, false);
|
|
scheduleOnce(schedule_selector(GameShare_Scene::readyGoCallBack), 2);
|
|
|
|
//add start score
|
|
if(CItemMan::sharedInstance().useItem(ItemTag_12))
|
|
{
|
|
setScore(500000);
|
|
}else if (CItemMan::sharedInstance().useItem(ItemTag_13))
|
|
{
|
|
}
|
|
|
|
}
|
|
void GameShare_Scene::readyGoCallBack(float dt)
|
|
{
|
|
pTimeProcessLayer->BeginTimeProcess();
|
|
pMenu->setVisible(true);
|
|
pMenu->setTouchEnabled(true);
|
|
scheduleOnce(schedule_selector(GameShare_Scene::startGame), 0);
|
|
}
|
|
void GameShare_Scene::startGame(float dt){
|
|
|
|
}
|
|
void GameShare_Scene::initBgView()
|
|
{
|
|
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
|
|
CCSprite* pSprite = CCSprite::create();
|
|
|
|
// position the sprite on the center of the screen
|
|
pSprite->setPosition(ccp(visibleSize.width/2 , visibleSize.height/2));
|
|
|
|
// add the sprite as a child to this layer
|
|
this->addChild(pSprite, 0);
|
|
}
|
|
#pragma mark Public
|
|
void GameShare_Scene::time_addSecond(unsigned int second)
|
|
{
|
|
pTimeProcessLayer->AddSeconds(second);
|
|
}
|
|
void GameShare_Scene::setScore(unsigned long score)
|
|
{
|
|
this->score = score;
|
|
gameShare_Score->setScore(this->score);
|
|
}
|
|
void GameShare_Scene::setBatter(unsigned int batter)
|
|
{
|
|
this->batter = batter;
|
|
batterSprite->setBatter(batter);
|
|
}
|
|
void GameShare_Scene::boom_addEnergy(unsigned int energy)
|
|
{
|
|
this->energy += energy;
|
|
boom->addEnergy(energy);
|
|
}
|
|
void GameShare_Scene::boom_setEnergy(unsigned int energy)
|
|
{
|
|
this->energy = energy;
|
|
boom->setEnergy(energy);
|
|
}
|
|
void GameShare_Scene::boom_setMaxBoomEnergy(unsigned int maxBoom)
|
|
{
|
|
boom->setMaxEnergy(maxBoom);
|
|
}
|
|
|
|
|
|
//疯狂模式
|
|
//开始疯狂模式
|
|
/*
|
|
* @rfDurationTime 疯狂模式持续时间 每0.1检测一次 到点后结束 发送
|
|
*/
|
|
|
|
void GameShare_Scene::Crazy_Start(float rfDurationTime,ECrazyMode eMode)
|
|
{
|
|
unschedule(schedule_selector(GameShare_Scene::Crazy_Check));
|
|
schedule(schedule_selector(GameShare_Scene::Crazy_Check), 0.1);
|
|
m_fCrazyTime = rfDurationTime;
|
|
m_fCrazyNowTime = 0;
|
|
|
|
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
|
|
|
|
mpUILayer->pause();
|
|
mpUILayer->play(eMode);
|
|
mpUILayer->setVisible(true);
|
|
CBaseData* p = CDataManager::GetInstance().getGameData();
|
|
if (p) {
|
|
if(p->getLastCrazyTime() == -1.f)
|
|
{
|
|
p->setLastCrazyTime(CTimeUtil::GetCocos2dxTimer());
|
|
// CCLog("22222222222---%lf",p->getLastCrazyTime());
|
|
}
|
|
}
|
|
}
|
|
void GameShare_Scene::Crazy_SetTime(float rfDurationTime)
|
|
{
|
|
unschedule(schedule_selector(GameShare_Scene::Crazy_Check));
|
|
m_fCrazyTime = rfDurationTime;
|
|
m_fCrazyNowTime = 0;
|
|
schedule(schedule_selector(GameShare_Scene::Crazy_Check), 0.1);
|
|
|
|
}
|
|
//结束疯狂模式
|
|
void GameShare_Scene::Crazy_End()
|
|
{
|
|
mpUILayer->pause();
|
|
mpUILayer->setVisible(false);
|
|
//发送结束通知
|
|
CCNotificationCenter::sharedNotificationCenter()->postNotification(kCrazyTimeOut);
|
|
CBaseData* p = CDataManager::GetInstance().getGameData();
|
|
if (p) {
|
|
if(p->getLastCrazyTime() != -1.f)
|
|
{
|
|
CTaskManProce(eDayTaskTypeShare_6, (CTimeUtil::GetCocos2dxTimer() - p->getLastCrazyTime())/1000.f);
|
|
p->setLastCrazyTime(-1);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//检测疯狂模式
|
|
void GameShare_Scene::Crazy_Check(float rfParas)
|
|
{
|
|
m_fCrazyNowTime += 0.1;
|
|
if(m_fCrazyNowTime >= m_fCrazyTime)
|
|
{
|
|
//结束疯狂模式
|
|
Crazy_End();
|
|
unschedule(schedule_selector(GameShare_Scene::Crazy_Check));
|
|
}
|
|
}
|
|
|
|
|
|
//初始化疯狂模式
|
|
void GameShare_Scene::Crazy_Init()
|
|
{
|
|
ccBlendFunc ccb = {GL_SRC_ALPHA, GL_ONE};
|
|
cocos2d::CCSprite* m_pSpriteFireLeft;
|
|
cocos2d::CCSprite* m_pSpriteFireRight;
|
|
cocos2d::CCSprite* m_pSpriteFireTop;
|
|
cocos2d::CCSprite* m_pSpriteFireBottom;
|
|
cocos2d::CCSprite* m_pCrazyText;
|
|
|
|
CCRect rcFire(1, 1, 47, 1032);
|
|
m_pSpriteFireLeft = GameShare_Texture::sharedTexture()->GetSpriteByCCRect(akoopang_image, rcFire);
|
|
m_pSpriteFireLeft->setVisible(false);
|
|
m_pSpriteFireLeft->setBlendFunc(ccb);
|
|
m_pSpriteFireLeft->setTag(CrazyTag_Left);
|
|
|
|
m_pSpriteFireRight = GameShare_Texture::sharedTexture()->GetSpriteByCCRect(akoopang_image, rcFire);
|
|
m_pSpriteFireRight->setVisible(false);
|
|
m_pSpriteFireRight->setBlendFunc(ccb);
|
|
m_pSpriteFireRight->setFlipX(true);
|
|
m_pSpriteFireRight->setTag(CrazyTag_Right);
|
|
|
|
|
|
m_pSpriteFireTop = GameShare_Texture::sharedTexture()->GetSpriteByCCRect(akoopang_image, rcFire);
|
|
m_pSpriteFireTop->setVisible(false);
|
|
m_pSpriteFireTop->setBlendFunc(ccb);
|
|
m_pSpriteFireTop->setRotation(90);
|
|
m_pSpriteFireTop->setTag(CrazyTag_Top);
|
|
|
|
|
|
m_pSpriteFireBottom = GameShare_Texture::sharedTexture()->GetSpriteByCCRect(akoopang_image, rcFire);
|
|
m_pSpriteFireBottom->setVisible(false);
|
|
m_pSpriteFireBottom->setBlendFunc(ccb);
|
|
m_pSpriteFireBottom->setRotation(-90);
|
|
m_pSpriteFireBottom->setTag(CrazyTag_Bottom);
|
|
|
|
this->addChild(m_pSpriteFireLeft, 5);
|
|
this->addChild(m_pSpriteFireRight, 5);
|
|
this->addChild(m_pSpriteFireTop, 5);
|
|
this->addChild(m_pSpriteFireBottom, 5);
|
|
|
|
//crazy text
|
|
CCRect rcCrazyText(75, 181, 422, 140);
|
|
m_pCrazyText = GameShare_Texture::sharedTexture()->GetSpriteByCCRect(akoopang_image, rcCrazyText);
|
|
m_pCrazyText->setVisible(true);
|
|
m_pCrazyText->setTag(CrazyTag_Text);
|
|
this->addChild(m_pCrazyText, 5);
|
|
|
|
}
|
|
|
|
//重新计时
|
|
void GameShare_Scene::Crazy_ReStart()
|
|
{
|
|
m_fCrazyNowTime = 0;
|
|
}
|
|
|
|
|
|
#pragma menuCallBack
|
|
void GameShare_Scene::menuPauseCallBack(cocos2d::CCObject *pSender)
|
|
{
|
|
this->operateAllSchedulerAndActions(this, eSwitchPause);
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
|
|
this->addChild(gameLayerPause,Tag_Max);
|
|
pMenu->setTouchEnabled(false);
|
|
}
|
|
void GameShare_Scene::menuHelpCallfunc(CCObject* pSender)
|
|
{
|
|
if(gameLayerPause)
|
|
gameLayerPause->removeFromParent();
|
|
playNewerHelp();
|
|
}
|
|
|
|
|
|
void GameShare_Scene::menuContinueCallBack(cocos2d::CCObject *pSender)
|
|
{
|
|
gameLayerPause->removeFromParent();
|
|
menuContinueClick();
|
|
}
|
|
void GameShare_Scene::menuContinueClick()
|
|
{
|
|
this->operateAllSchedulerAndActions(this, eSwitcResume);
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
|
|
pMenu->setTouchEnabled(true);
|
|
}
|
|
void GameShare_Scene::addTouchDelegate()
|
|
{
|
|
if (GameShare_Global::shareGlobal()->gameType == Game_Memory) {
|
|
CCDirector::sharedDirector() ->getTouchDispatcher()->addStandardDelegate(this, 0);
|
|
}
|
|
else {
|
|
CCDirector::sharedDirector() ->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
|
|
}
|
|
}
|
|
void GameShare_Scene::removeTouchDelegate()
|
|
{
|
|
if (GameShare_Global::shareGlobal()->gameType == Game_Memory) {
|
|
CCDirector::sharedDirector() ->getTouchDispatcher()->removeDelegate(this);
|
|
}
|
|
else {
|
|
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
|
|
}
|
|
}
|
|
void GameShare_Scene::menuQuitCallBack(cocos2d::CCObject *pSender)
|
|
{
|
|
CCDirector::sharedDirector()->popScene();
|
|
}
|
|
void GameShare_Scene::menuNewCallBack(cocos2d::CCObject *pSender)
|
|
{
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
|
|
// CCScene *gameScene = GameShare_Scene::getGameSceneByType(GameShare_Global::shareGlobal()->gameType);
|
|
// CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(0.4, gameScene));
|
|
|
|
if (GameShare_Global::shareGlobal()->loginType != LoginType_Tourist) {
|
|
CCScene *scene_GameItem = Scene_GameItem::scene();
|
|
CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(0.4, scene_GameItem));
|
|
}else{
|
|
CCScene* scene = GameShare_Scene::getGameSceneByType(GameShare_Global::shareGlobal()->gameType);
|
|
CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(0.4, scene));
|
|
}
|
|
}
|
|
|
|
#pragma timer
|
|
void GameShare_Scene::initListerner()
|
|
{
|
|
//游戏结束发送信息通知.
|
|
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameShare_Scene::setScoreCallback), kSetScore, NULL);
|
|
|
|
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameShare_Scene::msgHanlde_GameTimeOut), kGameTimeOutName, NULL);
|
|
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameShare_Scene::msgHanlde_GameTimeOutPer), kGameTimeOutNamePer, NULL);
|
|
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameShare_Scene::msgHanlde_BoomFull), kGameBoomFull, NULL);
|
|
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameShare_Scene::msgHandle_CrazyTimeOut), kCrazyTimeOut, NULL);
|
|
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameShare_Scene::noticeTimeInterval), kTimeInterval, NULL);
|
|
}
|
|
|
|
//疯狂模式结束消息通知
|
|
void GameShare_Scene::msgHandle_CrazyTimeOut(CCObject* obj)
|
|
{
|
|
|
|
}
|
|
void GameShare_Scene::noticeTimeInterval(CCObject* obj)
|
|
{
|
|
if (((GameShare_TimeProcess*)obj)->GetSecondsRemain() <= 3)
|
|
{
|
|
if (CItemMan::sharedInstance().useItem(ItemTag_11))
|
|
{
|
|
time_addSecond(10.0);
|
|
useTimeEff();
|
|
}
|
|
|
|
}
|
|
}
|
|
void GameShare_Scene::msgHanlde_BoomFull(cocos2d::CCObject *obj)
|
|
{
|
|
|
|
}
|
|
|
|
void GameShare_Scene::msgHanlde_GameTimeOut(CCObject* obj)
|
|
{
|
|
//停止背景音乐
|
|
// CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true);
|
|
// CCNotificationCenter::sharedNotificationCenter()->removeObserver(this, kGameTimeOutName);
|
|
//
|
|
// //time over audio
|
|
// unschedule(schedule_selector(GameShare_TimeProcess::TimeInterval));
|
|
// CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(muEF_play_time_up, false);
|
|
//
|
|
// //time over action
|
|
// CCActionInterval* rpAction = CCSequence::create(CCShow::create(), CCScaleTo::create(0.5, 0.9), CCScaleTo::create(0.5, 1.1), CCDelayTime::create(2), CCHide::create(),
|
|
// CCCallFunc::create(this, callfunc_selector(GameShare_Scene::callback_TimeOut)), NULL);
|
|
// pTimeProcessLayer->getTimeOver()->runAction(rpAction);
|
|
// //this->setTouchEnabled(false);
|
|
// removeTouchDelegate();
|
|
CTaskMan::sharedInstance().setAddMoney(addMoney);
|
|
CTaskManProceDt(eDayTaskTypeShare_2,1);
|
|
requestResult();
|
|
//save game every day task data
|
|
CTaskMan::sharedInstance().requestSaveDayTaskComplateState();
|
|
|
|
}
|
|
void GameShare_Scene::msgHanlde_GameTimeOutPer(CCObject* obj)
|
|
{
|
|
operateAllSchedulerAndActions(this, eSwitchPause);
|
|
operateAllSchedulerAndActions(gameShare_Score, eSwitcResume);
|
|
//停止背景音乐
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true);
|
|
CCNotificationCenter::sharedNotificationCenter()->removeObserver(this, kGameTimeOutNamePer);
|
|
//time over audio
|
|
unschedule(schedule_selector(GameShare_TimeProcess::TimeInterval));
|
|
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(muEF_play_time_up, false);
|
|
|
|
//time over action
|
|
CCActionInterval* rpAction = CCSequence::create(CCShow::create(), CCScaleTo::create(0.5, 0.9), CCScaleTo::create(0.5, 1.1), CCDelayTime::create(2), CCHide::create(),
|
|
CCCallFunc::create(this, callfunc_selector(GameShare_Scene::callback_TimeOut)), NULL);
|
|
pTimeProcessLayer->getTimeOver()->runAction(rpAction);
|
|
removeTouchDelegate();
|
|
}
|
|
void GameShare_Scene::callback_TimeOut()
|
|
{
|
|
addTouchDelegate();
|
|
if (CPlayerInfoMan::sharedInstance().getLoinStatus()) {
|
|
setScoreCallback(NULL);
|
|
return ;
|
|
}
|
|
int nCounter = CItemMan::sharedInstance().getGameOverBuyItemCounter();
|
|
if(nCounter == 0)
|
|
_showSuperItemLayer(ItemTag_15,eSuperItemBuyCrazy);
|
|
else if(nCounter == 1)
|
|
_showSuperItemLayer(ItemTag_16,eSuperItemBuyCrazy);
|
|
else{
|
|
msgHanlde_GameTimeOut(NULL);
|
|
}
|
|
}
|
|
void GameShare_Scene::_showSuperItemLayer(int nItemId,int nEvent)
|
|
{
|
|
GameLayer_SuperItem* pSuperItem = GetDlgPtr(GameLayer_SuperItem);
|
|
pSuperItem->setItem(nItemId);
|
|
pSuperItem->setEvent((ESuperItemEven)nEvent);
|
|
pSuperItem->setSureCallbackFunc(this, callfuncO_selector(GameShare_Scene::sureSuperItem),callfuncO_selector(GameShare_Scene::cancelSuperItem));
|
|
_addShowlayer(pSuperItem);
|
|
_nextShowLayer();
|
|
}
|
|
void GameShare_Scene::requestResult()
|
|
{
|
|
//发送pk
|
|
if (CPkSysManager::sharedInstance().pkType == PkTypeSend) {
|
|
CPkSysManager::sharedInstance().RequestSendPk(CPkSysManager::sharedInstance().playerId, GameShare_Global::shareGlobal()->gameType, score);
|
|
}
|
|
if (CPkSysManager::sharedInstance().pkType == PkTypeReceive) {
|
|
CPkSysManager::sharedInstance().RequestReceivePk(CPkSysManager::sharedInstance().pkId, score);
|
|
}
|
|
//设置分数
|
|
CGameInfoMan::sharedInstance().RequestSetGameMaxScore(GameShare_Global::shareGlobal()->gameType, score);
|
|
}
|
|
void GameShare_Scene::setScoreCallback(cocos2d::CCObject *pSender)
|
|
{
|
|
CCScene* scene = CCScene::create();
|
|
Scene_GameOver* layer = Scene_GameOver::create();
|
|
layer->setResultScore(score);
|
|
layer->setMaxScore(Maxscore);
|
|
scene->addChild(layer);
|
|
CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(0.5, scene));
|
|
}
|
|
|
|
void GameShare_Scene::creatGameOverLayer(CCObject *p) {
|
|
CCScene* scene = CCScene::create();
|
|
Scene_GameOver* layer = Scene_GameOver::create();
|
|
layer->setResultScore(score);
|
|
layer->setMaxScore(Maxscore);
|
|
scene->addChild(layer);
|
|
CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(0.5, scene));
|
|
}
|
|
|
|
void GameShare_Scene::useTimeEff()
|
|
{
|
|
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
|
|
// CCSprite* p = CCSprite::createWithSpriteFrameName("GameItem/400003.png");
|
|
// p->setPosition(ccp(visibleSize.width/2,visibleSize.height/2 + 283));
|
|
// this->addChild(p,Tag_Max);
|
|
// p->setOpacity(254);
|
|
// p->runAction(CCSequence::create(CCShow::create(),CCFadeOut::create(1.5f),CCHide::create(),NULL) );
|
|
CEffectActionHelper::play(eHelpTime,this,ccp(visibleSize.width/2,visibleSize.height/2 + 283));
|
|
}
|
|
#pragma mark touch
|
|
bool GameShare_Scene::ccTouchBegan(CCTouch* touch, CCEvent* event)
|
|
{
|
|
this->ccTouchMoved(touch, event);
|
|
return true;
|
|
}
|
|
void GameShare_Scene::ccTouchMoved(cocos2d::CCTouch *touch, cocos2d::CCEvent *event)
|
|
{
|
|
|
|
}
|
|
void GameShare_Scene::ccTouchEnded(cocos2d::CCTouch *touch, cocos2d::CCEvent *event)
|
|
{
|
|
|
|
}
|
|
|
|
void GameShare_Scene::onEnter()
|
|
{
|
|
CCLayer::onEnter();
|
|
//Register click event
|
|
addTouchDelegate();
|
|
|
|
//新手指引
|
|
if(!CDataManager::GetInstance().getGameNewerGuideState(GameShare_Global::shareGlobal()->gameType))
|
|
//if(1)
|
|
{
|
|
//playNewerHelp(callfuncO_selector(GameShare_Scene::showReadyGo));
|
|
CGameLayerNewerGuide* pNewer = CGameLayerNewerGuide::create();
|
|
pNewer->setType(eNewerGuideStart);
|
|
_addShowlayer(pNewer);
|
|
CDataManager::GetInstance().setGameNewerGuideState(GameShare_Global::shareGlobal()->gameType,true);
|
|
}
|
|
if (CRandomUtil::RandomRange(0,100) < 30 && !CPlayerInfoMan::sharedInstance().getLoinStatus()){
|
|
GameLayer_SuperItem* pSuperItem = GetDlgPtr(GameLayer_SuperItem);
|
|
pSuperItem->setItem(CItemMan::sharedInstance().randSuperItem());
|
|
pSuperItem->setSureCallbackFunc(this, callfuncO_selector(GameShare_Scene::sureSuperItem),callfuncO_selector(GameShare_Scene::cancelSuperItem));
|
|
_addShowlayer(pSuperItem);
|
|
}
|
|
if(!_nextShowLayer())
|
|
{
|
|
this->operateAllSchedulerAndActions(this, eSwitcResume);
|
|
showReadyGo(NULL);
|
|
}else
|
|
mbShowReadyGoAni = true;
|
|
}
|
|
void GameShare_Scene::_addShowlayer(CCLayer* pLayer)
|
|
{
|
|
mArrLayerShow.addObject(pLayer);
|
|
}
|
|
void GameShare_Scene::clickLayerClose()
|
|
{
|
|
if(!_nextShowLayer())
|
|
{
|
|
menuContinueClick();
|
|
if(mbShowReadyGoAni)
|
|
showReadyGo(NULL);
|
|
}
|
|
}
|
|
bool GameShare_Scene::_nextShowLayer()
|
|
{
|
|
pMenu->setTouchEnabled(true);
|
|
if (mArrLayerShow.count()<=0)
|
|
return false;
|
|
CCLayer* pLayer = dynamic_cast<CCLayer*>(mArrLayerShow.objectAtIndex(0)) ;
|
|
if (pLayer){
|
|
this->operateAllSchedulerAndActions(this, eSwitchPause);
|
|
CAudioHelper::stopBackgroundSound();
|
|
this->addChild(pLayer,Tag_Max);
|
|
mArrLayerShow.removeObjectAtIndex(0);
|
|
pMenu->setTouchEnabled(false);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void GameShare_Scene::operateAllSchedulerAndActions(ESwitchFlag flag/* =eSwitcResume */)
|
|
{
|
|
operateAllSchedulerAndActions(this,flag);
|
|
}
|
|
void GameShare_Scene::playNewerHelp(SEL_CallFuncO pCallfunc)
|
|
{
|
|
this->operateAllSchedulerAndActions(this, eSwitchPause);
|
|
CAudioHelper::stopBackgroundSound();
|
|
CGameLayerNewerGuide* pNewer = CGameLayerNewerGuide::create();
|
|
pNewer->setTag(Key_NewerHelp);
|
|
_addShowlayer(pNewer);
|
|
_nextShowLayer();
|
|
}
|
|
void GameShare_Scene::onExit()
|
|
{
|
|
//Overflow click event
|
|
removeTouchDelegate();
|
|
// CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
|
|
CCLayer::onExit();
|
|
#ifdef _WIN32
|
|
//test
|
|
//CTaskMan::sharedInstance().requestSaveDayTaskComplateState();
|
|
#endif
|
|
//CTaskMan::sharedInstance().requestSaveDayTaskComplateState();
|
|
//clear data
|
|
CItemMan::sharedInstance().resetInside();
|
|
CTaskMan::sharedInstance().resetInside();
|
|
}
|
|
|
|
CCScene* GameShare_Scene::getGameSceneByType(e_GameType gameType)
|
|
{
|
|
CCScene *gameScene;
|
|
switch (gameType) {
|
|
case Game_Link:
|
|
gameScene = GameNewLinker::createScene();
|
|
GameShare_Global::shareGlobal()->gameType = Game_Link;
|
|
break;
|
|
case Game_Memory:
|
|
gameScene = Game_Memory::scene();
|
|
GameShare_Global::shareGlobal()->gameType = Game_Memory;
|
|
break;
|
|
case Game_Fruit:
|
|
gameScene = CGameFruitScene ::scene();
|
|
GameShare_Global::shareGlobal()->gameType = Game_Fruit;
|
|
break;
|
|
case Game_Jelly:
|
|
gameScene = CRightTouchScene::create();
|
|
GameShare_Global::shareGlobal()->gameType = Game_Jelly;
|
|
break;
|
|
case Game_TaiKo:
|
|
gameScene = CTaikoScene::scene();
|
|
GameShare_Global::shareGlobal()->gameType = Game_TaiKo;
|
|
break;
|
|
case Game_Null:
|
|
gameScene = GameDemo::scene();
|
|
GameShare_Global::shareGlobal()->gameType = Game_Null;
|
|
break;
|
|
case Game_SanXiao:
|
|
gameScene = GameSanXiaoLayer::createScene();
|
|
GameShare_Global::shareGlobal()->gameType = Game_SanXiao;
|
|
break;
|
|
default:
|
|
gameScene = GameDemo::scene();
|
|
GameShare_Global::shareGlobal()->gameType = Game_Null;
|
|
break;
|
|
}
|
|
|
|
return gameScene;
|
|
}
|
|
|
|
void GameShare_Scene::operateAllSchedulerAndActions(cocos2d::CCNode* node, ESwitchFlag flag)
|
|
{
|
|
if(node->isRunning()){
|
|
switch (flag) {
|
|
case eSwitchPause:
|
|
node->pauseSchedulerAndActions();
|
|
break;
|
|
case eSwitcResume:
|
|
node->resumeSchedulerAndActions();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
CCArray* array = node->getChildren();
|
|
if(array != NULL && array->count()>0){
|
|
CCObject* iterator;
|
|
CCARRAY_FOREACH(array, iterator){
|
|
CCNode* child = (CCNode*)iterator;
|
|
this->operateAllSchedulerAndActions(child, flag);
|
|
}
|
|
}
|
|
}
|
|
} |