mirror of
https://github.com/wu736139669/OzgGameRPG.git
synced 2026-08-05 06:24:38 +00:00
119 lines
4.6 KiB
C++
119 lines
4.6 KiB
C++
//
|
|
// RPGDialogLayer.cpp
|
|
// OzgGameRPG
|
|
//
|
|
// Created by ozg on 14-3-30.
|
|
//
|
|
//
|
|
|
|
#include "RPGDialogLayer.h"
|
|
#include "OzgCCUtility.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(OzgCCUtility::generalString(CCString::create(menuOKStr)->getCString()).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(OzgCCUtility::generalString(CCString::create(menuOKStr)->getCString()).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(OzgCCUtility::generalString(CCString::create(menuCancelStr)->getCString()).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("alert_style1.tmx");
|
|
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);
|
|
}
|