mirror of
https://github.com/wu736139669/SmallGame_Cocos2dx.git
synced 2026-08-05 06:23:09 +00:00
505 lines
17 KiB
C++
505 lines
17 KiB
C++
//
|
|
// GameLayer_Resource.cpp
|
|
// OnceAgain
|
|
//
|
|
// Created by mac on 14-3-25.
|
|
//
|
|
//
|
|
|
|
#include "GameLayer_Resource.h"
|
|
#include "PlayerInfoManager.h"
|
|
#include "NetPacket.h"
|
|
#include "MsgDefine.h"
|
|
#include "GameLayer_Tag.h"
|
|
#include "GameShare_Scene.h"
|
|
#include "GameFruitScene.h"
|
|
IMPLEMENT_DLG_ID(GameLayer_Resource,Resource_Tag);
|
|
|
|
GameLayer_Resource::~GameLayer_Resource()
|
|
{
|
|
GUIReader::shareReader()->purgeGUIReader();
|
|
DictionaryHelper::shareHelper()->purgeDictionaryHelper();
|
|
ActionManager::shareManager()->purgeActionManager();
|
|
}
|
|
void GameLayer_Resource::onEnter()
|
|
{
|
|
CCLayer::onEnter();
|
|
this->reSetDiamondNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nGem);
|
|
this->reSetGoldNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nMoney);
|
|
this->reSetLv(CPlayerInfoMan::sharedInstance().getPlayerInfo().nLevel, CPlayerInfoMan::sharedInstance().getPlayerInfo().nExp);
|
|
|
|
}
|
|
bool GameLayer_Resource::init()
|
|
{
|
|
if (!CCLayer::init()) {
|
|
return false;
|
|
}
|
|
//系统设置界面.
|
|
gameResource = UILayer::create();
|
|
auto layout = dynamic_cast<Layout*>(GUIReader::shareReader()->widgetFromJsonFile("./CocoStudioResources/GameResource.json"));
|
|
gameResource->addWidget(layout);
|
|
// sysSet->setVisible(true);
|
|
this->addChild(gameResource, 0, 101);
|
|
|
|
|
|
UIImageView* goldPanel = dynamic_cast<UIImageView*>(gameResource->getWidgetByName("Gold_BgImg"));
|
|
// CCLOG("~~~~~~~~~~~~%d",CPlayerInfoMan::sharedInstance().getPlayerInfo().nMoney);
|
|
goldNum = this->getSpriteByScore(CPlayerInfoMan::sharedInstance().getPlayerInfo().nMoney);
|
|
goldNum->setScale(0.8);
|
|
goldNum->ignoreAnchorPointForPosition(false);
|
|
goldNum->setAnchorPoint(ccp(0.0, 0.0));
|
|
goldPanel->addRenderer(goldNum, 10);
|
|
|
|
UIImageView* diamondPanel = dynamic_cast<UIImageView*>(gameResource->getWidgetByName("Diamond_BgImg"));
|
|
diamondNum = this->getSpriteByScore(CPlayerInfoMan::sharedInstance().getPlayerInfo().nGem);
|
|
diamondNum->setScale(0.8);
|
|
diamondNum->ignoreAnchorPointForPosition(false);
|
|
diamondNum->setAnchorPoint(ccp(0.0, 0.0));
|
|
diamondPanel->addRenderer(diamondNum, 10);
|
|
|
|
|
|
|
|
UIImageView* levelPanel = dynamic_cast<UIImageView*>(gameResource->getWidgetByName("Level_FlowerImg"));
|
|
lvNum = this->getLvByNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nLevel);
|
|
lvNum -> setPosition(ccp(-8, -2));
|
|
lvNum -> setScale(1.2);
|
|
levelPanel->addRenderer(lvNum, 10);
|
|
|
|
//进度条.
|
|
UILoadingBar* experenceBar = dynamic_cast<UILoadingBar*>(gameResource->getWidgetByName("Level_Exprience"));
|
|
experenceBar->setPercent(CPlayerInfoMan::sharedInstance().getPlayerInfo().nExp);
|
|
|
|
|
|
|
|
UILabel *label = dynamic_cast<UILabel*>(gameResource -> getWidgetByName("Precentage"));
|
|
label -> setText("");
|
|
lvPrecentage = getLvPrecentageNumber((int)CPlayerInfoMan::sharedInstance().getPlayerInfo().nExp);
|
|
lvPrecentage -> setScale(0.2);
|
|
// lvPrecentage -> setPosition(label -> getPosition());
|
|
label -> addRenderer(lvPrecentage, 100);
|
|
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
void GameLayer_Resource::setVisible(bool visible)
|
|
{
|
|
CCLayer::setVisible(visible);
|
|
UIPanel* dayLoginPanel = dynamic_cast<UIPanel*>(gameResource->getWidgetByName("Panel"));
|
|
dayLoginPanel->setTouchEnable(visible);
|
|
}
|
|
|
|
void GameLayer_Resource::addGoldCallback(CCObject* target, SEL_CallFuncO callfun)
|
|
{
|
|
UIPanel* addGoldPanel = dynamic_cast<UIPanel*>(gameResource->getWidgetByName("GoldPanel"));
|
|
addGoldPanel->addReleaseEvent(target, callfun);
|
|
}
|
|
void GameLayer_Resource::addDiamondCallback(CCObject* target, SEL_CallFuncO callfun)
|
|
{
|
|
UIPanel* addGoldPanel = dynamic_cast<UIPanel*>(gameResource->getWidgetByName("DiamondPanel"));
|
|
addGoldPanel->addReleaseEvent(target, callfun);
|
|
}
|
|
bool GameLayer_Resource::onPackageFilter(void *pDataPkg) {
|
|
CResponsePacket* pPkt = (CResponsePacket*)pDataPkg;
|
|
unsigned int unMsgType = pPkt->getMsgType();
|
|
unsigned int unMsgCode = pPkt->getMsgCode();
|
|
//网络数据传输完成
|
|
if (pPkt->getDataState() == eNetMsgDataStateComplete)
|
|
{
|
|
//玩家系统.
|
|
if (unMsgType == eNetMsgTypePlayerSys)
|
|
{
|
|
if (unMsgCode == eNetMsgPlayerSysBugGem)
|
|
{
|
|
reSetDiamondNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nGem);
|
|
//CCScene *gameScene = GameShare_Scene::getGameSceneByType(Game_Fruit);
|
|
|
|
//CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(0.4, CGameFruitScene ::scene()));
|
|
|
|
}
|
|
if (unMsgCode == eNetMsgPlayerSysChgGold)
|
|
{
|
|
reSetDiamondNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nGem);
|
|
reSetGoldNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nMoney);
|
|
}
|
|
if (unMsgCode == eNetMsgPlayerSysChgTiLi)
|
|
{
|
|
reSetDiamondNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nGem);
|
|
}
|
|
}
|
|
//任务系统
|
|
if (unMsgType == eNetMsgTypeMissionSys) {
|
|
if (unMsgCode == eNetMsgMissionSysTask)
|
|
{
|
|
reSetDiamondNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nGem);
|
|
reSetGoldNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nMoney);
|
|
}
|
|
}
|
|
//道具系统
|
|
if (unMsgType == eNetMsgTypeItemSys) {
|
|
if (unMsgCode == eNetMsgMissionSysTask)
|
|
{
|
|
reSetDiamondNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nGem);
|
|
reSetGoldNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nMoney);
|
|
}
|
|
}
|
|
//强化系统
|
|
if (unMsgType == eNetMsgTypeIntensifySys) {
|
|
if (unMsgCode == eNetMsgItemSysBuy)
|
|
{
|
|
reSetDiamondNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nGem);
|
|
reSetGoldNum(CPlayerInfoMan::sharedInstance().getPlayerInfo().nMoney);
|
|
}
|
|
}
|
|
|
|
}
|
|
return true;
|
|
}
|
|
void GameLayer_Resource::reSetDiamondNum(long num)
|
|
{
|
|
if (diamondNum) {
|
|
// diamondNum->removeFromParent();
|
|
diamondNum->removeFromParentAndCleanup(true);
|
|
}
|
|
UIImageView* diamondPanel = dynamic_cast<UIImageView*>(gameResource->getWidgetByName("Diamond_BgImg"));
|
|
diamondNum = this->getSpriteByScore(num);
|
|
diamondNum->setScale(0.8);
|
|
diamondNum->ignoreAnchorPointForPosition(false);
|
|
diamondNum->setAnchorPoint(ccp(0.0, 0.0));
|
|
diamondNum->setPosition(ccp(10, 0));
|
|
diamondPanel->addRenderer(diamondNum, 10);
|
|
}
|
|
void GameLayer_Resource::reSetGoldNum(long num)
|
|
{
|
|
if (goldNum) {
|
|
goldNum->removeFromParentAndCleanup(true);
|
|
}
|
|
UIImageView* goldPanel = dynamic_cast<UIImageView*>(gameResource->getWidgetByName("Gold_BgImg"));
|
|
goldNum = this->getSpriteByScore(num);
|
|
goldNum->setScale(0.8);
|
|
goldNum->ignoreAnchorPointForPosition(false);
|
|
goldNum->setPosition(ccp(10, 0));
|
|
goldNum->setAnchorPoint(ccp(0.0, 0.0));
|
|
goldPanel->addRenderer(goldNum, 10);
|
|
|
|
|
|
}
|
|
|
|
void GameLayer_Resource::reSetLvPrecentageNumber(int num) {
|
|
if (lvPrecentage) {
|
|
lvPrecentage -> removeFromParentAndCleanup(true);
|
|
}
|
|
UILabel *label = dynamic_cast<UILabel*>(gameResource -> getWidgetByName("Precentage"));
|
|
label -> setText("");
|
|
lvPrecentage = getLvPrecentageNumber(num);
|
|
lvPrecentage -> setScale(0.2);
|
|
// lvPrecentage -> setPosition(label -> getPosition());
|
|
label -> addRenderer(lvPrecentage, 100);
|
|
}
|
|
|
|
void GameLayer_Resource::reSetLv(int num, float persent)
|
|
{
|
|
if (lvNum) {
|
|
lvNum->removeFromParentAndCleanup(true);
|
|
}
|
|
UIImageView* levelPanel = dynamic_cast<UIImageView*>(gameResource->getWidgetByName("Level_FlowerImg"));
|
|
lvNum = this->getLvByNum(num);
|
|
lvNum -> setScale(1.2);
|
|
lvNum -> setPosition(ccp(-8, -2));
|
|
levelPanel->addRenderer(lvNum, 10);
|
|
UILoadingBar* experenceBar = dynamic_cast<UILoadingBar*>(gameResource->getWidgetByName("Level_Exprience"));
|
|
|
|
experenceBar->setPercent(persent);
|
|
|
|
reSetLvPrecentageNumber((int)persent);
|
|
// str.initWithFormat("%.0lf%%", persent);
|
|
// label -> setText(str.getCString());
|
|
|
|
}
|
|
CCSprite* GameLayer_Resource::getSpriteByScore(long score)
|
|
{
|
|
|
|
long temp = score;
|
|
//位数,用于设置横坐标偏移量.
|
|
int digit = 0;
|
|
CCSprite* scroeSprite = CCSprite::create();
|
|
float offSetX = 20.0;
|
|
if (temp<0) {
|
|
return scroeSprite;
|
|
}
|
|
while (temp>0 || (digit==0 && temp==0)) {
|
|
int remainder = temp % 10;
|
|
temp = temp/10;
|
|
CCSprite *m_Sprite;
|
|
CCRect rc;
|
|
switch(remainder)
|
|
{
|
|
case 0:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumZero.png");
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumOne.png");
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumTwo.png");
|
|
break;
|
|
}
|
|
case 3:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumThree.png");
|
|
break;
|
|
}
|
|
case 4:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumFour.png");
|
|
break;
|
|
}
|
|
case 5:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumFive.png");
|
|
break;
|
|
}
|
|
case 6:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumSix.png");
|
|
break;
|
|
}
|
|
case 7:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumSeven.png");
|
|
break;
|
|
}
|
|
case 8:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumEight.png");
|
|
break;
|
|
}
|
|
case 9:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumNine.png");
|
|
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
m_Sprite = CCSprite::create("./CocoStudioResources/ResouceNumZero.png");
|
|
break;
|
|
}
|
|
}
|
|
m_Sprite->setPosition(ccp((digit)*(-offSetX), 0));
|
|
scroeSprite->addChild(m_Sprite);
|
|
digit++;
|
|
}
|
|
digit--;
|
|
// scroeSprite->setContentSize(CCSize(30.0*digit, 20));
|
|
CCArray* array = scroeSprite->getChildren();
|
|
for (int i=0; i<array->count(); i++) {
|
|
CCPoint point = ((CCSprite*)array->objectAtIndex(i))->getPosition();
|
|
point.x += (digit)*(offSetX/2.0);
|
|
((CCSprite*)array->objectAtIndex(i))->setPosition(point);
|
|
}
|
|
|
|
return scroeSprite;
|
|
}
|
|
|
|
CCSprite* GameLayer_Resource::getLvPrecentageNumber(int num) {
|
|
int temp =num;
|
|
//位数,用于设置横坐标偏移量.
|
|
int digit = 0;
|
|
CCSprite* scroeSprite = CCSprite::create();
|
|
float offSetX = 88.0;
|
|
while (temp>0 || (digit==0 && temp==0)) {
|
|
int remainder = temp % 10;
|
|
temp = temp/10;
|
|
CCSprite *m_Sprite;
|
|
CCRect rc;
|
|
switch(remainder)
|
|
{
|
|
case 0:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownZero.png");
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownOne.png");
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownTwo.png");
|
|
break;
|
|
}
|
|
case 3:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownThree.png");
|
|
break;
|
|
}
|
|
case 4:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownFour.png");
|
|
break;
|
|
}
|
|
case 5:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownFive.png");
|
|
break;
|
|
}
|
|
case 6:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownSix.png");
|
|
break;
|
|
}
|
|
case 7:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownSeven.png");
|
|
break;
|
|
}
|
|
case 8:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownEight.png");
|
|
break;
|
|
}
|
|
case 9:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownNine.png");
|
|
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownZero.png");
|
|
break;
|
|
}
|
|
}
|
|
|
|
m_Sprite->setPosition(ccp((digit)*(-offSetX), 0));
|
|
scroeSprite->addChild(m_Sprite);
|
|
digit++;
|
|
}
|
|
|
|
CCSprite* lvSprite = CCSprite::create("./numberBox/lightBrownPrecentage.png");
|
|
if(num<10)
|
|
lvSprite->setPosition(ccp((digit)*(offSetX)+25, 0));
|
|
else
|
|
lvSprite->setPosition(ccp((digit)*(offSetX) -55, 0));
|
|
scroeSprite->addChild(lvSprite);
|
|
|
|
CCArray* array = scroeSprite->getChildren();
|
|
for (int i=0; i<array->count(); i++) {
|
|
CCPoint point = ((CCSprite*)array->objectAtIndex(i))->getPosition();
|
|
point.x += (digit)*(offSetX/2.0);
|
|
((CCSprite*)array->objectAtIndex(i))->setPosition(point);
|
|
}
|
|
|
|
return scroeSprite;
|
|
}
|
|
|
|
|
|
CCSprite* GameLayer_Resource::getLvByNum(int num)
|
|
{
|
|
int temp = num;
|
|
//位数,用于设置横坐标偏移量.
|
|
int digit = 0;
|
|
CCSprite* scroeSprite = CCSprite::create();
|
|
float offSetX = 15.0;
|
|
while (temp>0 || (digit==0 && temp==0)) {
|
|
int remainder = temp % 10;
|
|
temp = temp/10;
|
|
CCSprite *m_Sprite;
|
|
|
|
CCRect rc;
|
|
switch(remainder)
|
|
{
|
|
case 0:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownZero.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownOne.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownTwo.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 3:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownThree.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 4:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownFour.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 5:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownFive.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 6:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownSix.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 7:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownSeven.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 8:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownEight.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
case 9:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownNine.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
m_Sprite = CCSprite::create("./numberBox/lightBrownZero.png");
|
|
m_Sprite->setScale(0.2);
|
|
break;
|
|
}
|
|
}
|
|
|
|
m_Sprite->setPosition(ccp((digit)*(-offSetX), 0));
|
|
scroeSprite->addChild(m_Sprite);
|
|
digit++;
|
|
}
|
|
|
|
// CCSprite* lvSprite = CCSprite::create("./CocoStudioResources/sz_14.png");
|
|
// lvSprite->setPosition(ccp((digit)*(-offSetX), 0));
|
|
// scroeSprite->addChild(lvSprite);
|
|
//
|
|
CCArray* array = scroeSprite->getChildren();
|
|
for (int i=0; i<array->count(); i++) {
|
|
CCPoint point = ((CCSprite*)array->objectAtIndex(i))->getPosition();
|
|
point.x += (digit)*(offSetX/2.0);
|
|
((CCSprite*)array->objectAtIndex(i))->setPosition(point);
|
|
}
|
|
|
|
return scroeSprite;
|
|
} |