mirror of
https://github.com/wu736139669/OzgGameRPG.git
synced 2026-08-05 06:24:38 +00:00
完善地图菜单
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
//
|
||||
// RPGMapChoicePlayerMenuLayer.cpp
|
||||
// OzgGameRPG
|
||||
//
|
||||
// Created by ozg on 14-4-10.
|
||||
//
|
||||
//
|
||||
|
||||
#include "RPGMapChoicePlayerMenuLayer.h"
|
||||
|
||||
RPGMapChoicePlayerMenuLayer::RPGMapChoicePlayerMenuLayer()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
RPGMapChoicePlayerMenuLayer::~RPGMapChoicePlayerMenuLayer()
|
||||
{
|
||||
CCNotificationCenter::sharedNotificationCenter()->removeObserver(this->m_target, "onChoicePlayer");
|
||||
this->m_target->release();
|
||||
|
||||
CCLog("RPGMapChoicePlayerMenuLayer 释放");
|
||||
}
|
||||
|
||||
bool RPGMapChoicePlayerMenuLayer::init(CppSQLite3DB *db, CCObject* target, SEL_CallFuncO selector, float width, float height)
|
||||
{
|
||||
if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height))
|
||||
{
|
||||
this->m_target = target;
|
||||
this->m_target->retain();
|
||||
|
||||
this->m_db = db;
|
||||
|
||||
CCTMXTiledMap *mainBg = CCTMXTiledMap::create("select_player_style1.tmx");
|
||||
mainBg->setPosition(ccp(270, 280));
|
||||
mainBg->setTag(kRPGMapChoicePlayerMenuLayerTagBg);
|
||||
this->addChild(mainBg);
|
||||
|
||||
CCMenu *mainMenu = CCMenu::create();
|
||||
mainMenu->setTag(kRPGMapChoicePlayerMenuLayerTagMainMenu);
|
||||
mainMenu->setAnchorPoint(CCPointZero);
|
||||
mainMenu->setPosition(CCPointZero);
|
||||
this->addChild(mainMenu);
|
||||
|
||||
this->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2, (CCDirector::sharedDirector()->getWinSize().height - height) / 2));
|
||||
|
||||
//显示4个角色
|
||||
float playerX = 315;
|
||||
CppSQLite3Query query = this->m_db->execQuery(PLAYER_QUERY);
|
||||
while(!query.eof())
|
||||
{
|
||||
CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_0.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
|
||||
|
||||
CCSprite *playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(1));
|
||||
CCMenuItemSprite *player = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapChoicePlayerMenuLayerTagMainMenuPlayer + query.getIntField("id"));
|
||||
if(!player)
|
||||
{
|
||||
player = CCMenuItemSprite::create(playerSprite, playerSprite, this, menu_selector(RPGMapChoicePlayerMenuLayer::onMenu));
|
||||
player->cocos2d::CCNode::setPosition(ccp(playerX, 330));
|
||||
player->setScale(1.5);
|
||||
player->setTag(kRPGMapChoicePlayerMenuLayerTagMainMenuPlayer + query.getIntField("id"));
|
||||
mainMenu->addChild(player);
|
||||
}
|
||||
|
||||
playerX += 120;
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
|
||||
CCNotificationCenter::sharedNotificationCenter()->addObserver(this->m_target, selector, "onChoicePlayer", NULL);
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
RPGMapChoicePlayerMenuLayer* RPGMapChoicePlayerMenuLayer::create(CppSQLite3DB *db, CCObject* target, SEL_CallFuncO selector, float width, float height)
|
||||
{
|
||||
RPGMapChoicePlayerMenuLayer *obj = new RPGMapChoicePlayerMenuLayer();
|
||||
if(obj && obj->init(db, target, selector, width, height))
|
||||
{
|
||||
obj->autorelease();
|
||||
return obj;
|
||||
}
|
||||
CC_SAFE_DELETE(obj);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void RPGMapChoicePlayerMenuLayer::onMenu(cocos2d::CCObject *pObject)
|
||||
{
|
||||
CCNotificationCenter::sharedNotificationCenter()->postNotification("onChoicePlayer", pObject);
|
||||
}
|
||||
Reference in New Issue
Block a user