Files
OzgGameRPG/Classes/RPGDialogLayer.cpp
T
2014-06-26 21:02:46 +08:00

120 lines
4.5 KiB
C++

//
// RPGDialogLayer.cpp
// OzgGameRPG
//
// Created by ozg on 14-3-30.
//
//
#include "RPGDialogLayer.h"
#include "OzgCCUtility.h"
#include "GameCfg.h"
RPGDialogLayer::RPGDialogLayer()
{
}
RPGDialogLayer::~RPGDialogLayer()
{
CCLog("RPGDialogLayer 释放");
}
bool RPGDialogLayer::init(string titleStr, string menuOKStr, int menuItemOKTag, float width, float height, CCObject* target, SEL_MenuHandler seletor)
{
if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height))
{
this->initCommons(titleStr);
CCTMXTiledMap *mainBg = (CCTMXTiledMap*)this->getChildByTag(kRPGDialogLayerBg);
CCMenu *menu = (CCMenu*)mainBg->getChildByTag(kRPGDialogLayerBgMenu);
CCLabelTTF *menuOKLab = CCLabelTTF::create(menuOKStr.c_str(), "Arial", 20, CCSizeMake(120, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter);
menuOKLab->setColor(ccc3(160, 160, 160));
CCMenuItemLabel *menuOK = CCMenuItemLabel::create(menuOKLab, target, seletor);
menuOK->setTag(menuItemOKTag);
menuOK->setPosition(ccp(190, 60));
menu->addChild(menuOK);
return true;
}
return false;
}
bool RPGDialogLayer::init(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor)
{
if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height))
{
this->initCommons(titleStr);
CCTMXTiledMap *mainBg = (CCTMXTiledMap*)this->getChildByTag(kRPGDialogLayerBg);
CCMenu *menu = (CCMenu*)mainBg->getChildByTag(kRPGDialogLayerBgMenu);
CCLabelTTF *menuOKLab = CCLabelTTF::create(menuOKStr.c_str(), "Arial", 20, CCSizeMake(120, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter);
menuOKLab->setColor(ccc3(160, 160, 160));
CCMenuItemLabel *menuOK = CCMenuItemLabel::create(menuOKLab, target, seletor);
menuOK->setTag(menuItemOKTag);
menuOK->setPosition(ccp(100, 60));
menu->addChild(menuOK);
CCLabelTTF *menuCancelLab = CCLabelTTF::create(menuCancelStr.c_str(), "Arial", 20, CCSizeMake(120, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter);
menuCancelLab->setColor(ccc3(160, 160, 160));
CCMenuItemLabel *menuCancel = CCMenuItemLabel::create(menuCancelLab, target, seletor);
menuCancel->setTag(menuItemCancelTag);
menuCancel->setPosition(ccp(280, 60));
menu->addChild(menuCancel);
return true;
}
return false;
}
RPGDialogLayer* RPGDialogLayer::create(string titleStr, string menuOKStr, int menuItemOKTag, float width, float height, CCObject* target, SEL_MenuHandler seletor)
{
RPGDialogLayer *layer = new RPGDialogLayer();
if(layer && layer->init(titleStr, menuOKStr, menuItemOKTag, width, height, target, seletor))
{
layer->autorelease();
return layer;
}
CC_SAFE_DELETE(layer);
return NULL;
}
RPGDialogLayer* RPGDialogLayer::create(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor)
{
RPGDialogLayer *layer = new RPGDialogLayer();
if(layer && layer->init(titleStr, menuOKStr, menuItemOKTag, menuCancelStr, menuItemCancelTag, width, height, target, seletor))
{
layer->autorelease();
return layer;
}
CC_SAFE_DELETE(layer);
return NULL;
}
//private
void RPGDialogLayer::initCommons(string titleStr)
{
CCTMXTiledMap *mainBg = CCTMXTiledMap::create(CCString::createWithFormat("alert_%s.tmx", CCUserDefault::sharedUserDefault()->getStringForKey(GAME_STYLE).c_str())->getCString());
float x = (CCDirector::sharedDirector()->getWinSize().width - mainBg->getContentSize().width) / 2.0f;
float y = (CCDirector::sharedDirector()->getWinSize().height - mainBg->getContentSize().height) / 2.0f;
mainBg->setPosition(ccp(x, y));
mainBg->setTag(kRPGDialogLayerBg);
this->addChild(mainBg);
CCLabelTTF *titleLab = CCLabelTTF::create(titleStr.c_str(), "Arial", 25, CCSizeMake(mainBg->getContentSize().width, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter);
titleLab->setPosition(ccp(190, 135));
titleLab->setColor(ccc3(255, 255, 255));
mainBg->addChild(titleLab);
CCMenu *menu = CCMenu::create();
menu->setAnchorPoint(CCPointZero);
menu->setPosition(CCPointZero);
menu->setTag(kRPGDialogLayerBgMenu);
mainBg->addChild(menu);
}