diff --git a/Classes/RPGBaseSceneLayer.cpp b/Classes/RPGBaseSceneLayer.cpp index 265a762..5cfbede 100755 --- a/Classes/RPGBaseSceneLayer.cpp +++ b/Classes/RPGBaseSceneLayer.cpp @@ -38,7 +38,7 @@ void savePlayerData(CppSQLite3DB* db, CCArray* playerDataList) { RPGPlayer *playerData = (RPGPlayer*)playerDataList->objectAtIndex(i); - CCString *sql = CCString::createWithFormat("update player set max_hp = %i, hp = %i, max_mp = %i, mp = %i, attack = %f, defense = %f, speed = %f, magic_attack = %f, magic_defense = %f, items_id_arms = %i, items_id_armor = %i, level = %i, skill = '%s', next_exp = %i where id = %i", playerData->m_maxHP, playerData->m_HP, playerData->m_maxMP, playerData->m_MP, playerData->m_attack, playerData->m_defense, playerData->m_speed, playerData->m_magicAttack, playerData->m_magicDefense, playerData->m_itemsIdArms, playerData->m_itemsIdArmor, playerData->m_level, playerData->m_skill.c_str(), playerData->m_nextExp, playerData->m_dataId); + CCString *sql = CCString::createWithFormat("update player set max_hp = %i, hp = %i, max_mp = %i, mp = %i, attack = %f, defense = %f, speed = %f, skill_attack = %f, skill_defense = %f, items_id_arms = %i, items_id_armor = %i, level = %i, skill = '%s', next_exp = %i where id = %i", playerData->m_maxHP, playerData->m_HP, playerData->m_maxMP, playerData->m_MP, playerData->m_attack, playerData->m_defense, playerData->m_speed, playerData->m_skillAttack, playerData->m_skillDefense, playerData->m_itemsIdArms, playerData->m_itemsIdArmor, playerData->m_level, playerData->m_skill.c_str(), playerData->m_nextExp, playerData->m_dataId); db->execDML(sql->getCString()); } } diff --git a/Classes/RPGBaseSceneLayer.h b/Classes/RPGBaseSceneLayer.h index ee8afd0..620c3bc 100755 --- a/Classes/RPGBaseSceneLayer.h +++ b/Classes/RPGBaseSceneLayer.h @@ -27,6 +27,15 @@ using namespace CocosDenshion; //获取player列表 #define PLAYER_QUERY "select * from player order by id asc" +//技能的属性 +enum RPGSkillAttr +{ + kRPGSkillAttrNormal = 1, //通常属性 + kRPGSkillAttrFire = 2, //火 + kRPGSkillAttrIce = 3, //冰 + kRPGSkillAttrNone = 10, //无 +}; + void addLab(CCNode* parentNode, int tag, CCString* text, CCPoint point); //增加状态界面的lab void addLab(CCNode* parentNode, int tag, CCString* text, float fontSize, CCPoint point); void addLab(CCNode* parentNode, int tag, CCString* text, float fontSize, CCTextAlignment textAlignment, CCPoint point); diff --git a/Classes/RPGBattlePlayerSprite.cpp b/Classes/RPGBattlePlayerSprite.cpp index e7c8f7f..5fe80ed 100644 --- a/Classes/RPGBattlePlayerSprite.cpp +++ b/Classes/RPGBattlePlayerSprite.cpp @@ -7,6 +7,7 @@ // #include "RPGBattlePlayerSprite.h" +#include "RPGBattleSceneLayer.h" #include "OzgCCUtility.h" RPGBattlePlayerSprite::RPGBattlePlayerSprite() @@ -108,9 +109,7 @@ bool RPGBattlePlayerSprite::initWithPlayerData(RPGPlayer* data) this->m_isSelected = false; - CCAnimation *animation = CCAnimation::createWithSpriteFrames(this->m_spriteFramesNormal, 0.2); - CCRepeatForever *animate = CCRepeatForever::create(CCAnimate::create(animation)); - this->runAction(animate); + this->animNormal(); return true; } @@ -154,3 +153,26 @@ void RPGBattlePlayerSprite::selected(bool isSelected) } } + +void RPGBattlePlayerSprite::animNormal() +{ + this->stopAllActions(); + + CCAnimation *animation = CCAnimation::createWithSpriteFrames(this->m_spriteFramesNormal, 0.2); + CCRepeatForever *animate = CCRepeatForever::create(CCAnimate::create(animation)); + this->runAction(animate); +} + +void RPGBattlePlayerSprite::animAttack(CCObject* target, cocos2d::CCObject *targetObjData) +{ + this->stopAllActions(); + + SimpleAudioEngine::sharedEngine()->playEffect("audio_battle_attack1.wav"); + + CCAnimation *animation = CCAnimation::createWithSpriteFrames(this->m_spriteFramesAttack, 0.15); + + //挥动武器的动作跟上面的一起执行 + //waving + + this->runAction(CCSequence::createWithTwoActions(CCAnimate::create(animation), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::attackResults), targetObjData))); +} diff --git a/Classes/RPGBattlePlayerSprite.h b/Classes/RPGBattlePlayerSprite.h index d0c1109..ccffff6 100644 --- a/Classes/RPGBattlePlayerSprite.h +++ b/Classes/RPGBattlePlayerSprite.h @@ -50,6 +50,9 @@ public: void selected(bool isSelected); + void animNormal(); + void animAttack(CCObject* target, CCObject *targetObjData); + }; #endif /* defined(__OzgGameRPG__RPGBattlePlayerSprite__) */ diff --git a/Classes/RPGBattleSceneLayer.cpp b/Classes/RPGBattleSceneLayer.cpp index 4e2660d..669fa3b 100755 --- a/Classes/RPGBattleSceneLayer.cpp +++ b/Classes/RPGBattleSceneLayer.cpp @@ -8,6 +8,7 @@ #include "RPGBattleSceneLayer.h" #include "RPGLoadingSceneLayer.h" +#include "RPGComputingResults.h" #define MONSTER_QUERY "select * from monster where map_id = %i order by random() limit 1" @@ -92,8 +93,8 @@ bool RPGBattleSceneLayer::init() playerData->m_attack = query.getFloatField("attack"); playerData->m_defense = query.getFloatField("defense"); playerData->m_speed = query.getFloatField("speed"); - playerData->m_magicAttack = query.getFloatField("magic_attack"); - playerData->m_magicDefense = query.getFloatField("magic_defense"); + playerData->m_skillAttack = query.getFloatField("skill_attack"); + playerData->m_skillDefense = query.getFloatField("skill_defense"); playerData->m_level = query.getIntField("level"); playerData->m_name = query.getStringField("name_cns"); playerData->m_nextExp = query.getIntField("next_exp"); @@ -195,8 +196,8 @@ bool RPGBattleSceneLayer::init() monsterData->m_attack = query.getFloatField("attack"); monsterData->m_defense = query.getFloatField("defense"); monsterData->m_speed = query.getFloatField("speed"); - monsterData->m_magicAttack = query.getFloatField("magic_attack"); - monsterData->m_magicDefense = query.getFloatField("magic_defense"); + monsterData->m_skillAttack = query.getFloatField("skill_attack"); + monsterData->m_skillDefense = query.getFloatField("skill_defense"); monsterData->m_exp = query.getIntField("exp"); monsterData->m_skill = query.getStringField("skill"); monsterData->m_tex = query.getStringField("tex"); @@ -372,6 +373,8 @@ void RPGBattleSceneLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { // CCLog("攻击"); + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + //检测选中的player for (int i = 0; i < this->m_playerList->count(); i++) { @@ -541,27 +544,25 @@ void RPGBattleSceneLayer::cancelAllSelected() void RPGBattleSceneLayer::attack(cocos2d::CCObject *attackObjData, cocos2d::CCObject *targetObjData) { - CCLog("aaa"); - //发起攻击的对象 if(dynamic_cast(attackObjData) != NULL) { - + RPGBattlePlayerSprite *player = (RPGBattlePlayerSprite*)this->getChildByTag(kRPGBattleSceneLayerTagPlayer + ((RPGPlayer*)attackObjData)->m_dataId); + player->animAttack(this, targetObjData); } else if(dynamic_cast(attackObjData) != NULL) { } - //受到攻击的对象 - if(dynamic_cast(targetObjData) != NULL) - { - - } - else if(dynamic_cast(targetObjData) != NULL) - { - - } +} + +void RPGBattleSceneLayer::attackResults(cocos2d::CCNode *sender, void *data) +{ + SimpleAudioEngine::sharedEngine()->playEffect("audio_battle_attack2.wav"); + + //计算伤害值 + } diff --git a/Classes/RPGBattleSceneLayer.h b/Classes/RPGBattleSceneLayer.h index 78bad08..2d4c17e 100755 --- a/Classes/RPGBattleSceneLayer.h +++ b/Classes/RPGBattleSceneLayer.h @@ -13,6 +13,7 @@ #include "RPGBattlePlayerSprite.h" #include "RPGBattleMonsterSprite.h" #include "RPGBattleMenu.h" +#include "RPGComputingResults.h" #include "OzgCCUtility.h" enum RPGBattleSceneLayerTag @@ -87,6 +88,7 @@ public: void cancelAllSelected(); //取消全部选中的对象 void attack(CCObject* attackObjData, CCObject* targetObjData); //player或怪物执行攻击 + void attackResults(CCNode* sender, void* data); //计算攻击后的结果 }; diff --git a/Classes/RPGComputingResults.cpp b/Classes/RPGComputingResults.cpp new file mode 100644 index 0000000..38b327b --- /dev/null +++ b/Classes/RPGComputingResults.cpp @@ -0,0 +1,78 @@ +// +// RPGComputingResults.cpp +// OzgGameRPG +// +// Created by ozg on 14-4-8. +// +// + +#include "RPGComputingResults.h" +#include "OzgCCUtility.h" + +int RPGComputingResults::attackResults(float attack, float defense) +{ + attack = attack / 0.25; + attack = OzgCCUtility::randomFloat(attack - (attack * 0.05), attack + (attack * 0.05)); + + defense = defense / 0.5; + defense = OzgCCUtility::randomFloat(defense - (defense * 0.025), defense + (defense * 0.025)); + + int results = (int)(attack - defense); + if(results < 0) + results = 0; + + return results; +} + +int RPGComputingResults::skillAttackResults(float playerSkillAttack, float skillAttack, RPGSkillAttr attackAttr, float skillDefense, RPGSkillAttr defenseAttr) +{ + int results = RPGComputingResults::attackResults(playerSkillAttack, skillDefense); + + skillAttack = skillAttack / 0.25; + skillAttack = OzgCCUtility::randomFloat(skillAttack - (skillAttack * 0.05), skillAttack + (skillAttack * 0.05)); + results = results + (int)skillAttack; + + //下面是属性处理 + //火克冰 + if(attackAttr == kRPGSkillAttrFire && defenseAttr == kRPGSkillAttrIce) + results = results + (results * 0.5); + else if(attackAttr == kRPGSkillAttrIce && defenseAttr == kRPGSkillAttrFire) + results = results - (results * 0.5); + + //无属性克制除自己属性以外的所有属性 + else if(attackAttr == kRPGSkillAttrNone && defenseAttr != kRPGSkillAttrNone) + results = results + (results * 0.5); + else if(attackAttr != kRPGSkillAttrNone && defenseAttr == kRPGSkillAttrNone) + results = results - (results * 0.5); + + return results; +} + +int RPGComputingResults::skillCureResults(float playerSkillAttack, float skillAttack) +{ + //不需要浮动值 + playerSkillAttack = playerSkillAttack / 0.5; + skillAttack = skillAttack / 0.25; + int results = (int)(playerSkillAttack + skillAttack); + return results; +} + +int RPGComputingResults::itemCure(int itemsId) +{ + switch (itemsId) + { + case 6: + //草药治疗,返回的是HP + return 100; + break; + case 7: + //党参治疗,返回的是MP + return 30; + break; + default: + + return 0; + break; + } + +} diff --git a/Classes/RPGComputingResults.h b/Classes/RPGComputingResults.h new file mode 100644 index 0000000..df3bb6d --- /dev/null +++ b/Classes/RPGComputingResults.h @@ -0,0 +1,30 @@ +// +// RPGComputingResults.h +// OzgGameRPG +// +// Created by ozg on 14-4-8. +// +// + +#ifndef __OzgGameRPG__RPGComputingResults__ +#define __OzgGameRPG__RPGComputingResults__ + +#include "cocos2d.h" +#include "RPGBaseSceneLayer.h" + +USING_NS_CC; + +class RPGComputingResults : public CCObject +{ + +public: + + static int attackResults(float attack, float defense); //一般攻击 + static int skillAttackResults(float playerSkillAttack, float skillAttack, RPGSkillAttr attackAttr, float skillDefense, RPGSkillAttr defenseAttr); //技能攻击 + static int skillCureResults(float playerSkillAttack, float skillAttack); //治疗 + + static int itemCure(int itemsId); //道具治疗 + +}; + +#endif /* defined(__OzgGameRPG__RPGComputingResults__) */ diff --git a/Classes/RPGData.h b/Classes/RPGData.h index eb12602..e87243a 100644 --- a/Classes/RPGData.h +++ b/Classes/RPGData.h @@ -28,8 +28,8 @@ public: float m_attack; float m_defense; float m_speed; - float m_magicAttack; - float m_magicDefense; + float m_skillAttack; + float m_skillDefense; int m_itemsIdArms; int m_itemsIdArmor; int m_level; @@ -58,8 +58,8 @@ public: float m_attack; float m_defense; float m_speed; - float m_magicAttack; - float m_magicDefense; + float m_skillAttack; + float m_skillDefense; int m_exp; string m_skill; string m_tex; @@ -80,6 +80,7 @@ class RPGSkill : public CCObject public: string m_name; + float m_skillAttack; int m_mp; RPGSkill(); diff --git a/Classes/RPGMapChoicePlayerMenuLayer.cpp b/Classes/RPGMapChoicePlayerMenuLayer.cpp new file mode 100644 index 0000000..40156ba --- /dev/null +++ b/Classes/RPGMapChoicePlayerMenuLayer.cpp @@ -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); +} diff --git a/Classes/RPGMapChoicePlayerMenuLayer.h b/Classes/RPGMapChoicePlayerMenuLayer.h new file mode 100644 index 0000000..52d181d --- /dev/null +++ b/Classes/RPGMapChoicePlayerMenuLayer.h @@ -0,0 +1,55 @@ +// +// RPGMapChoicePlayerMenuLayer.h +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +/* + //test + RPGMapChoicePlayerMenuLayer *choicePlayerMenuLayer = RPGMapChoicePlayerMenuLayer::create(&this->m_db, this, callfuncO_selector(RPGMapSceneLayer::test), 960, 640); + this->addChild(choicePlayerMenuLayer); + + void RPGMapSceneLayer::test(CCObject* obj) + { + CCLog("aaa"); + } + */ + +#ifndef __OzgGameRPG__RPGMapChoicePlayerMenuLayer__ +#define __OzgGameRPG__RPGMapChoicePlayerMenuLayer__ + +#include "cocos2d.h" +#include "RPGBaseSceneLayer.h" +#include "OzgCCUtility.h" + +USING_NS_CC; + +enum RPGMapChoicePlayerMenuLayerTag +{ + kRPGMapChoicePlayerMenuLayerTagMainMenu = 1, + kRPGMapChoicePlayerMenuLayerTagBg = 2, + kRPGMapChoicePlayerMenuLayerTagMainMenuPlayer = 100 +}; + +class RPGMapChoicePlayerMenuLayer : public CCLayerColor +{ + +private: + + CppSQLite3DB* m_db; + CCObject* m_target; + + void onMenu(CCObject *pObject); + +public: + + RPGMapChoicePlayerMenuLayer(); + virtual ~RPGMapChoicePlayerMenuLayer(); + + bool init(CppSQLite3DB *db, CCObject* target, SEL_CallFuncO selector, float width, float height); + static RPGMapChoicePlayerMenuLayer* create(CppSQLite3DB *db, CCObject* target, SEL_CallFuncO selector, float width, float height); +}; + +#endif /* defined(__OzgGameRPG__RPGMapChoicePlayerMenuLayer__) */ diff --git a/Classes/RPGMapEquipMenuLayer.cpp b/Classes/RPGMapEquipMenuLayer.cpp new file mode 100644 index 0000000..09f0c5f --- /dev/null +++ b/Classes/RPGMapEquipMenuLayer.cpp @@ -0,0 +1,101 @@ +// +// RPGMapEquipMenuLayer.cpp +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +#include "RPGMapEquipMenuLayer.h" +#include "RPGMapMenuLayer.h" +#include "RPGMapSceneLayer.h" + +RPGMapEquipMenuLayer::RPGMapEquipMenuLayer() +{ + +} + +RPGMapEquipMenuLayer::~RPGMapEquipMenuLayer() +{ + this->m_stringList->release(); + + CCLog("RPGMapEquipMenuLayer 释放"); +} + +bool RPGMapEquipMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height) +{ + if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height)) + { + this->m_stringList = stringList; + this->m_stringList->retain(); + + this->m_db = db; + + CCMenu *mainMenu = CCMenu::create(); + mainMenu->setTag(kRPGMapEquipMenuLayerTagMainMenu); + mainMenu->setAnchorPoint(CCPointZero); + mainMenu->setPosition(CCPointZero); + this->addChild(mainMenu); + + CCMenuItemSprite *menuBack = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapEquipMenuLayerTagMainMenuBack); + if(!menuBack) + { + menuBack = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), this, menu_selector(RPGMapEquipMenuLayer::onMenu)); + menuBack->setPosition(ccp(40, 600)); + menuBack->setTag(kRPGMapEquipMenuLayerTagMainMenuBack); + menuBack->setScale(0.5); + mainMenu->addChild(menuBack); + } + + CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu2_style1.tmx"); + mainBg->setPosition(CCPointZero); + mainBg->setTag(kRPGMapEquipMenuLayerTagBg); + this->addChild(mainBg); + + return true; + } + return false; +} + +RPGMapEquipMenuLayer* RPGMapEquipMenuLayer::create(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height) +{ + RPGMapEquipMenuLayer *obj = new RPGMapEquipMenuLayer(); + if(obj && obj->init(stringList, db, width, height)) + { + obj->autorelease(); + return obj; + } + CC_SAFE_DELETE(obj); + return NULL; +} + +//private +void RPGMapEquipMenuLayer::onMenu(cocos2d::CCObject *pObject) +{ + CCMenuItem *menuItem = (CCMenuItem*)pObject; + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + switch (menuItem->getTag()) + { + case kRPGMapEquipMenuLayerTagMainMenuBack: + { +// CCLog("后退"); + + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapMenuLayer *menuLayer = menuLayer = RPGMapMenuLayer::create(this->m_stringList, this->m_db, width, height); + menuLayer->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2.0, (CCDirector::sharedDirector()->getWinSize().height - height) / 2.0)); + menuLayer->setTag(kRPGMapSceneLayerTagMenuLayer); + this->getParent()->addChild(menuLayer); + + this->removeFromParentAndCleanup(true); + + } + break; + + default: + break; + } + +} diff --git a/Classes/RPGMapEquipMenuLayer.h b/Classes/RPGMapEquipMenuLayer.h new file mode 100644 index 0000000..3bdb88a --- /dev/null +++ b/Classes/RPGMapEquipMenuLayer.h @@ -0,0 +1,49 @@ +// +// RPGMapEquipMenuLayer.h +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +#ifndef __OzgGameRPG__RPGMapEquipMenuLayer__ +#define __OzgGameRPG__RPGMapEquipMenuLayer__ + +#include "cocos2d.h" +#include "cocos-ext.h" +#include "CppSQLite3.h" +#include "JsonBox.h" +#include "RPGMapRoleSprite.h" +#include "RPGBaseSceneLayer.h" + +USING_NS_CC; +USING_NS_CC_EXT; + +enum RPGMapEquipMenuLayerTag +{ + kRPGMapEquipMenuLayerTagMainMenu = 1, + kRPGMapEquipMenuLayerTagMainMenuBack = 2, + kRPGMapEquipMenuLayerTagBg = 3 + +}; + +class RPGMapEquipMenuLayer : public CCLayerColor//, CCTableViewDelegate, CCTableViewDataSource +{ + +private: + CCDictionary* m_stringList; + CppSQLite3DB* m_db; + + void onMenu(cocos2d::CCObject *pObject); + +public: + + RPGMapEquipMenuLayer(); + virtual ~RPGMapEquipMenuLayer(); + + bool init(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); + static RPGMapEquipMenuLayer* create(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); + +}; + +#endif /* defined(__OzgGameRPG__RPGMapEquipMenuLayer__) */ diff --git a/Classes/RPGMapItemsMenuLayer.cpp b/Classes/RPGMapItemsMenuLayer.cpp new file mode 100644 index 0000000..11f99b2 --- /dev/null +++ b/Classes/RPGMapItemsMenuLayer.cpp @@ -0,0 +1,101 @@ +// +// RPGMapItemsMenuLayer.cpp +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +#include "RPGMapItemsMenuLayer.h" +#include "RPGMapMenuLayer.h" +#include "RPGMapSceneLayer.h" + +RPGMapItemsMenuLayer::RPGMapItemsMenuLayer() +{ + +} + +RPGMapItemsMenuLayer::~RPGMapItemsMenuLayer() +{ + this->m_stringList->release(); + + CCLog("RPGMapItemsMenuLayer 释放"); +} + +bool RPGMapItemsMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height) +{ + if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height)) + { + this->m_stringList = stringList; + this->m_stringList->retain(); + + this->m_db = db; + + CCMenu *mainMenu = CCMenu::create(); + mainMenu->setTag(kRPGMapItemsMenuLayerTagMainMenu); + mainMenu->setAnchorPoint(CCPointZero); + mainMenu->setPosition(CCPointZero); + this->addChild(mainMenu); + + CCMenuItemSprite *menuBack = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapItemsMenuLayerTagMainMenuBack); + if(!menuBack) + { + menuBack = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), this, menu_selector(RPGMapItemsMenuLayer::onMenu)); + menuBack->setPosition(ccp(40, 600)); + menuBack->setTag(kRPGMapItemsMenuLayerTagMainMenuBack); + menuBack->setScale(0.5); + mainMenu->addChild(menuBack); + } + + CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu3_style1.tmx"); + mainBg->setPosition(CCPointZero); + mainBg->setTag(kRPGMapItemsMenuLayerTagBg); + this->addChild(mainBg); + + return true; + } + return false; +} + +RPGMapItemsMenuLayer* RPGMapItemsMenuLayer::create(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height) +{ + RPGMapItemsMenuLayer *obj = new RPGMapItemsMenuLayer(); + if(obj && obj->init(stringList, db, width, height)) + { + obj->autorelease(); + return obj; + } + CC_SAFE_DELETE(obj); + return NULL; +} + +//private +void RPGMapItemsMenuLayer::onMenu(cocos2d::CCObject *pObject) +{ + CCMenuItem *menuItem = (CCMenuItem*)pObject; + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + switch (menuItem->getTag()) + { + case kRPGMapItemsMenuLayerTagMainMenuBack: + { +// CCLog("后退"); + + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapMenuLayer *menuLayer = menuLayer = RPGMapMenuLayer::create(this->m_stringList, this->m_db, width, height); + menuLayer->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2.0, (CCDirector::sharedDirector()->getWinSize().height - height) / 2.0)); + menuLayer->setTag(kRPGMapSceneLayerTagMenuLayer); + this->getParent()->addChild(menuLayer); + + this->removeFromParentAndCleanup(true); + + } + break; + + default: + break; + } + +} diff --git a/Classes/RPGMapItemsMenuLayer.h b/Classes/RPGMapItemsMenuLayer.h new file mode 100644 index 0000000..41d575b --- /dev/null +++ b/Classes/RPGMapItemsMenuLayer.h @@ -0,0 +1,49 @@ +// +// RPGMapItemsMenuLayer.h +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +#ifndef __OzgGameRPG__RPGMapItemsMenuLayer__ +#define __OzgGameRPG__RPGMapItemsMenuLayer__ + +#include "cocos2d.h" +#include "cocos-ext.h" +#include "CppSQLite3.h" +#include "JsonBox.h" +#include "RPGMapRoleSprite.h" +#include "RPGBaseSceneLayer.h" + +USING_NS_CC; +USING_NS_CC_EXT; + +enum RPGMapItemsMenuLayerTag +{ + kRPGMapItemsMenuLayerTagMainMenu = 1, + kRPGMapItemsMenuLayerTagMainMenuBack = 2, + kRPGMapItemsMenuLayerTagBg = 3 + +}; + +class RPGMapItemsMenuLayer : public CCLayerColor//, CCTableViewDelegate, CCTableViewDataSource +{ + +private: + CCDictionary* m_stringList; + CppSQLite3DB* m_db; + + void onMenu(cocos2d::CCObject *pObject); + +public: + + RPGMapItemsMenuLayer(); + virtual ~RPGMapItemsMenuLayer(); + + bool init(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); + static RPGMapItemsMenuLayer* create(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); + +}; + +#endif /* defined(__OzgGameRPG__RPGMapItemsMenuLayer__) */ diff --git a/Classes/RPGMapMenuLayer.cpp b/Classes/RPGMapMenuLayer.cpp index 7e18aa2..5023978 100755 --- a/Classes/RPGMapMenuLayer.cpp +++ b/Classes/RPGMapMenuLayer.cpp @@ -12,12 +12,10 @@ #include "RPGStartSceneLayer.h" #include "JsonBox.h" #include "OzgCCUtility.h" - -//获取一个player的详细数据 -#define PLAYER_QUERY_DETAIL "select p.*, arms.name_cns as arms_name, armor.name_cns as armor_name from player as p left join items as arms on p.items_id_arms = arms.id left join items as armor on p.items_id_armor = armor.id where p.id = %i" - -//查询一个角色的技能 -#define SKILL_QUERY "select * from skill where id in(%s)" +#include "RPGMapStatusMenuLayer.h" +#include "RPGMapItemsMenuLayer.h" +#include "RPGMapEquipMenuLayer.h" +#include "RPGMapSkillMenuLayer.h" RPGMapMenuLayer::RPGMapMenuLayer() { @@ -27,7 +25,6 @@ RPGMapMenuLayer::RPGMapMenuLayer() RPGMapMenuLayer::~RPGMapMenuLayer() { this->m_stringList->release(); - this->m_skillList->release(); // CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo(); @@ -40,17 +37,12 @@ bool RPGMapMenuLayer::init(CCDictionary* stringList, CppSQLite3DB* db, float wid { this->m_stringList = stringList; this->m_stringList->retain(); - - this->m_skillList = new CCArray(); - this->m_skillList->init(); - + this->m_db = db; this->m_width = width; this->m_height = height; - this->m_statusIsDefault = true; - // CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("main.plist"); CCMenu *mainMenu = CCMenu::create(); @@ -89,42 +81,56 @@ RPGMapMenuLayer* RPGMapMenuLayer::create(CCDictionary* stringList, CppSQLite3DB* //private void RPGMapMenuLayer::onMenu(cocos2d::CCObject *pObject) { - CCMenuItem *menuItem = (CCMenuItem*)pObject; - - //除默认显示角色数据之外,其他所有的点击都有效果音 - if(!(this->m_statusIsDefault && menuItem->getTag() == kRPGMapMenuLayerTagMainMenuPlayerStatus + 1)) - SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + CCMenuItem *menuItem = (CCMenuItem*)pObject; + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); switch (menuItem->getTag()) { case kRPGMapMenuLayerTagMainMenuEquip: { - CCLog("装备"); +// CCLog("装备"); + + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapEquipMenuLayer *menuLayer = RPGMapEquipMenuLayer::create(this->m_stringList, this->m_db, width, height); + menuLayer->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2.0, (CCDirector::sharedDirector()->getWinSize().height - height) / 2.0)); + menuLayer->setTag(kRPGMapSceneLayerTagMenuLayer); + this->getParent()->addChild(menuLayer); + + this->removeFromParentAndCleanup(true); } break; case kRPGMapMenuLayerTagMainMenuSkill: { - CCLog("技能"); +// CCLog("技能"); + + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapSkillMenuLayer *menuLayer = RPGMapSkillMenuLayer::create(this->m_stringList, this->m_db, width, height); + menuLayer->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2.0, (CCDirector::sharedDirector()->getWinSize().height - height) / 2.0)); + menuLayer->setTag(kRPGMapSceneLayerTagMenuLayer); + this->getParent()->addChild(menuLayer); + + this->removeFromParentAndCleanup(true); } break; case kRPGMapMenuLayerTagMainMenuStatus: { // CCLog("状态"); - this->m_statusIsDefault = true; - this->removeDefaultInterface(); - this->removeChildByTag(kRPGMapMenuLayerTagMainBg, true); + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapStatusMenuLayer *menuLayer = RPGMapStatusMenuLayer::create(this->m_stringList, this->m_db, width, height); + menuLayer->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2.0, (CCDirector::sharedDirector()->getWinSize().height - height) / 2.0)); + menuLayer->setTag(kRPGMapSceneLayerTagMenuLayer); + this->getParent()->addChild(menuLayer); - this->setMainMenuStatus(); - - CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu4_style1.tmx"); - mainBg->setPosition(CCPointZero); - mainBg->setTag(kRPGMapMenuLayerTagMainBg); - this->addChild(mainBg); - - this->setStatusInterface(); + this->removeFromParentAndCleanup(true); } break; case kRPGMapMenuLayerTagMainMenuClose: @@ -148,44 +154,6 @@ void RPGMapMenuLayer::onMenu(cocos2d::CCObject *pObject) CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); mainMenu->setEnabled(false); - } - break; - case kRPGMapMenuLayerTagMainMenuStatusBack: - { - //在状态界面中按后退 - this->removeChildByTag(kRPGMapMenuLayerTagMainBg, true); - - this->setMainMenuDefault(); - this->setDefaultInterface(); - - CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu1_style1.tmx"); - mainBg->setPosition(CCPointZero); - mainBg->setTag(kRPGMapMenuLayerTagMainBg); - this->addChild(mainBg); - - //清理上面的4个角色 - CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); - CppSQLite3Query query = this->m_db->execQuery(PLAYER_QUERY); - while(!query.eof()) - { - CCMenuItemSprite *player = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapMenuLayerTagMainMenuPlayerStatus + query.getIntField("id")); - if(player) - player->removeFromParentAndCleanup(true); - - CCTextureCache::sharedTextureCache()->removeTextureForKey(CCString::createWithFormat("%s_0.png", query.getStringField("tex_prefix"))->getCString()); - - query.nextRow(); - } - query.finalize(); - - //清理各个lab部分 - this->removeAllStatusPlayerLab(); - - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerSkillTable, true); - this->m_skillList->removeAllObjects(); - - //清理光标 - this->removeChildByTag(kRPGMapMenuLayerTagHandCursor, true); } break; case kRPGMapMenuLayerTagConfirmExitOK: @@ -214,54 +182,22 @@ void RPGMapMenuLayer::onMenu(cocos2d::CCObject *pObject) break; case kRPGMapMenuLayerTagMainMenuItems: { - CCLog("道具"); +// CCLog("道具"); + + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapItemsMenuLayer *menuLayer = RPGMapItemsMenuLayer::create(this->m_stringList, this->m_db, width, height); + menuLayer->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2.0, (CCDirector::sharedDirector()->getWinSize().height - height) / 2.0)); + menuLayer->setTag(kRPGMapSceneLayerTagMenuLayer); + this->getParent()->addChild(menuLayer); + + this->removeFromParentAndCleanup(true); } break; } - - //player status - if(menuItem->getTag() >= kRPGMapMenuLayerTagMainMenuPlayerStatus && menuItem->getTag() <= kRPGMapMenuLayerTagMainMenuPlayerStatus + 99) - { - CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); - CppSQLite3Query query = this->m_db->execQuery(PLAYER_QUERY); - while(!query.eof()) - { - if(menuItem->getTag() == kRPGMapMenuLayerTagMainMenuPlayerStatus + query.getIntField("id")) - { - this->removeAllStatusPlayerLab(); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerSkillTable)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerSkillTable, true); - this->m_skillList->removeAllObjects(); - - this->m_statusIsDefault = false; - -// CCLog("选中了id为%i的角色", query.getIntField("id")); - int dataId = query.getIntField("id"); - this->setStatusPlayer(dataId); - CCMenuItemSprite *player = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapMenuLayerTagMainMenuPlayerStatus + dataId); - - CCSprite *handCursor = (CCSprite*)this->getChildByTag(kRPGMapMenuLayerTagHandCursor); - if(!handCursor) - { - handCursor = CCSprite::createWithSpriteFrameName("gui_hand.png"); - handCursor->setScale(0.3); - handCursor->setTag(kRPGMapMenuLayerTagHandCursor); - this->addChild(handCursor); - } - - //光标的位置 - handCursor->setPosition(ccp(player->getPositionX() + 60, 555)); - - break; - } - query.nextRow(); - } - query.finalize(); - } - } void RPGMapMenuLayer::createMenuItem(float x, float y, CCString *text, RPGMapMenuLayerTag tag) @@ -321,38 +257,10 @@ void RPGMapMenuLayer::setMainMenuDefault() } } -void RPGMapMenuLayer::setMainMenuStatus() -{ - CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); - - CCMenuItemSprite *menuBack = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapMenuLayerTagMainMenuStatusBack); - if(!menuBack) - { - menuBack = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), this, menu_selector(RPGMapMenuLayer::onMenu)); - menuBack->setPosition(ccp(40, 600)); - menuBack->setTag(kRPGMapMenuLayerTagMainMenuStatusBack); - menuBack->setScale(0.5); - mainMenu->addChild(menuBack); - - } - - CCObject *item = NULL; - CCARRAY_FOREACH(mainMenu->getChildren(), item) - { - CCMenuItem *menuItem = (CCMenuItem*)item; - - if(menuItem->getTag() == kRPGMapMenuLayerTagMainMenuStatusBack) - menuItem->setVisible(true); - else - menuItem->setVisible(false); - - } -} - void RPGMapMenuLayer::setDefaultInterface() { - //显示上面的4个角色 + //显示左边的4个角色 float playerY = 550; float nameY = 547; float levelY = 568; @@ -389,238 +297,3 @@ void RPGMapMenuLayer::setDefaultInterface() query.finalize(); } - -void RPGMapMenuLayer::removeDefaultInterface() -{ - CppSQLite3Query query = this->m_db->execQuery(PLAYER_QUERY); - while(!query.eof()) - { - - CCSprite *playerSprite = (CCSprite*)this->getChildByTag(kRPGMapMenuLayerTagDefualtPlayerTex + query.getIntField("id")); - if(playerSprite) - playerSprite->removeFromParentAndCleanup(true); - - CCLabelTTF *nameLab = (CCLabelTTF*)this->getChildByTag(kRPGMapMenuLayerTagDefualtPlayerName + query.getIntField("id")); - if(nameLab) - nameLab->removeFromParentAndCleanup(true); - - CCLabelTTF *levelLab = (CCLabelTTF*)this->getChildByTag(kRPGMapMenuLayerTagDefualtPlayerLevel + query.getIntField("id")); - if(levelLab) - levelLab->removeFromParentAndCleanup(true); - - CCLabelTTF *hpLab = (CCLabelTTF*)this->getChildByTag(kRPGMapMenuLayerTagDefualtPlayerHP + query.getIntField("id")); - if(hpLab) - hpLab->removeFromParentAndCleanup(true); - - CCLabelTTF *mpLab = (CCLabelTTF*)this->getChildByTag(kRPGMapMenuLayerTagDefualtPlayerMP + query.getIntField("id")); - if(mpLab) - mpLab->removeFromParentAndCleanup(true); - - query.nextRow(); - } - query.finalize(); - -} - -void RPGMapMenuLayer::setStatusInterface() -{ - CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); - - //显示上面的4个角色 - float playerX = 200; - 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(kRPGMapMenuLayerTagMainMenuPlayerStatus + query.getIntField("id")); - if(!player) - { - player = CCMenuItemSprite::create(playerSprite, playerSprite, this, menu_selector(RPGMapMenuLayer::onMenu)); - player->cocos2d::CCNode::setPosition(ccp(playerX, 560)); - player->setScale(2); - player->setTag(kRPGMapMenuLayerTagMainMenuPlayerStatus + query.getIntField("id")); - mainMenu->addChild(player); - } - - playerX += 200; - query.nextRow(); - } - query.finalize(); - - //默认选中第一个 - this->onMenu(mainMenu->getChildByTag(kRPGMapMenuLayerTagMainMenuPlayerStatus + 1)); -} - -void RPGMapMenuLayer::setStatusPlayer(int dataId) -{ - CppSQLite3Query query = this->m_db->execQuery(CCString::createWithFormat(PLAYER_QUERY_DETAIL, dataId)->getCString()); - while(!query.eof()) - { - //左边 - addLab(this, kRPGMapMenuLayerTagStatusPlayerName, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_name"))->getCString(), query.getStringField("name_cns")), ccp(250, 410)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerLevel, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_level"))->getCString(), query.getIntField("level"), query.getIntField("next_exp")), ccp(243, 370)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerHP, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_hp"))->getCString(), query.getIntField("hp"), query.getIntField("max_hp")), ccp(262, 330)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerMP, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_mp"))->getCString(), query.getIntField("mp"), query.getIntField("max_mp")), ccp(259, 290)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerAttack, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_attack"))->getCString(), query.getIntField("attack")), ccp(249, 250)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerDefense, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_defense"))->getCString(), query.getIntField("defense")), ccp(249, 210)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerSpeed, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_speed"))->getCString(), query.getIntField("speed")), ccp(249, 170)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerMagicAttack, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_magic_attack"))->getCString(), query.getIntField("magic_attack")), ccp(249, 130)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerMagicDefense, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_magic_defense"))->getCString(), query.getIntField("magic_defense")), ccp(249, 90)); - - //右边装备部分 - addLab(this, kRPGMapMenuLayerTagStatusPlayerEquipArms, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_equip_arms"))->getCString(), query.getStringField("arms_name")), ccp(570, 410)); - addLab(this, kRPGMapMenuLayerTagStatusPlayerEquipArmor, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_equip_armor"))->getCString(), query.getStringField("armor_name")), ccp(570, 370)); - - //右边技能部分 - - //数据处理部分 - this->m_skillList->removeAllObjects(); - string wq = ""; - JsonBox::Value json; - json.loadFromString(query.getStringField("skill")); - JsonBox::Array jsonArr = json.getArray(); - for (int i = 0; i < jsonArr.size(); i++) - { - char* str = (char*)malloc(10 * sizeof(char)); - OzgCCUtility::itoa(jsonArr[i].getInt(), str); - wq.append(str); - - if(i + 1 < jsonArr.size()) - wq.append(", "); - - free(str); - } - if((int)wq.length() > 0) - { - CppSQLite3Query skillQuery = this->m_db->execQuery(CCString::createWithFormat(SKILL_QUERY, wq.c_str())->getCString()); - while(!skillQuery.eof()) - { - RPGSkill *skill = RPGSkill::create(); - skill->m_name = skillQuery.getStringField("name_cns"); - skill->m_mp = skillQuery.getIntField("mp"); - - this->m_skillList->addObject(skill); - - skillQuery.nextRow(); - } - skillQuery.finalize(); - } - - CCTableView *tableView = CCTableView::create(this, CCSizeMake(600, 265)); - tableView->setDirection(kCCScrollViewDirectionVertical); - tableView->setPosition(ccp(340, 20)); - tableView->setDelegate(this); - tableView->setVerticalFillOrder(kCCTableViewFillTopDown); - tableView->setTag(kRPGMapMenuLayerTagStatusPlayerSkillTable); - this->addChild(tableView); - tableView->reloadData(); - - query.nextRow(); - } - query.finalize(); - -} - -void RPGMapMenuLayer::removeAllStatusPlayerLab() -{ - //清理各个lab部分 - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerName)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerName, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerLevel)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerLevel, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerHP)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerHP, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerMP)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerMP, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerAttack)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerAttack, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerDefense)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerDefense, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerSpeed)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerSpeed, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerMagicAttack)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerMagicAttack, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerMagicDefense)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerMagicDefense, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerEquipArms)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerEquipArms, true); - - if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerEquipArmor)) - this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerEquipArmor, true); -} - -//CCTableView -void RPGMapMenuLayer::scrollViewDidScroll(CCScrollView *scrollView) -{ - -} - -void RPGMapMenuLayer::scrollViewDidZoom(CCScrollView *scrollView) -{ - -} - -void RPGMapMenuLayer::tableCellTouched(CCTableView *tableView, CCTableViewCell *cell) -{ - -} - -CCSize RPGMapMenuLayer::cellSizeForTable(CCTableView *tableView) -{ - return CCSizeMake(tableView->getContentSize().width, 80); -} - -CCTableViewCell* RPGMapMenuLayer::tableCellAtIndex(CCTableView *tableView, unsigned int idx) -{ - CCTableViewCell *cell = tableView->dequeueCell(); - if (!cell) - { - cell = new CCTableViewCell(); - cell->autorelease(); - } - else - cell->removeAllChildrenWithCleanup(true); - - float x = 150; - for (int i = 0; i < 3; i++) - { - int index = idx * 3 + i; - - if(index >= this->m_skillList->count()) - break; - - RPGSkill *skillData = (RPGSkill*)this->m_skillList->objectAtIndex(index); - - CCLabelTTF *textLab = CCLabelTTF::create(CCString::createWithFormat("%s (%i)", skillData->m_name.c_str(), skillData->m_mp)->getCString(), "Arial", 20, CCSizeMake(200, 25), kCCTextAlignmentLeft); - textLab->setPosition(ccp(x, 0)); - cell->addChild(textLab); - - x += 200; - } - - return cell; -} - -unsigned int RPGMapMenuLayer::numberOfCellsInTableView(CCTableView *tableView) -{ - int rowItemCount = 3; - int size = this->m_skillList->count(); - - if(size % rowItemCount == 0) - return size / rowItemCount; - else - return size / rowItemCount + 1; -} - -//CCTableView end diff --git a/Classes/RPGMapMenuLayer.h b/Classes/RPGMapMenuLayer.h index 8827591..1bc2724 100755 --- a/Classes/RPGMapMenuLayer.h +++ b/Classes/RPGMapMenuLayer.h @@ -29,8 +29,6 @@ enum RPGMapMenuLayerTag kRPGMapMenuLayerTagMainMenuStatus = 6, kRPGMapMenuLayerTagMainMenuClose = 7, kRPGMapMenuLayerTagMainMenuExit = 8, - kRPGMapMenuLayerTagMainMenuStatusBack = 12, - kRPGMapMenuLayerTagMainMenuPlayerStatus = 100, kRPGMapMenuLayerTagHandCursor = 22, kRPGMapMenuLayerTagConfirmExitOK = 9, kRPGMapMenuLayerTagConfirmCancel = 10, @@ -42,11 +40,10 @@ enum RPGMapMenuLayerTag kRPGMapMenuLayerTagStatusPlayerAttack = 17, kRPGMapMenuLayerTagStatusPlayerDefense = 18, kRPGMapMenuLayerTagStatusPlayerSpeed = 19, - kRPGMapMenuLayerTagStatusPlayerMagicAttack = 20, - kRPGMapMenuLayerTagStatusPlayerMagicDefense = 21, + kRPGMapMenuLayerTagStatusPlayerSkillAttack = 20, + kRPGMapMenuLayerTagStatusPlayerSkillDefense = 21, kRPGMapMenuLayerTagStatusPlayerEquipArms = 23, kRPGMapMenuLayerTagStatusPlayerEquipArmor = 24, - kRPGMapMenuLayerTagStatusPlayerSkillTable = 25, kRPGMapMenuLayerTagDefualtPlayerTex = 200, kRPGMapMenuLayerTagDefualtPlayerName = 300, kRPGMapMenuLayerTagDefualtPlayerLevel = 400, @@ -55,33 +52,23 @@ enum RPGMapMenuLayerTag }; -class RPGMapMenuLayer : public CCLayerColor, public CCTableViewDelegate, public CCTableViewDataSource +class RPGMapMenuLayer : public CCLayerColor { private: - - CCArray* m_skillList; //状态界面的技能列表 - + CCDictionary* m_stringList; CppSQLite3DB* m_db; float m_width; float m_height; - - bool m_statusIsDefault; //是否为第一次进入状态界面,如果是的话就不播放效果音了 - + void onMenu(CCObject *pObject); void createMenuItem(float x, float y, CCString *text, RPGMapMenuLayerTag tag); - void setMainMenuDefault(); //默认 - void setMainMenuStatus(); //状态 - - void setDefaultInterface(); //显示默认界面 - void removeDefaultInterface(); //清理默认界面 - - void setStatusInterface(); //显示状态界面 - void setStatusPlayer(int dataId); //显示状态界面的player数据部分 - void removeAllStatusPlayerLab(); //清理所有状态界面的lab + void setMainMenuDefault(); //显示右边的菜单 + + void setDefaultInterface(); //显示左边的界面 public: @@ -89,20 +76,7 @@ public: virtual ~RPGMapMenuLayer(); bool init(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); static RPGMapMenuLayer* create(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); - - //CCTableViewDelegate继承自CCScrollViewDelegate - virtual void scrollViewDidScroll(CCScrollView* scrollView); - virtual void scrollViewDidZoom(CCScrollView* scrollView); - - //点击哪个cell - virtual void tableCellTouched(CCTableView* tableView, CCTableViewCell* cell); - //每个cell的size - virtual CCSize cellSizeForTable(CCTableView *tableView); - //生成cell - virtual CCTableViewCell* tableCellAtIndex(CCTableView *tableView, unsigned int idx); - //cell的数量 - virtual unsigned int numberOfCellsInTableView(CCTableView *tableView); - + }; #endif /* defined(__OzgGameRPG__RPGMapMenuLayer__) */ diff --git a/Classes/RPGMapSkillMenuLayer.cpp b/Classes/RPGMapSkillMenuLayer.cpp new file mode 100644 index 0000000..e7812d6 --- /dev/null +++ b/Classes/RPGMapSkillMenuLayer.cpp @@ -0,0 +1,101 @@ +// +// RPGMapSkillMenuLayer.cpp +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +#include "RPGMapSkillMenuLayer.h" +#include "RPGMapMenuLayer.h" +#include "RPGMapSceneLayer.h" + +RPGMapSkillMenuLayer::RPGMapSkillMenuLayer() +{ + +} + +RPGMapSkillMenuLayer::~RPGMapSkillMenuLayer() +{ + this->m_stringList->release(); + + CCLog("RPGMapSkillMenuLayer 释放"); +} + +bool RPGMapSkillMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height) +{ + if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height)) + { + this->m_stringList = stringList; + this->m_stringList->retain(); + + this->m_db = db; + + CCMenu *mainMenu = CCMenu::create(); + mainMenu->setTag(kRPGMapSkillMenuLayerTagMainMenu); + mainMenu->setAnchorPoint(CCPointZero); + mainMenu->setPosition(CCPointZero); + this->addChild(mainMenu); + + CCMenuItemSprite *menuBack = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapSkillMenuLayerTagMainMenuBack); + if(!menuBack) + { + menuBack = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), this, menu_selector(RPGMapSkillMenuLayer::onMenu)); + menuBack->setPosition(ccp(40, 600)); + menuBack->setTag(kRPGMapSkillMenuLayerTagMainMenuBack); + menuBack->setScale(0.5); + mainMenu->addChild(menuBack); + } + + CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu3_style1.tmx"); + mainBg->setPosition(CCPointZero); + mainBg->setTag(kRPGMapSkillMenuLayerTagBg); + this->addChild(mainBg); + + return true; + } + return false; +} + +RPGMapSkillMenuLayer* RPGMapSkillMenuLayer::create(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height) +{ + RPGMapSkillMenuLayer *obj = new RPGMapSkillMenuLayer(); + if(obj && obj->init(stringList, db, width, height)) + { + obj->autorelease(); + return obj; + } + CC_SAFE_DELETE(obj); + return NULL; +} + +//private +void RPGMapSkillMenuLayer::onMenu(cocos2d::CCObject *pObject) +{ + CCMenuItem *menuItem = (CCMenuItem*)pObject; + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + switch (menuItem->getTag()) + { + case kRPGMapSkillMenuLayerTagMainMenuBack: + { +// CCLog("后退"); + + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapMenuLayer *menuLayer = menuLayer = RPGMapMenuLayer::create(this->m_stringList, this->m_db, width, height); + menuLayer->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2.0, (CCDirector::sharedDirector()->getWinSize().height - height) / 2.0)); + menuLayer->setTag(kRPGMapSceneLayerTagMenuLayer); + this->getParent()->addChild(menuLayer); + + this->removeFromParentAndCleanup(true); + + } + break; + + default: + break; + } + +} diff --git a/Classes/RPGMapSkillMenuLayer.h b/Classes/RPGMapSkillMenuLayer.h new file mode 100644 index 0000000..6cce218 --- /dev/null +++ b/Classes/RPGMapSkillMenuLayer.h @@ -0,0 +1,49 @@ +// +// RPGMapSkillMenuLayer.h +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +#ifndef __OzgGameRPG__RPGMapSkillMenuLayer__ +#define __OzgGameRPG__RPGMapSkillMenuLayer__ + +#include "cocos2d.h" +#include "cocos-ext.h" +#include "CppSQLite3.h" +#include "JsonBox.h" +#include "RPGMapRoleSprite.h" +#include "RPGBaseSceneLayer.h" + +USING_NS_CC; +USING_NS_CC_EXT; + +enum RPGMapSkillMenuLayerTag +{ + kRPGMapSkillMenuLayerTagMainMenu = 1, + kRPGMapSkillMenuLayerTagMainMenuBack = 2, + kRPGMapSkillMenuLayerTagBg = 3 + +}; + +class RPGMapSkillMenuLayer : public CCLayerColor//, CCTableViewDelegate, CCTableViewDataSource +{ + +private: + CCDictionary* m_stringList; + CppSQLite3DB* m_db; + + void onMenu(cocos2d::CCObject *pObject); + +public: + + RPGMapSkillMenuLayer(); + virtual ~RPGMapSkillMenuLayer(); + + bool init(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); + static RPGMapSkillMenuLayer* create(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); + +}; + +#endif /* defined(__OzgGameRPG__RPGMapSkillMenuLayer__) */ diff --git a/Classes/RPGMapStatusMenuLayer.cpp b/Classes/RPGMapStatusMenuLayer.cpp new file mode 100644 index 0000000..55888b1 --- /dev/null +++ b/Classes/RPGMapStatusMenuLayer.cpp @@ -0,0 +1,361 @@ +// +// RPGMapStatusMenuLayer.cpp +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +#include "RPGMapStatusMenuLayer.h" +#include "RPGMapMenuLayer.h" +#include "RPGMapSceneLayer.h" +#include "OzgCCUtility.h" + +//获取一个player的详细数据 +#define PLAYER_QUERY_DETAIL "select p.*, arms.name_cns as arms_name, armor.name_cns as armor_name from player as p left join items as arms on p.items_id_arms = arms.id left join items as armor on p.items_id_armor = armor.id where p.id = %i" + +//查询一个角色的技能 +#define SKILL_QUERY "select * from skill where id in(%s)" + +RPGMapStatusMenuLayer::RPGMapStatusMenuLayer() +{ + +} + +RPGMapStatusMenuLayer::~RPGMapStatusMenuLayer() +{ + this->m_stringList->release(); + this->m_skillList->release(); + +// CCLog("RPGMapStatusMenuLayer 释放"); +} + +bool RPGMapStatusMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height) +{ + if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height)) + { + this->m_stringList = stringList; + this->m_stringList->retain(); + + this->m_db = db; + + this->m_skillList = new CCArray(); + this->m_skillList->init(); + + this->m_statusIsDefault = true; + + CCMenu *mainMenu = CCMenu::create(); + mainMenu->setTag(kRPGMapStatusMenuLayerTagMainMenu); + mainMenu->setAnchorPoint(CCPointZero); + mainMenu->setPosition(CCPointZero); + this->addChild(mainMenu); + + CCMenuItemSprite *menuBack = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapStatusMenuLayerTagMainMenuBack); + if(!menuBack) + { + menuBack = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), this, menu_selector(RPGMapStatusMenuLayer::onMenu)); + menuBack->setPosition(ccp(40, 600)); + menuBack->setTag(kRPGMapStatusMenuLayerTagMainMenuBack); + menuBack->setScale(0.5); + mainMenu->addChild(menuBack); + } + + CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu4_style1.tmx"); + mainBg->setPosition(CCPointZero); + mainBg->setTag(kRPGMapStatusMenuLayerTagBg); + this->addChild(mainBg); + + //显示上面的4个角色 + float playerX = 200; + 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(kRPGMapStatusMenuLayerTagMainMenuPlayer + query.getIntField("id")); + if(!player) + { + player = CCMenuItemSprite::create(playerSprite, playerSprite, this, menu_selector(RPGMapStatusMenuLayer::onMenu)); + player->cocos2d::CCNode::setPosition(ccp(playerX, 560)); + player->setScale(2); + player->setTag(kRPGMapStatusMenuLayerTagMainMenuPlayer + query.getIntField("id")); + mainMenu->addChild(player); + } + + playerX += 200; + query.nextRow(); + } + query.finalize(); + + //默认选中第一个 + this->onMenu(mainMenu->getChildByTag(kRPGMapStatusMenuLayerTagMainMenuPlayer + 1)); + + return true; + } + return false; +} + +RPGMapStatusMenuLayer* RPGMapStatusMenuLayer::create(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height) +{ + RPGMapStatusMenuLayer *obj = new RPGMapStatusMenuLayer(); + if(obj && obj->init(stringList, db, width, height)) + { + obj->autorelease(); + return obj; + } + + CC_SAFE_DELETE(obj); + return NULL; +} + +//private +void RPGMapStatusMenuLayer::onMenu(cocos2d::CCObject *pObject) +{ + //第一次显示数据的话则不播放效果音 + if(!this->m_statusIsDefault) + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + CCMenuItem *menuItem = (CCMenuItem*)pObject; + + switch (menuItem->getTag()) + { + case kRPGMapStatusMenuLayerTagMainMenuBack: + { +// CCLog("后退"); + + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapMenuLayer *menuLayer = menuLayer = RPGMapMenuLayer::create(this->m_stringList, this->m_db, width, height); + menuLayer->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2.0, (CCDirector::sharedDirector()->getWinSize().height - height) / 2.0)); + menuLayer->setTag(kRPGMapSceneLayerTagMenuLayer); + this->getParent()->addChild(menuLayer); + + this->removeFromParentAndCleanup(true); + + } + break; + + default: + break; + } + + //player status + if(menuItem->getTag() >= kRPGMapStatusMenuLayerTagMainMenuPlayer && menuItem->getTag() <= kRPGMapStatusMenuLayerTagMainMenuPlayer + 99) + { + CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); + + CppSQLite3Query query = this->m_db->execQuery(PLAYER_QUERY); + while(!query.eof()) + { + if(menuItem->getTag() == kRPGMapStatusMenuLayerTagMainMenuPlayer + query.getIntField("id")) + { + this->m_statusIsDefault = false; + +// CCLog("选中了id为%i的角色", query.getIntField("id")); + int dataId = query.getIntField("id"); + this->setStatusPlayer(dataId); + + //选中的光标部分 + CCMenuItemSprite *player = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapStatusMenuLayerTagMainMenuPlayer + dataId); + + CCSprite *handCursor = (CCSprite*)this->getChildByTag(kRPGMapMenuLayerTagHandCursor); + if(!handCursor) + { + handCursor = CCSprite::createWithSpriteFrameName("gui_hand.png"); + handCursor->setScale(0.3); + handCursor->setTag(kRPGMapMenuLayerTagHandCursor); + this->addChild(handCursor); + } + + //光标的位置 + handCursor->setPosition(ccp(player->getPositionX() + 60, 555)); + + break; + } + query.nextRow(); + } + query.finalize(); + } + +} + +void RPGMapStatusMenuLayer::setStatusPlayer(int dataId) +{ + this->removeAllPlayerLab(); + + CppSQLite3Query query = this->m_db->execQuery(CCString::createWithFormat(PLAYER_QUERY_DETAIL, dataId)->getCString()); + while(!query.eof()) + { + //左边 + addLab(this, kRPGMapMenuLayerTagStatusPlayerName, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_name"))->getCString(), query.getStringField("name_cns")), ccp(250, 410)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerLevel, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_level"))->getCString(), query.getIntField("level"), query.getIntField("next_exp")), ccp(243, 370)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerHP, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_hp"))->getCString(), query.getIntField("hp"), query.getIntField("max_hp")), ccp(262, 330)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerMP, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_mp"))->getCString(), query.getIntField("mp"), query.getIntField("max_mp")), ccp(259, 290)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerAttack, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_attack"))->getCString(), query.getIntField("attack")), ccp(249, 250)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerDefense, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_defense"))->getCString(), query.getIntField("defense")), ccp(249, 210)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerSpeed, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_speed"))->getCString(), query.getIntField("speed")), ccp(249, 170)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerSkillAttack, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_skill_attack"))->getCString(), query.getIntField("skill_attack")), ccp(249, 130)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerSkillDefense, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_skill_defense"))->getCString(), query.getIntField("skill_defense")), ccp(249, 90)); + + //右边装备部分 + addLab(this, kRPGMapMenuLayerTagStatusPlayerEquipArms, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_equip_arms"))->getCString(), query.getStringField("arms_name")), ccp(570, 410)); + addLab(this, kRPGMapMenuLayerTagStatusPlayerEquipArmor, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("status_equip_armor"))->getCString(), query.getStringField("armor_name")), ccp(570, 370)); + + //右边技能部分 + + //数据处理部分 + this->m_skillList->removeAllObjects(); + string wq = ""; + JsonBox::Value json; + json.loadFromString(query.getStringField("skill")); + JsonBox::Array jsonArr = json.getArray(); + for (int i = 0; i < jsonArr.size(); i++) + { + char* str = (char*)malloc(10 * sizeof(char)); + OzgCCUtility::itoa(jsonArr[i].getInt(), str); + wq.append(str); + + if(i + 1 < jsonArr.size()) + wq.append(", "); + + free(str); + } + if((int)wq.length() > 0) + { + CppSQLite3Query skillQuery = this->m_db->execQuery(CCString::createWithFormat(SKILL_QUERY, wq.c_str())->getCString()); + while(!skillQuery.eof()) + { + RPGSkill *skill = RPGSkill::create(); + skill->m_name = skillQuery.getStringField("name_cns"); + skill->m_mp = skillQuery.getIntField("mp"); + skill->m_skillAttack = skillQuery.getIntField("skill_attack"); + + this->m_skillList->addObject(skill); + + skillQuery.nextRow(); + } + skillQuery.finalize(); + } + + CCTableView *tableView = (CCTableView*)this->getChildByTag(kRPGMapStatusMenuLayerTagPlayerSkillTable); + if(!tableView) + { + tableView = CCTableView::create(this, CCSizeMake(600, 265)); + tableView->setDirection(kCCScrollViewDirectionVertical); + tableView->setPosition(ccp(340, 20)); + tableView->setDelegate(this); + tableView->setVerticalFillOrder(kCCTableViewFillTopDown); + tableView->setTag(kRPGMapStatusMenuLayerTagPlayerSkillTable); + this->addChild(tableView); + } + tableView->reloadData(); + + query.nextRow(); + } + query.finalize(); + +} + +void RPGMapStatusMenuLayer::removeAllPlayerLab() +{ + //清理各个lab部分 + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerName)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerName, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerLevel)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerLevel, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerHP)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerHP, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerMP)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerMP, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerAttack)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerAttack, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerDefense)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerDefense, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerSpeed)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerSpeed, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerSkillAttack)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerSkillAttack, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerSkillDefense)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerSkillDefense, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerEquipArms)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerEquipArms, true); + + if(this->getChildByTag(kRPGMapMenuLayerTagStatusPlayerEquipArmor)) + this->removeChildByTag(kRPGMapMenuLayerTagStatusPlayerEquipArmor, true); +} + +//CCTableView +void RPGMapStatusMenuLayer::scrollViewDidScroll(CCScrollView *scrollView) +{ + +} + +void RPGMapStatusMenuLayer::scrollViewDidZoom(CCScrollView *scrollView) +{ + +} + +void RPGMapStatusMenuLayer::tableCellTouched(CCTableView *tableView, CCTableViewCell *cell) +{ + +} + +CCSize RPGMapStatusMenuLayer::cellSizeForTable(CCTableView *tableView) +{ + return CCSizeMake(tableView->getContentSize().width, 80); +} + +CCTableViewCell* RPGMapStatusMenuLayer::tableCellAtIndex(CCTableView *tableView, unsigned int idx) +{ + CCTableViewCell *cell = tableView->dequeueCell(); + if (!cell) + { + cell = new CCTableViewCell(); + cell->autorelease(); + } + else + cell->removeAllChildrenWithCleanup(true); + + float x = 150; + for (int i = 0; i < 3; i++) + { + int index = idx * 3 + i; + + if(index >= this->m_skillList->count()) + break; + + RPGSkill *skillData = (RPGSkill*)this->m_skillList->objectAtIndex(index); + + CCLabelTTF *textLab = CCLabelTTF::create(CCString::createWithFormat("%s (%i)", skillData->m_name.c_str(), skillData->m_mp)->getCString(), "Arial", 20, CCSizeMake(200, 25), kCCTextAlignmentLeft); + textLab->setPosition(ccp(x, 0)); + cell->addChild(textLab); + + x += 200; + } + + return cell; +} + +unsigned int RPGMapStatusMenuLayer::numberOfCellsInTableView(CCTableView *tableView) +{ + int rowItemCount = 3; + int size = this->m_skillList->count(); + + if(size % rowItemCount == 0) + return size / rowItemCount; + else + return size / rowItemCount + 1; +} + +//CCTableView end diff --git a/Classes/RPGMapStatusMenuLayer.h b/Classes/RPGMapStatusMenuLayer.h new file mode 100644 index 0000000..cf84e00 --- /dev/null +++ b/Classes/RPGMapStatusMenuLayer.h @@ -0,0 +1,71 @@ +// +// RPGMapStatusMenuLayer.h +// OzgGameRPG +// +// Created by ozg on 14-4-10. +// +// + +#ifndef __OzgGameRPG__RPGMapStatusMenuLayer__ +#define __OzgGameRPG__RPGMapStatusMenuLayer__ + +#include "cocos2d.h" +#include "cocos-ext.h" +#include "CppSQLite3.h" +#include "JsonBox.h" +#include "RPGMapRoleSprite.h" +#include "RPGBaseSceneLayer.h" + +USING_NS_CC; +USING_NS_CC_EXT; + +enum RPGMapStatusMenuLayerTag +{ + kRPGMapStatusMenuLayerTagBg = 1, + kRPGMapStatusMenuLayerTagMainMenu = 2, + kRPGMapStatusMenuLayerTagMainMenuBack = 12, + kRPGMapStatusMenuLayerTagPlayerSkillTable = 25, + kRPGMapStatusMenuLayerTagMainMenuPlayer = 100 + +}; + +class RPGMapStatusMenuLayer : public CCLayerColor, CCTableViewDelegate, CCTableViewDataSource +{ + +private: + + bool m_statusIsDefault; //是否为第一次进入状态界面,如果是的话就不播放效果音了 + + CCDictionary* m_stringList; + CppSQLite3DB* m_db; + + CCArray* m_skillList; //状态界面的技能列表 + + void onMenu(cocos2d::CCObject *pObject); + void setStatusPlayer(int dataId); + void removeAllPlayerLab(); //每次点击查看状态的时候都要将正在显示的lab部分清理掉 + +public: + + RPGMapStatusMenuLayer(); + virtual ~RPGMapStatusMenuLayer(); + + bool init(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); + static RPGMapStatusMenuLayer* create(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); + + //CCTableViewDelegate继承自CCScrollViewDelegate + virtual void scrollViewDidScroll(CCScrollView* scrollView); + virtual void scrollViewDidZoom(CCScrollView* scrollView); + + //点击哪个cell + virtual void tableCellTouched(CCTableView* tableView, CCTableViewCell* cell); + //每个cell的size + virtual CCSize cellSizeForTable(CCTableView *tableView); + //生成cell + virtual CCTableViewCell* tableCellAtIndex(CCTableView *tableView, unsigned int idx); + //cell的数量 + virtual unsigned int numberOfCellsInTableView(CCTableView *tableView); + +}; + +#endif /* defined(__OzgGameRPG__RPGMapStatusMenuLayer__) */ diff --git a/Resources/audio_battle_attack1.wav b/Resources/audio_battle_attack1.wav new file mode 100755 index 0000000..22b2a99 Binary files /dev/null and b/Resources/audio_battle_attack1.wav differ diff --git a/Resources/audio_battle_attack2.wav b/Resources/audio_battle_attack2.wav new file mode 100755 index 0000000..500df4f Binary files /dev/null and b/Resources/audio_battle_attack2.wav differ diff --git a/Resources/db.sys b/Resources/db.sys index 657082f..b40050a 100755 Binary files a/Resources/db.sys and b/Resources/db.sys differ diff --git a/Resources/scene_map_cns.plist b/Resources/scene_map_cns.plist index fc9d1f1..f62c506 100755 --- a/Resources/scene_map_cns.plist +++ b/Resources/scene_map_cns.plist @@ -20,9 +20,9 @@ 防御:%i status_speed 速度:%i - status_magic_attack + status_skill_attack 魔攻:%i - status_magic_defense + status_skill_defense 魔防:%i confirm_exit_ok 确定 diff --git a/Resources/select_player_style1.tmx b/Resources/select_player_style1.tmx new file mode 100644 index 0000000..7c7aa98 --- /dev/null +++ b/Resources/select_player_style1.tmx @@ -0,0 +1,16 @@ + + + + + + + + eJwTYWBgEKEhZkHDtLRr1D7KzKS3/9DNxoYBiMELMQ== + + + + + eJxjZWBgYKcT5gBiUQb6AYlR+6hunywQy9MJKwAxAIfVBNs= + + + diff --git a/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj b/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj index 5a8e77e..571f4fd 100644 --- a/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj +++ b/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj @@ -217,12 +217,16 @@ 46C59AD317641FF300F43DC3 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 46C59AD117641FF300F43DC3 /* AudioEngine.lua */; }; 46C59AD417641FF300F43DC3 /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 46C59AD217641FF300F43DC3 /* CCBReaderLoad.lua */; }; 8909857018F253DE0021AE26 /* battle_msg_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8909856F18F253DE0021AE26 /* battle_msg_style1.tmx */; }; + 8936C3B518F6D72100AE709E /* select_player_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8936C3B418F6D72100AE709E /* select_player_style1.tmx */; }; 895EC07318F05AE600C3814D /* RPGData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 895EC07118F05AE600C3814D /* RPGData.cpp */; }; 8960C17F18E7D0BD0075EF99 /* alert_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8960C17E18E7D0BD0075EF99 /* alert_style1.tmx */; }; 8960C18218E7D51C0075EF99 /* RPGConfirmLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8960C18018E7D51C0075EF99 /* RPGConfirmLayer.cpp */; }; 896BAEE618EF04CF006581FD /* audio_battle_end.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 896BAEE318EF04CF006581FD /* audio_battle_end.mp3 */; }; 896BAEE718EF04CF006581FD /* audio_battle_menu.wav in Resources */ = {isa = PBXBuildFile; fileRef = 896BAEE418EF04CF006581FD /* audio_battle_menu.wav */; }; 896BAEE818EF04CF006581FD /* audio_battle_start.wav in Resources */ = {isa = PBXBuildFile; fileRef = 896BAEE518EF04CF006581FD /* audio_battle_start.wav */; }; + 8988A4DF18F42BDC004277ED /* audio_battle_attack1.wav in Resources */ = {isa = PBXBuildFile; fileRef = 8988A4DD18F42BDC004277ED /* audio_battle_attack1.wav */; }; + 8988A4E018F42BDC004277ED /* audio_battle_attack2.wav in Resources */ = {isa = PBXBuildFile; fileRef = 8988A4DE18F42BDC004277ED /* audio_battle_attack2.wav */; }; + 8988A4E318F42EDB004277ED /* RPGComputingResults.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8988A4E118F42EDB004277ED /* RPGComputingResults.cpp */; }; 8999051A18F17A3D00012A0E /* RPGBattleMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8999051818F17A3D00012A0E /* RPGBattleMenu.cpp */; }; 8999051D18F17E6C00012A0E /* battle_battlemenu_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8999051C18F17E6C00012A0E /* battle_battlemenu_style1.tmx */; }; 89CB7D7F18E9A47800A5921B /* map_menu1_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 89CB7D7C18E9A47800A5921B /* map_menu1_style1.tmx */; }; @@ -305,8 +309,13 @@ 89F5D14F18E7C5E5009D703C /* db.sys in Resources */ = {isa = PBXBuildFile; fileRef = 89F5D14E18E7C5E5009D703C /* db.sys */; }; 89F5D15318E7C70F009D703C /* CppSQLite3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 89F5D15118E7C70F009D703C /* CppSQLite3.cpp */; }; 9E427D0518EBBA9F00DA4E79 /* map_menu4_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 9E427D0418EBBA9F00DA4E79 /* map_menu4_style1.tmx */; }; + 9E5271DD18F647400018BD94 /* RPGMapStatusMenuLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E5271DB18F647400018BD94 /* RPGMapStatusMenuLayer.cpp */; }; + 9E5271E018F647B90018BD94 /* RPGMapItemsMenuLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E5271DE18F647B90018BD94 /* RPGMapItemsMenuLayer.cpp */; }; + 9E5271E318F648750018BD94 /* RPGMapEquipMenuLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E5271E118F648750018BD94 /* RPGMapEquipMenuLayer.cpp */; }; + 9E5271E618F6489B0018BD94 /* RPGMapSkillMenuLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E5271E418F6489B0018BD94 /* RPGMapSkillMenuLayer.cpp */; }; 9E5C5F6E18EE59BB00A68C36 /* battle_menu_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 9E5C5F6D18EE59BB00A68C36 /* battle_menu_style1.tmx */; }; 9E5C5F7118EE68BD00A68C36 /* RPGBattleMonsterSprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E5C5F6F18EE68BD00A68C36 /* RPGBattleMonsterSprite.cpp */; }; + 9E83B14A18F66151001E9616 /* RPGMapChoicePlayerMenuLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9E83B14818F66151001E9616 /* RPGMapChoicePlayerMenuLayer.cpp */; }; ED35C0C718323498002A0750 /* CCArmatureAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED35C03818323497002A0750 /* CCArmatureAnimation.cpp */; }; ED35C0C818323498002A0750 /* CCProcessBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED35C03A18323497002A0750 /* CCProcessBase.cpp */; }; ED35C0C918323498002A0750 /* CCTween.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED35C03C18323497002A0750 /* CCTween.cpp */; }; @@ -814,6 +823,7 @@ 46C59AD117641FF300F43DC3 /* AudioEngine.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioEngine.lua; sourceTree = ""; }; 46C59AD217641FF300F43DC3 /* CCBReaderLoad.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CCBReaderLoad.lua; sourceTree = ""; }; 8909856F18F253DE0021AE26 /* battle_msg_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = battle_msg_style1.tmx; sourceTree = ""; }; + 8936C3B418F6D72100AE709E /* select_player_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = select_player_style1.tmx; sourceTree = ""; }; 895EC07118F05AE600C3814D /* RPGData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGData.cpp; path = ../Classes/RPGData.cpp; sourceTree = ""; }; 895EC07218F05AE600C3814D /* RPGData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGData.h; path = ../Classes/RPGData.h; sourceTree = ""; }; 8960C17E18E7D0BD0075EF99 /* alert_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = alert_style1.tmx; sourceTree = ""; }; @@ -822,6 +832,10 @@ 896BAEE318EF04CF006581FD /* audio_battle_end.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = audio_battle_end.mp3; sourceTree = ""; }; 896BAEE418EF04CF006581FD /* audio_battle_menu.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = audio_battle_menu.wav; sourceTree = ""; }; 896BAEE518EF04CF006581FD /* audio_battle_start.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = audio_battle_start.wav; sourceTree = ""; }; + 8988A4DD18F42BDC004277ED /* audio_battle_attack1.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = audio_battle_attack1.wav; sourceTree = ""; }; + 8988A4DE18F42BDC004277ED /* audio_battle_attack2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = audio_battle_attack2.wav; sourceTree = ""; }; + 8988A4E118F42EDB004277ED /* RPGComputingResults.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGComputingResults.cpp; path = ../Classes/RPGComputingResults.cpp; sourceTree = ""; }; + 8988A4E218F42EDB004277ED /* RPGComputingResults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGComputingResults.h; path = ../Classes/RPGComputingResults.h; sourceTree = ""; }; 8999051818F17A3D00012A0E /* RPGBattleMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGBattleMenu.cpp; path = ../Classes/RPGBattleMenu.cpp; sourceTree = ""; }; 8999051918F17A3D00012A0E /* RPGBattleMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGBattleMenu.h; path = ../Classes/RPGBattleMenu.h; sourceTree = ""; }; 8999051C18F17E6C00012A0E /* battle_battlemenu_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = battle_battlemenu_style1.tmx; sourceTree = ""; }; @@ -932,9 +946,19 @@ 89F5D15118E7C70F009D703C /* CppSQLite3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CppSQLite3.cpp; sourceTree = ""; }; 89F5D15218E7C70F009D703C /* CppSQLite3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CppSQLite3.h; sourceTree = ""; }; 9E427D0418EBBA9F00DA4E79 /* map_menu4_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = map_menu4_style1.tmx; sourceTree = ""; }; + 9E5271DB18F647400018BD94 /* RPGMapStatusMenuLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGMapStatusMenuLayer.cpp; path = ../Classes/RPGMapStatusMenuLayer.cpp; sourceTree = ""; }; + 9E5271DC18F647400018BD94 /* RPGMapStatusMenuLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGMapStatusMenuLayer.h; path = ../Classes/RPGMapStatusMenuLayer.h; sourceTree = ""; }; + 9E5271DE18F647B90018BD94 /* RPGMapItemsMenuLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGMapItemsMenuLayer.cpp; path = ../Classes/RPGMapItemsMenuLayer.cpp; sourceTree = ""; }; + 9E5271DF18F647B90018BD94 /* RPGMapItemsMenuLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGMapItemsMenuLayer.h; path = ../Classes/RPGMapItemsMenuLayer.h; sourceTree = ""; }; + 9E5271E118F648750018BD94 /* RPGMapEquipMenuLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGMapEquipMenuLayer.cpp; path = ../Classes/RPGMapEquipMenuLayer.cpp; sourceTree = ""; }; + 9E5271E218F648750018BD94 /* RPGMapEquipMenuLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGMapEquipMenuLayer.h; path = ../Classes/RPGMapEquipMenuLayer.h; sourceTree = ""; }; + 9E5271E418F6489B0018BD94 /* RPGMapSkillMenuLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGMapSkillMenuLayer.cpp; path = ../Classes/RPGMapSkillMenuLayer.cpp; sourceTree = ""; }; + 9E5271E518F6489B0018BD94 /* RPGMapSkillMenuLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGMapSkillMenuLayer.h; path = ../Classes/RPGMapSkillMenuLayer.h; sourceTree = ""; }; 9E5C5F6D18EE59BB00A68C36 /* battle_menu_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = battle_menu_style1.tmx; sourceTree = ""; }; 9E5C5F6F18EE68BD00A68C36 /* RPGBattleMonsterSprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGBattleMonsterSprite.cpp; path = ../Classes/RPGBattleMonsterSprite.cpp; sourceTree = ""; }; 9E5C5F7018EE68BD00A68C36 /* RPGBattleMonsterSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGBattleMonsterSprite.h; path = ../Classes/RPGBattleMonsterSprite.h; sourceTree = ""; }; + 9E83B14818F66151001E9616 /* RPGMapChoicePlayerMenuLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGMapChoicePlayerMenuLayer.cpp; path = ../Classes/RPGMapChoicePlayerMenuLayer.cpp; sourceTree = ""; }; + 9E83B14918F66151001E9616 /* RPGMapChoicePlayerMenuLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGMapChoicePlayerMenuLayer.h; path = ../Classes/RPGMapChoicePlayerMenuLayer.h; sourceTree = ""; }; ED35C03818323497002A0750 /* CCArmatureAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCArmatureAnimation.cpp; sourceTree = ""; }; ED35C03918323497002A0750 /* CCArmatureAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCArmatureAnimation.h; sourceTree = ""; }; ED35C03A18323497002A0750 /* CCProcessBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCProcessBase.cpp; sourceTree = ""; }; @@ -2316,6 +2340,16 @@ 89F5D0C918E7C579009D703C /* RPGLoadingSceneLayer.h */, 89F5D0CA18E7C579009D703C /* RPGMapMenuLayer.cpp */, 89F5D0CB18E7C579009D703C /* RPGMapMenuLayer.h */, + 9E5271DB18F647400018BD94 /* RPGMapStatusMenuLayer.cpp */, + 9E5271DC18F647400018BD94 /* RPGMapStatusMenuLayer.h */, + 9E5271DE18F647B90018BD94 /* RPGMapItemsMenuLayer.cpp */, + 9E5271DF18F647B90018BD94 /* RPGMapItemsMenuLayer.h */, + 9E5271E118F648750018BD94 /* RPGMapEquipMenuLayer.cpp */, + 9E5271E218F648750018BD94 /* RPGMapEquipMenuLayer.h */, + 9E5271E418F6489B0018BD94 /* RPGMapSkillMenuLayer.cpp */, + 9E5271E518F6489B0018BD94 /* RPGMapSkillMenuLayer.h */, + 9E83B14818F66151001E9616 /* RPGMapChoicePlayerMenuLayer.cpp */, + 9E83B14918F66151001E9616 /* RPGMapChoicePlayerMenuLayer.h */, 89CB7D8918E9A8BF00A5921B /* RPGMapDialogLayer.cpp */, 89CB7D8A18E9A8BF00A5921B /* RPGMapDialogLayer.h */, 89F5D0CC18E7C579009D703C /* RPGMapNPCRoleSprite.cpp */, @@ -2338,6 +2372,8 @@ 89F5D0D918E7C579009D703C /* RPGStartSceneLayer.h */, 8960C18018E7D51C0075EF99 /* RPGConfirmLayer.cpp */, 8960C18118E7D51C0075EF99 /* RPGConfirmLayer.h */, + 8988A4E118F42EDB004277ED /* RPGComputingResults.cpp */, + 8988A4E218F42EDB004277ED /* RPGComputingResults.h */, F293BB7E15EB831F00256477 /* AppDelegate.cpp */, F293BB7F15EB831F00256477 /* AppDelegate.h */, ); @@ -2347,6 +2383,9 @@ F293BC4615EB859D00256477 /* Resources */ = { isa = PBXGroup; children = ( + 8936C3B418F6D72100AE709E /* select_player_style1.tmx */, + 8988A4DD18F42BDC004277ED /* audio_battle_attack1.wav */, + 8988A4DE18F42BDC004277ED /* audio_battle_attack2.wav */, 8909856F18F253DE0021AE26 /* battle_msg_style1.tmx */, 896BAEE318EF04CF006581FD /* audio_battle_end.mp3 */, 896BAEE418EF04CF006581FD /* audio_battle_menu.wav */, @@ -2496,7 +2535,9 @@ 89F5D11D18E7C5C0009D703C /* actor115.png in Resources */, 896BAEE818EF04CF006581FD /* audio_battle_start.wav in Resources */, 89CB7D8118E9A47800A5921B /* map_menu3_style1.tmx in Resources */, + 8988A4E018F42BDC004277ED /* audio_battle_attack2.wav in Resources */, 89F5D10B18E7C5C0009D703C /* actor7_0.png in Resources */, + 8936C3B518F6D72100AE709E /* select_player_style1.tmx in Resources */, 89F5D14B18E7C5DD009D703C /* scene_start_cns.plist in Resources */, 896BAEE618EF04CF006581FD /* audio_battle_end.mp3 in Resources */, 89F5D10E18E7C5C0009D703C /* actor7_3.png in Resources */, @@ -2533,6 +2574,7 @@ 15C1569B1683138E00D239F2 /* Icon-57.png in Resources */, 15C1569C1683138E00D239F2 /* Icon-72.png in Resources */, 89EA57BE18EAF1EC00A10956 /* monsters.plist in Resources */, + 8988A4DF18F42BDC004277ED /* audio_battle_attack1.wav in Resources */, 15C1569D1683138E00D239F2 /* Icon-114.png in Resources */, 89F5D0EB18E7C5B4009D703C /* 方正粗圆简体.ttf in Resources */, 89EA57C118EAF2CB00A10956 /* battle_bg.png in Resources */, @@ -2622,6 +2664,7 @@ 298B2A3518D0671400C1920F /* ListViewReader.cpp in Sources */, 89EA57E418EB16F100A10956 /* Indenter.cpp in Sources */, 15C154111683112E00D239F2 /* CCControlColourPicker.cpp in Sources */, + 9E5271DD18F647400018BD94 /* RPGMapStatusMenuLayer.cpp in Sources */, 15C154121683112E00D239F2 /* CCControlHuePicker.cpp in Sources */, ED35C0EC18323498002A0750 /* UIButton.cpp in Sources */, 15C154131683112E00D239F2 /* CCControlPotentiometer.cpp in Sources */, @@ -2699,6 +2742,7 @@ ED35C0E018323498002A0750 /* UIWidget.cpp in Sources */, 15C1551F1683118600D239F2 /* b2BroadPhase.cpp in Sources */, 15C155201683118600D239F2 /* b2CollideCircle.cpp in Sources */, + 8988A4E318F42EDB004277ED /* RPGComputingResults.cpp in Sources */, 15C155211683118600D239F2 /* b2CollideEdge.cpp in Sources */, 15C155221683118600D239F2 /* b2CollidePolygon.cpp in Sources */, ED35C0E418323498002A0750 /* CocosGUI.cpp in Sources */, @@ -2732,10 +2776,12 @@ 375BD562186846090024609E /* TriggerObj.cpp in Sources */, 89F5D0DA18E7C579009D703C /* OzgCCScrollBgNode.cpp in Sources */, 15C155311683118600D239F2 /* b2Body.cpp in Sources */, + 9E5271E018F647B90018BD94 /* RPGMapItemsMenuLayer.cpp in Sources */, ED35C0ED18323498002A0750 /* UICheckBox.cpp in Sources */, 15C155321683118600D239F2 /* b2ContactManager.cpp in Sources */, 15C155331683118600D239F2 /* b2Fixture.cpp in Sources */, 15C155341683118600D239F2 /* b2Island.cpp in Sources */, + 9E5271E318F648750018BD94 /* RPGMapEquipMenuLayer.cpp in Sources */, 15C155351683118600D239F2 /* b2World.cpp in Sources */, 15C155361683118600D239F2 /* b2WorldCallbacks.cpp in Sources */, 15C155371683118600D239F2 /* b2ChainAndCircleContact.cpp in Sources */, @@ -2770,6 +2816,7 @@ 15C155491683118600D239F2 /* b2WeldJoint.cpp in Sources */, 15C1554A1683118600D239F2 /* b2WheelJoint.cpp in Sources */, 15C155591683118600D239F2 /* b2Rope.cpp in Sources */, + 9E5271E618F6489B0018BD94 /* RPGMapSkillMenuLayer.cpp in Sources */, 89F5D0E018E7C579009D703C /* RPGMapMenuLayer.cpp in Sources */, 15C155DA168311AA00D239F2 /* CDAudioManager.m in Sources */, ED35C0CE18323498002A0750 /* CCDecorativeDisplay.cpp in Sources */, @@ -2784,6 +2831,7 @@ 89F5D0E118E7C579009D703C /* RPGMapNPCRoleSprite.cpp in Sources */, 1583F16918D09FF900F3D630 /* UIScrollView.cpp in Sources */, 15C15688168311CB00D239F2 /* tolua_push.c in Sources */, + 9E83B14A18F66151001E9616 /* RPGMapChoicePlayerMenuLayer.cpp in Sources */, 89F5D0DE18E7C579009D703C /* RPGBaseSceneLayer.cpp in Sources */, 15C15689168311CB00D239F2 /* tolua_to.c in Sources */, 15CA8CF718696744000032AB /* LuaCocoStudio.cpp in Sources */, diff --git a/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcshareddata/OzgGameRPG.xccheckout b/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcshareddata/OzgGameRPG.xccheckout index 4c35f76..650d72b 100644 --- a/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcshareddata/OzgGameRPG.xccheckout +++ b/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcshareddata/OzgGameRPG.xccheckout @@ -5,7 +5,7 @@ IDESourceControlProjectFavoriteDictionaryKey IDESourceControlProjectIdentifier - 4FDD62E9-2541-480F-803E-E5350F16C735 + 3EC08042-5D09-4151-9F7B-A5E1B350A197 IDESourceControlProjectName OzgGameRPG IDESourceControlProjectOriginsDictionary diff --git a/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/ouzhigang.xcuserdatad/UserInterfaceState.xcuserstate b/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/ouzhigang.xcuserdatad/UserInterfaceState.xcuserstate index d038c62..01f2985 100644 Binary files a/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/ouzhigang.xcuserdatad/UserInterfaceState.xcuserstate and b/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/ouzhigang.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/tpwid.xcuserdatad/UserInterfaceState.xcuserstate b/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/tpwid.xcuserdatad/UserInterfaceState.xcuserstate index 4fc375f..5ea6bd1 100644 Binary files a/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/tpwid.xcuserdatad/UserInterfaceState.xcuserstate and b/proj.ios/OzgGameRPG.xcodeproj/project.xcworkspace/xcuserdata/tpwid.xcuserdatad/UserInterfaceState.xcuserstate differ