zoukankan      html  css  js  c++  java
  • CShopDialog类

    #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());
    }
  • 相关阅读:
    创建DataFrame https://www.cnblogs.com/andrew-address/p/13040035.html
    vim
    python 上下文管理协议
    AutoLisp 函数总结
    Visual Lisp 专题
    python基础之字符编码
    9月24号面试总结(康拓普1面)
    9月20号面试总结(zhongluan)
    9月20号面试总结(shangyun)
    9.19面试总结(ximei)
  • 原文地址:https://www.cnblogs.com/newlist/p/3195507.html
Copyright © 2011-2022 走看看