mirror of
https://github.com/wu736139669/SmallGame_Cocos2dx.git
synced 2026-08-05 06:23:09 +00:00
220 lines
7.6 KiB
C++
220 lines
7.6 KiB
C++
//
|
|
// GameLayer_SuperItem.cpp
|
|
// OnceAgain
|
|
//
|
|
// Created by mac on 14-3-25.
|
|
//
|
|
//
|
|
|
|
#include "GameLayer_SuperItem.h"
|
|
#include "GameLayer_Tag.h"
|
|
#include "GameItemManager.h"
|
|
#include "DialogManager.h"
|
|
#include "MsgDefine.h"
|
|
#include "NetPacket.h"
|
|
#include "CounterByImage.h"
|
|
#include "PlayerInfoManager.h"
|
|
#include "GameLayer_Alert.h"
|
|
#include "CsvStringData.h"
|
|
|
|
IMPLEMENT_DLG_ID(GameLayer_SuperItem,SuperItem_Tag);
|
|
GameLayer_SuperItem::~GameLayer_SuperItem()
|
|
{
|
|
GUIReader::shareReader()->purgeGUIReader();
|
|
DictionaryHelper::shareHelper()->purgeDictionaryHelper();
|
|
ActionManager::shareManager()->purgeActionManager();
|
|
}
|
|
|
|
// CCScene* GameLayer_SuperItem::scene(CCRenderTexture *spr, bool isFlip)
|
|
// {
|
|
//
|
|
//
|
|
// // 'scene' is an autorelease object
|
|
// CCScene *scene = CCScene::create();
|
|
//
|
|
// CCSize size = CCDirector::sharedDirector()->getWinSize();
|
|
// CCSprite *_spr = CCSprite::createWithTexture(spr->getSprite()->getTexture());
|
|
// _spr->setPosition(ccp(size.width/2, size.height/2));
|
|
// _spr->setFlipY(isFlip);
|
|
// _spr->setColor(ccGRAY);
|
|
// scene->addChild(_spr);
|
|
// // 'layer' is an autorelease object
|
|
// GameLayer_SuperItem *layer = GameLayer_SuperItem::create();
|
|
// // layer->setPosition(ccp(size.width/2, size.height/2));
|
|
// // add layer as a child to scene
|
|
// scene->addChild(layer);
|
|
//
|
|
// // return the scene
|
|
// return scene;
|
|
// }
|
|
bool GameLayer_SuperItem::onPackageFilter(void *pDataPkg) {
|
|
CResponsePacket* pPkt = (CResponsePacket*)pDataPkg;
|
|
unsigned int unMsgType = pPkt->getMsgType();
|
|
unsigned int unMsgCode = pPkt->getMsgCode();
|
|
//网络数据传输完成
|
|
if (pPkt->getDataState() == eNetMsgDataStateComplete)
|
|
{
|
|
if (unMsgType == eNetMsgTypeItemSys && unMsgCode == eNetMsgItemSysBuy)
|
|
{
|
|
CSJson::Value root ;
|
|
if(!CJsonHelper::getJsonFromString(pPkt->getContent().c_str(),root))
|
|
return true;
|
|
CSJson::Value& val = root[0];
|
|
//if(root.isArray())
|
|
// return false;
|
|
SClientItemData* itemData = CItemMan::sharedInstance().getSuperItem(val["propsid"].asInt());
|
|
if(itemData&&itemData->pData)
|
|
{
|
|
if (itemData->pData->ItemType == eItemTypeSuper)
|
|
{
|
|
if (m_pfnSelector && m_pListener) {
|
|
(m_pListener->*m_pfnSelector)(this);
|
|
}
|
|
_close();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
closeBtnCallback(NULL);
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
bool GameLayer_SuperItem::init()
|
|
{
|
|
if (!CCLayer::init()) {
|
|
return false;
|
|
}
|
|
//系统设置界面.
|
|
superItem = UILayer::create();
|
|
auto layout = dynamic_cast<Layout*>(GUIReader::shareReader()->widgetFromJsonFile("./CocoStudioResources/SuperItem.json"));
|
|
superItem->addWidget(layout);
|
|
// sysSet->setVisible(true);
|
|
this->addChild(superItem, 0, 101);
|
|
|
|
//设置背景颜色.
|
|
UIPanel* taskPanel = dynamic_cast<UIPanel*>(superItem->getWidgetByName("Panel"));
|
|
taskPanel->setBackGroundColor(ccBLACK);
|
|
taskPanel->setBackGroundColorOpacity(150);
|
|
taskPanel->setTouchEnable(true);
|
|
//确定按钮
|
|
UIButton* sureBtn = dynamic_cast<UIButton*>(superItem->getWidgetByName("SureBtn"));
|
|
sureBtn->setTouchEnable(true);
|
|
sureBtn->addReleaseEvent(this, coco_releaseselector(GameLayer_SuperItem::sureBtnCallback));
|
|
sureBtn->setPressedActionEnabled(true);
|
|
//关闭按钮.
|
|
UIButton* cancelBtn = dynamic_cast<UIButton*>(superItem->getWidgetByName("CancelBtn"));
|
|
cancelBtn->addReleaseEvent(this, coco_releaseselector(GameLayer_SuperItem::closeBtnCallback));
|
|
cancelBtn->setPressedActionEnabled(true);
|
|
this->setVisible(true);
|
|
|
|
setTouchPriority(kCCMenuHandlerPriority - 1);
|
|
|
|
VEC_NUMFILENAME vecNumFileName;
|
|
// for (int i = 0; i < 10; ++i)
|
|
// {
|
|
// CCString str;
|
|
// str.initWithFormat("common/num_1/common_num_%d.png",i);
|
|
// vecNumFileName.push_back(str.getCString());
|
|
// }
|
|
vecNumFileName.push_back("numberBox/whiteNumberZero.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberOne.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberTwo.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberThree.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberFour.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberFive.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberSix.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberSeven.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberEight.png");
|
|
vecNumFileName.push_back("numberBox/whiteNumberNine.png");
|
|
CCounterImage* pNum= CCounterImage::create(vecNumFileName,"numberBox/whiteNumberComma.png",0,false);
|
|
//mpCounterImage->setPosition(ccp(120, 0));
|
|
pNum->setCellNumberWidth(42);
|
|
pNum->setNumber(0);
|
|
pNum->setTag(8);
|
|
pNum->setScale(0.4f);
|
|
UIImageView* pUiImg = ((UIImageView*)superItem->getWidgetByName("buy_num"));
|
|
pUiImg->setVisible(false);
|
|
sureBtn->getRenderer()->addChild(pNum);
|
|
pNum->setPosition(pUiImg->getPosition());
|
|
//superItem->getWidgetByName("buy_num")->getRenderer()->addChild(pNum);
|
|
return true;
|
|
}
|
|
|
|
void GameLayer_SuperItem::setVisible(bool visible)
|
|
{
|
|
CCLayer::setVisible(visible);
|
|
// UIPanel* panel = dynamic_cast<UIPanel*>(superItem->getWidgetByName("Panel"));
|
|
// panel->setTouchEnable(visible);
|
|
}
|
|
|
|
void GameLayer_SuperItem::sureBtnCallback(cocos2d::CCObject *pSender)
|
|
{
|
|
sItemData* pData = CItemMan::sharedInstance().getChgTempData(mnItemID);
|
|
int hMoney = CPlayerInfoMan::sharedInstance().getPlayerInfo().nMoney;
|
|
int nMoney = pData->CurrencyValue;
|
|
if (nMoney > hMoney) {
|
|
GameLayer_Alert *alertUl = GameLayer_Alert::creatWithOnlySure(Type_OnlySure);
|
|
alertUl->setText(GET_STRING_CSV(1010000021));
|
|
this->addChild(alertUl, 10);
|
|
}
|
|
else {
|
|
CCObject *p;
|
|
requestItems(p);
|
|
}
|
|
//this->removeFromParent();
|
|
}
|
|
void GameLayer_SuperItem::requestItems(cocos2d::CCObject *p) {
|
|
if(mnItemID)
|
|
CItemMan::sharedInstance().RequestBuyItem(mnItemID);
|
|
|
|
}
|
|
void GameLayer_SuperItem::closeBtnCallback(CCObject* pSender)
|
|
{
|
|
if (m_pfnSelector && m_pListener) {
|
|
UIButton* sureBtn = dynamic_cast<UIButton*>(superItem->getWidgetByName("SureBtn"));
|
|
(m_pListener->*m_pfnSelectorClose)(this);
|
|
}
|
|
//this->removeFromParent();
|
|
_close();
|
|
}
|
|
void GameLayer_SuperItem::_close()
|
|
{
|
|
ReleaseDlg(GameLayer_SuperItem);
|
|
}
|
|
void GameLayer_SuperItem::setSureCallbackFunc(CCObject* target, SEL_CallFuncO pCallfuncOk, SEL_CallFuncO pCallfuncCancel)
|
|
{
|
|
this->m_pListener = target;
|
|
this->m_pfnSelector = pCallfuncOk;
|
|
this->m_pfnSelectorClose = pCallfuncCancel;
|
|
}
|
|
void GameLayer_SuperItem::setSureBtnTag(int tag)
|
|
{
|
|
UIButton* sureBtn = dynamic_cast<UIButton*>(superItem->getWidgetByName("SureBtn"));
|
|
sureBtn->setTag(tag);
|
|
}
|
|
void GameLayer_SuperItem::setItemInfo(const char *str)
|
|
{
|
|
UILabel* label = dynamic_cast<UILabel*>(superItem->getWidgetByName("ItemInfo"));
|
|
label->setText(str);
|
|
}
|
|
void GameLayer_SuperItem::setItem(int nItemId)
|
|
{
|
|
mnItemID = nItemId;
|
|
UIImageView* img = dynamic_cast<UIImageView*>(superItem->getWidgetByName("ItemImg"));
|
|
CCString str;
|
|
str.initWithFormat("CocoStudioResources/GameItem/%d.png",nItemId);
|
|
img->setTexture(str.getCString());
|
|
sItemData* pData = CItemMan::sharedInstance().getChgTempData(nItemId);
|
|
if(pData == NULL)
|
|
return;
|
|
setItemInfo(pData->ItemDetail.c_str());
|
|
((CCounterImage*)superItem->getWidgetByName("SureBtn")->getRenderer()->getChildByTag(8))->setNumber(pData->CurrencyValue);
|
|
img = dynamic_cast<UIImageView*>(superItem->getWidgetByName("guobi"));
|
|
img->setTexture("CocoStudioResources/GoldImg.png");
|
|
if (pData->CurrencyId == 5)
|
|
{
|
|
img->setTexture("CocoStudioResources/DiamondImg.png");
|
|
}
|
|
} |