CShopDialogクラス
36381 ワード
#ifndef SHOP_H
#define SHOP_H
#include "XWidget.h"
#include "GameConfig.h"
class CXStatic;
class CXImage;
class CXButton;
class CXTimer;
class CXCommon;
#define SHOP_NOCHECKED_INIT_ID 1060
#define SHOP_CHECKED_INIT_ID 1050
#define SHOP_GOODS_NUM 6
#define SHOP_GOODS_BTN_INIT_ID 1070
#define SHOP_PRICE_FRAME 1033
#define SHOP_STA_PRICE 1040
#define SHOP_TIME 0.3
#define SHOP_STATIC_NUM 8
#define SHOP_INTRODUCTION "shop_"
class CShopDialog : public CXWidget
{
public:
enum ShopDialogId
{
_IDD_ShopDialog = 131,
_IDC_BtnBuy = 1003,
_IDC_BtnBack = 1010,
_IDC_ImgBoss = 1001,
_IDC_ImgStore = 1002,
_IDC_Decoration1 = 1004,
_IDC_Decoration2 = 1005,
_IDC_ImgSparFrame = 1030,
_IDC_ImgSectExp = 1031,
_IDC_StaIntroduction = 1048,
};
public:
CShopDialog(void);
~CShopDialog(void);
bool init();
void btnMsgCallback(CCObject* pSender);
virtual void setVisible(bool visible);
void refreshDlg();
void onTimerEnd(CCObject* obj);
private:
CXImage* m_pImgBoss;
CXImage* m_pImgStore;
CXImage* m_pImgDecoration1;
CXImage* m_pImgDecoration2;
CXImage* m_pImgChecked[SHOP_GOODS_NUM];
CXButton* m_pBtnBuy;
CXButton* m_pBtnBack;
CXStatic* m_pStaIntroduction;
CXTimer* m_pTimer;
CCNode* m_pStorePad;
int m_nCheckedIndex;
};
#endif
#include "ShopDialog.h"
#include "WidgetMgr.h"
#include "XButton.h"
#include "XImage.h"
#include "XStatic.h"
#include "XCommon.h"
#include "EncyclopediaDialog.h"
#include "GameConfig.h"
#include "GameLogic.h"
#include "hero.h"
#include "Config.h"
#include "WorldmapDialog.h"
#include "XTimer.h"
#include "XCommon.h"
CShopDialog::CShopDialog(void)
{
m_pImgBoss = NULL;
m_pImgStore = NULL;
m_pBtnBuy = NULL;
m_pBtnBack = NULL;
m_pImgDecoration1 = NULL;
m_pImgDecoration2 = NULL;
m_pStorePad = NULL;
m_pTimer = NULL;
m_pStaIntroduction = NULL;
m_nCheckedIndex = 0;
for (int i = 0; i < SHOP_GOODS_NUM; i++)
{
m_pImgChecked[i] = NULL;
}
}
CShopDialog::~CShopDialog(void)
{
}
bool CShopDialog::init()
{
CWidgetMgr::getInstance()->loadWidget(this, _IDD_ShopDialog);
CWidgetMgr::getInstance()->addWnd(this);
for (deque<CXWindow*>::const_iterator it = this->getDequeWnd().begin(); it != this->getDequeWnd().end(); it++)
{
if (UI_BUTTON == (*it)->getUIType())
{
(*it)->setClickListener(this, callfuncO_selector(CShopDialog::btnMsgCallback));
}
}
m_pStorePad = CCNode::create();
this->addChild(m_pStorePad);
m_pStorePad->setPosition(0,0);
CXWindow* pWnd = NULL;
pWnd = this->getCtrl(_IDC_ImgSparFrame);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
pWnd = this->getCtrl(_IDC_ImgSectExp);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
pWnd = this->getCtrl(_IDC_ImgStore);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
for (int i = 0; i < SHOP_GOODS_NUM; i++)
{
m_pImgChecked[i] = (CXImage*)this->getCtrl(SHOP_CHECKED_INIT_ID + i);
ASSERT(m_pImgChecked[i]);
m_pImgChecked[i]->setVisible(false);
pWnd = this->getCtrl(SHOP_NOCHECKED_INIT_ID + i);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
pWnd = this->getCtrl(SHOP_CHECKED_INIT_ID + i);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
pWnd = this->getCtrl(SHOP_PRICE_FRAME + i);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
}
for (int i = 0; i < SHOP_STATIC_NUM; i++)
{
pWnd = this->getCtrl(SHOP_STA_PRICE + i);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
}
pWnd = this->getCtrl(_IDC_StaIntroduction);
pWnd->getParent()->removeChild(pWnd, false);
m_pStorePad->addChild(pWnd);
m_pStaIntroduction = (CXStatic*)this->getCtrl(_IDC_StaIntroduction);
ASSERT(m_pStaIntroduction);
m_pStaIntroduction->reorderChild(m_pStaIntroduction,5);
m_pImgBoss = (CXImage*)this->getCtrl(_IDC_ImgBoss);
ASSERT(m_pImgBoss);
m_pImgBoss->setVisible(false);
this->reorderChild(m_pImgBoss, 5);
m_pImgStore = (CXImage*)this->getCtrl(_IDC_ImgStore);
ASSERT(m_pImgStore);
m_pImgStore->setVisible(false);
m_pBtnBuy = (CXButton*)this->getCtrl(_IDC_BtnBuy);
ASSERT(m_pBtnBuy);
m_pBtnBuy->setVisible(false);
this->reorderChild(m_pBtnBuy, 5);
m_pBtnBack = (CXButton*)this->getCtrl(_IDC_BtnBack);
ASSERT(m_pBtnBack);
m_pBtnBack->setVisible(false);
m_pImgDecoration1 = (CXImage*)this->getCtrl(_IDC_Decoration1);
ASSERT(m_pImgDecoration1);
m_pImgDecoration1->setVisible(false);
this->reorderChild(m_pImgDecoration1, 5);
m_pImgDecoration2 = (CXImage*)this->getCtrl(_IDC_Decoration2);
ASSERT(m_pImgDecoration2);
m_pImgDecoration2->setVisible(false);
this->reorderChild(m_pImgDecoration2, 5);
m_pTimer = new CXTimer();
m_pTimer->init(2, 0.2f);
m_pTimer->autorelease();
this->addChild(m_pTimer);
m_pTimer->setTimerEndListener(this, callfuncO_selector(CShopDialog::onTimerEnd));
this->setVisible(false);
return true;
}
void CShopDialog::onTimerEnd(CCObject* obj)
{
m_pStorePad->setPosition(m_pStorePad->getPosition().x,m_pStorePad->getPosition().y - 768);
m_pImgBoss->setPosition(m_pImgBoss->getPosition().x + 1024,m_pImgBoss->getPosition().y);
m_pBtnBuy->setPosition(m_pBtnBuy->getPosition().x,m_pBtnBuy->getPosition().y + 768);
m_pBtnBack->setPosition(m_pBtnBack->getPosition().x,m_pBtnBack->getPosition().y - 768);
m_pImgDecoration1->setPosition(m_pImgDecoration1->getPosition().x,m_pImgDecoration1->getPosition().y + 768);
m_pImgDecoration2->setPosition(m_pImgDecoration2->getPosition().x,m_pImgDecoration2->getPosition().y + 768);
this->setVisible(false);
m_pStorePad->stopAllActions();
m_pImgBoss->stopAllActions();
m_pBtnBuy->stopAllActions();
m_pBtnBack->stopAllActions();
m_pImgDecoration1->stopAllActions();
m_pImgDecoration2->stopAllActions();
((CWorldmapDialog*)CWidgetMgr::getInstance()->getWnd(CWorldmapDialog::_IDD_ChooseMenuDialog))->entrance();
}
void CShopDialog::btnMsgCallback(CCObject* pSender)
{
CXButton* pButton = (CXButton*)pSender;
switch(pButton->getId())
{
case _IDC_BtnBack:
{
//
m_pStorePad->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pStorePad->getPosition().x,m_pStorePad->getPosition().y + 768)));
m_pImgBoss->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pImgBoss->getPosition().x - 1024,m_pImgBoss->getPosition().y)));
m_pBtnBuy->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pBtnBuy->getPosition().x,m_pBtnBuy->getPosition().y - 768)));
m_pBtnBack->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pBtnBack->getPosition().x,m_pBtnBack->getPosition().y + 768)));
m_pImgDecoration1->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pImgDecoration1->getPosition().x,m_pImgDecoration1->getPosition().y - 768)));
m_pImgDecoration2->runAction(CCMoveTo::create(SHOP_TIME,
CCPoint(m_pImgDecoration2->getPosition().x,m_pImgDecoration2->getPosition().y - 768)));
if (m_pTimer)
{
m_pTimer->setCount(3);
m_pTimer->start();
}
}
break;
default:
break;
}
if (pButton->getId() >= SHOP_GOODS_BTN_INIT_ID && pButton->getId() < SHOP_GOODS_BTN_INIT_ID + SHOP_GOODS_NUM)
{
m_nCheckedIndex = pButton->getId() - SHOP_GOODS_BTN_INIT_ID;
}
if (this->isVisible())
{
this->refreshDlg();
}
}
void CShopDialog::setVisible(bool visible)
{
CXWidget::setVisible(visible);
if (visible)
{
//
CCPoint tPos = m_pStorePad->getPosition();
m_pStorePad->setPosition(m_pStorePad->getPosition().x ,m_pStorePad->getPosition().y + CConfig::getInstance()->getNumberByKey("shop_store_startpos_y"));
m_pImgStore->setVisible(true);
m_pStorePad->runAction(CCSequence::create(
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y + CConfig::getInstance()->getNumberByKey("shop_boss01_y"))),
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y + CConfig::getInstance()->getNumberByKey("shop_boss02_y"))),
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y + CConfig::getInstance()->getNumberByKey("shop_boss03_y"))),
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y + CConfig::getInstance()->getNumberByKey("shop_boss04_y"))),
CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_store_showtime"),CCPoint(tPos.x ,tPos.y)),NULL));
tPos = m_pImgBoss->getPosition();
m_pImgBoss->setPosition(m_pImgBoss->getPosition().x - CConfig::getInstance()->getNumberByKey("shop_screen_width"), m_pImgBoss->getPosition().y);
m_pImgBoss->setVisible(true);
m_pImgBoss->runAction(CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_boss_movetime"),tPos));
CCActionInterval* pFloatUp = CCMoveBy::create(CConfig::getInstance()->getNumberByKey("shop_boss_floattime"),
CCPoint(CConfig::getInstance()->getNumberByKey("shop_boss_moveby_x"),
CConfig::getInstance()->getNumberByKey("shop_boss_moveby_y")));
CCActionInterval* pReFloat = CCRepeatForever::create(static_cast<CCSequence *>(CCSequence::create(pFloatUp,pFloatUp->reverse(),NULL)));
m_pImgBoss->runAction(pReFloat);
tPos = m_pBtnBuy->getPosition();
m_pBtnBuy->setPosition(m_pBtnBuy->getPosition().x,
m_pBtnBuy->getPosition().y - CConfig::getInstance()->getNumberByKey("shop_screen_heigh"));
m_pBtnBuy->setVisible(true);
m_pBtnBuy->runAction(CCMoveTo::create(
CConfig::getInstance()->getNumberByKey("shop_btnbuy_time"),tPos));
tPos = m_pBtnBack->getPosition();
m_pBtnBack->setPosition(m_pBtnBack->getPosition().x , m_pBtnBack->getPosition().y + 768);
m_pBtnBack->setVisible(true);
m_pBtnBack->runAction(CCMoveTo::create(
CConfig::getInstance()->getNumberByKey("shop_btnback_time"),tPos));
pFloatUp = CCMoveBy::create(
CConfig::getInstance()->getNumberByKey("shop_btnback_moveby_time"),
CCPoint(CConfig::getInstance()->getNumberByKey("shop_btnback_moveby_x"),
CConfig::getInstance()->getNumberByKey("shop_btnback_moveby_y")));
pReFloat = CCRepeatForever::create(static_cast<CCSequence *>(CCSequence::create(pFloatUp,pFloatUp->reverse(),NULL)));
m_pBtnBack->runAction(pReFloat);
tPos = m_pImgDecoration1->getPosition();
m_pImgDecoration1->setPosition(tPos.x,tPos.y - CConfig::getInstance()->getNumberByKey("shop_screen_heigh"));
m_pImgDecoration1->setVisible(true);
m_pImgDecoration1->runAction(CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_decoration1_movetime"),tPos));
pFloatUp = CCMoveBy::create(CConfig::getInstance()->getNumberByKey("shop_decoration1_floatime"),
CCPoint(CConfig::getInstance()->getNumberByKey("shop_decoration1_moveby_x"),
CConfig::getInstance()->getNumberByKey("shop_decoration1_moveby_y")));
pReFloat = CCRepeatForever::create(static_cast<CCSequence *>(CCSequence::create(pFloatUp,pFloatUp->reverse(),NULL)));
m_pImgDecoration1->runAction(pReFloat);
tPos = m_pImgDecoration2->getPosition();
m_pImgDecoration2->setPosition(tPos.x,tPos.y - CConfig::getInstance()->getNumberByKey("shop_screen_heigh"));
m_pImgDecoration2->setVisible(true);
m_pImgDecoration2->runAction(CCMoveTo::create(CConfig::getInstance()->getNumberByKey("shop_decoration2_movetime"),tPos));
m_pImgDecoration2->setVisible(true);
pFloatUp = CCMoveBy::create(CConfig::getInstance()->getNumberByKey("shop_decoration2_floatime"),
CCPoint(CConfig::getInstance()->getNumberByKey("shop_decoration2_moveby_x"),
CConfig::getInstance()->getNumberByKey("shop_decoration2_moveby_y")));
pReFloat = CCRepeatForever::create(static_cast<CCSequence *>(CCSequence::create(pFloatUp,pFloatUp->reverse(),NULL)));
m_pImgDecoration2->runAction(pReFloat);
m_nCheckedIndex = 0;
this->refreshDlg();
}
}
void CShopDialog::refreshDlg()
{
for (int i = 0; i < SHOP_GOODS_NUM; i++)
{
m_pImgChecked[i]->setVisible(false);
}
m_pImgChecked[m_nCheckedIndex]->setVisible(true);
m_pStaIntroduction->setText(CConfig::getInstance()->getWordBykey((string(SHOP_INTRODUCTION) + CXCommon::toString(m_nCheckedIndex)).c_str()).c_str());
}