完善地图菜单

This commit is contained in:
ozg
2014-04-10 22:32:31 +08:00
parent e9ca8e4474
commit 241e597718
30 changed files with 1323 additions and 438 deletions
+91
View File
@@ -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);
}