From c49530486001193404b0e45afd4b4e71c56a60ec Mon Sep 17 00:00:00 2001 From: ozg Date: Sun, 27 Apr 2014 15:58:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=98=E6=96=97=E7=94=BB=E9=9D=A2=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E9=81=93=E5=85=B7=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Classes/GameCfg.h | 3 + Classes/RPGBattleMenu.cpp | 104 +++++--- Classes/RPGBattleMenu.h | 6 +- Classes/RPGBattleMonsterSprite.cpp | 32 ++- Classes/RPGBattleMonsterSprite.h | 4 +- Classes/RPGBattlePlayerSprite.cpp | 46 +++- Classes/RPGBattlePlayerSprite.h | 6 +- Classes/RPGBattleSceneLayer.cpp | 238 ++++++++++++++++-- Classes/RPGBattleSceneLayer.h | 9 +- Classes/RPGData.h | 2 + Classes/RPGResultsLogic.cpp | 73 +++++- Classes/RPGResultsLogic.h | 3 +- README.md | 4 +- Resources/db.sys | Bin 360448 -> 360448 bytes Resources/use_item.plist | 110 ++++++++ proj.ios/OzgGameRPG.xcodeproj/project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 87210 -> 89899 bytes 17 files changed, 559 insertions(+), 85 deletions(-) create mode 100644 Resources/use_item.plist diff --git a/Classes/GameCfg.h b/Classes/GameCfg.h index 25e0c39..829f874 100755 --- a/Classes/GameCfg.h +++ b/Classes/GameCfg.h @@ -18,6 +18,9 @@ #define GAME_INIT_SQL "insert into save_data (map_id, player_to_x, player_to_y, player_direction, gold) values(1, 14.5, 9.5, 'down', 200);" +#define GAME_BATTLE_SELECTED_ID "GAME_BATTLE_SELECTED_ID" //战斗画面选择了一个技能或道具后,临时保存的技能id或道具id +#define GAME_BATTLE_FIELD "GAME_BATTLE_FIELD" //战斗画面的执行完毕技能或道具动作后,影响了哪个字段 + #define MAX_GOLD 999999 //金钱最大值 #define MAX_STATUS1 9999 //HP最大值 #define MAX_STATUS2 999 //MP、攻击力、防御力、速度、技能攻击、技能防御的最大值 diff --git a/Classes/RPGBattleMenu.cpp b/Classes/RPGBattleMenu.cpp index 45a1437..35bf95a 100644 --- a/Classes/RPGBattleMenu.cpp +++ b/Classes/RPGBattleMenu.cpp @@ -19,6 +19,8 @@ RPGBattleMenu::~RPGBattleMenu() this->m_parentNode->release(); this->m_playerData->release(); + this->m_tableItems->release(); + CCTMXTiledMap *bgLayer = (CCTMXTiledMap*)this->m_parentNode->getChildByTag(kRPGBattleMenuTagBg); if(bgLayer) bgLayer->removeFromParentAndCleanup(true); @@ -29,7 +31,11 @@ RPGBattleMenu::~RPGBattleMenu() if(this->m_parentNode->getChildByTag(kRPGBattleMenuTagSeparate)) this->m_parentNode->removeChildByTag(kRPGBattleMenuTagSeparate, true); - this->m_selectDialogListData->release(); + //清理技能和道具选择框 + if(this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagItemsSelectDialog)) + this->m_parentNode->removeChildByTag(kRPGBattleSceneLayerTagItemsSelectDialog, true); + if(this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagSkillSelectDialog)) + this->m_parentNode->removeChildByTag(kRPGBattleSceneLayerTagSkillSelectDialog, true); CCLog("RPGBattleMenu 释放"); } @@ -49,9 +55,9 @@ bool RPGBattleMenu::initWithParentNode(CCDictionary* stringList, CppSQLite3DB* d this->m_playerData = playerData; this->m_playerData->retain(); - this->m_selectDialogListData = new CCArray(); - this->m_selectDialogListData->init(); - + this->m_tableItems = new CCArray(); + this->m_tableItems->init(); + this->setPosition(CCPointZero); CCTMXTiledMap *bgLayer = (CCTMXTiledMap*)this->m_parentNode->getChildByTag(kRPGBattleMenuTagBg); @@ -222,9 +228,11 @@ void RPGBattleMenu::onMenu(cocos2d::CCObject *pObject) tableView->setVerticalFillOrder(kCCTableViewFillTopDown); tableView->setTag(197); selectLayer->addChild(tableView); + } - this->m_selectDialogListData->removeAllObjects(); + this->m_tableItems->removeAllObjects(); + string wq = ""; JsonBox::Value json; json.loadFromString(this->m_playerData->m_skill.c_str()); @@ -259,18 +267,18 @@ void RPGBattleMenu::onMenu(cocos2d::CCObject *pObject) skill->m_enabled = false; else if(this->m_playerData->m_MP < skill->m_MP) skill->m_enabled = false; - else if(skill->m_type != 2) - skill->m_enabled = false; - this->m_selectDialogListData->addObject(skill); + this->m_tableItems->addObject(skill); query.nextRow(); } query.finalize(); } + tableView->reloadData(); //加载技能数据 end + ((RPGBattleSceneLayer*)this->m_parentNode)->enabledTouched(false); } break; case kRPGBattleMenuTagItems: @@ -317,32 +325,18 @@ void RPGBattleMenu::onMenu(cocos2d::CCObject *pObject) tableView->setTag(197); selectLayer->addChild(tableView); } - this->m_selectDialogListData->removeAllObjects(); - CppSQLite3Query query = this->m_db->execQuery(CCString::createWithFormat(ITEMS_EXISTING_QUERY_TYPE, 3)->getCString()); - while(!query.eof()) - { - RPGExistingItems *itemsData = RPGExistingItems::create(); - itemsData->m_dataId = query.getIntField("id"); - itemsData->m_name = query.getStringField("name_cns"); - itemsData->m_buy = query.getIntField("buy"); - itemsData->m_sell = query.getIntField("sell"); - itemsData->m_type = query.getIntField("type"); - itemsData->m_attack = query.getFloatField("attack"); - itemsData->m_defense = query.getFloatField("defense"); - itemsData->m_speed = query.getFloatField("speed"); - itemsData->m_skillAttack = query.getFloatField("skill_attack"); - itemsData->m_skillDefense = query.getFloatField("skill_defense"); - itemsData->m_total = query.getIntField("total"); - this->m_selectDialogListData->addObject(itemsData); - - query.nextRow(); - } - query.finalize(); + this->m_tableItems->removeAllObjects(); + + CCArray *existingItems = ((RPGBattleSceneLayer*)this->m_parentNode)->m_existingItems; + + for (int i = 0; i < existingItems->count(); i++) + this->m_tableItems->addObject(existingItems->objectAtIndex(i)); tableView->reloadData(); - //加载道具数据 end + + ((RPGBattleSceneLayer*)this->m_parentNode)->enabledTouched(false); } break; case kRPGBattleMenuTagEscape: @@ -417,6 +411,26 @@ void RPGBattleMenu::onMenu(cocos2d::CCObject *pObject) // break; } + } + break; + case kRPGBattleMenuTagCancel2: + { + //这个选择了一个技能或道具后,到了选择目标对象的一步,使用到的取消按钮 + + CCMenuItemSprite *menuCancel = (CCMenuItemSprite*)this->getChildByTag(kRPGBattleMenuTagCancel); + menuCancel->setVisible(true); + + CCMenuItemSprite *menuCancel2 = (CCMenuItemSprite*)this->getChildByTag(kRPGBattleMenuTagCancel2); + menuCancel2->removeFromParentAndCleanup(true); + + if(this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagItemsSelectDialog)) + this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagItemsSelectDialog)->setVisible(true); + + if(this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagSkillSelectDialog)) + this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagSkillSelectDialog)->setVisible(true); + + ((RPGBattleSceneLayer*)this->m_parentNode)->enabledTouched(false); + ((RPGBattleSceneLayer*)this->m_parentNode)->cancelAllSelected(); } break; default: @@ -442,8 +456,26 @@ void RPGBattleMenu::onMenu(cocos2d::CCObject *pObject) void RPGBattleMenu::onButton(cocos2d::CCObject *pSender, CCControlEvent event) { + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); - CCLog("aaaa"); + CCMenuItemSprite *menuCancel = (CCMenuItemSprite*)this->getChildByTag(kRPGBattleMenuTagCancel); + menuCancel->setVisible(false); + + CCMenuItemSprite *menuCancel2 = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), this, menu_selector(RPGBattleMenu::onMenu)); + menuCancel2->setPosition(ccp(75, 660)); + menuCancel2->setTag(kRPGBattleMenuTagCancel2); + menuCancel2->setScale(0.75); + this->addChild(menuCancel2); + + if(this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagItemsSelectDialog)) + this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagItemsSelectDialog)->setVisible(false); + + if(this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagSkillSelectDialog)) + this->m_parentNode->getChildByTag(kRPGBattleSceneLayerTagSkillSelectDialog)->setVisible(false); + + ((RPGBattleSceneLayer*)this->m_parentNode)->enabledTouched(true); + + CCUserDefault::sharedUserDefault()->setIntegerForKey(GAME_BATTLE_SELECTED_ID, ((CCControlButton*)pSender)->getTag()); } //CCTableView @@ -478,10 +510,10 @@ CCTableViewCell* RPGBattleMenu::tableCellAtIndex(CCTableView *tableView, unsigne else cell->removeAllChildrenWithCleanup(true); - if(dynamic_cast(this->m_selectDialogListData->objectAtIndex(idx)) != NULL) + if(dynamic_cast(this->m_tableItems->objectAtIndex(idx)) != NULL) { //点击了技能项 - RPGSkillBtnData *itemsData = (RPGSkillBtnData*)this->m_selectDialogListData->objectAtIndex(idx); + RPGSkillBtnData *itemsData = (RPGSkillBtnData*)this->m_tableItems->objectAtIndex(idx); CCControlButton *itemBtn = CCControlButton::create(CCString::createWithFormat("%s (%i)", itemsData->m_name.c_str(), itemsData->m_MP)->getCString(), "Arial", 22); itemBtn->setPosition(ccp(tableView->getContentSize().width / 2, 0)); @@ -490,11 +522,11 @@ CCTableViewCell* RPGBattleMenu::tableCellAtIndex(CCTableView *tableView, unsigne cell->addChild(itemBtn); } - else if(dynamic_cast(this->m_selectDialogListData->objectAtIndex(idx)) != NULL) + else if(dynamic_cast(this->m_tableItems->objectAtIndex(idx)) != NULL) { //点击了道具项 - RPGExistingItems *itemsData = (RPGExistingItems*)this->m_selectDialogListData->objectAtIndex(idx); + RPGExistingItems *itemsData = (RPGExistingItems*)this->m_tableItems->objectAtIndex(idx); CCControlButton *itemBtn = CCControlButton::create(CCString::createWithFormat("%s (%i)", itemsData->m_name.c_str(), itemsData->m_total)->getCString(), "Arial", 22); itemBtn->setPosition(ccp(tableView->getContentSize().width / 2, 0)); @@ -509,6 +541,6 @@ CCTableViewCell* RPGBattleMenu::tableCellAtIndex(CCTableView *tableView, unsigne unsigned int RPGBattleMenu::numberOfCellsInTableView(CCTableView *tableView) { - return this->m_selectDialogListData->count(); + return this->m_tableItems->count(); } //CCTableView end diff --git a/Classes/RPGBattleMenu.h b/Classes/RPGBattleMenu.h index 4c105d4..4926de5 100644 --- a/Classes/RPGBattleMenu.h +++ b/Classes/RPGBattleMenu.h @@ -24,7 +24,9 @@ enum RPGBattleMenuTag kRPGBattleMenuTagItems = 5, kRPGBattleMenuTagEscape = 6, kRPGBattleMenuTagCancel = 7, + kRPGBattleMenuTagCancel2 = 9, //这个选择了一个技能或道具后,到了选择目标对象的一步,使用到的取消按钮 kRPGBattleMenuTagSelect = 8 + }; class RPGBattleMenu : public CCMenu, CCTableViewDelegate, CCTableViewDataSource @@ -36,7 +38,7 @@ private: CCDictionary* m_stringList; - CCArray* m_selectDialogListData; //技能数据或道具数据 + CCArray* m_tableItems; //技能数据或道具数据,需要在RPGBattleSceneLayer里面将数据加载进来 void createMenuItem(float x, float y, CCString *text, RPGBattleMenuTag tag); void onMenu(CCObject *pObject); @@ -48,7 +50,7 @@ public: RPGPlayer* m_playerData; int m_selectedMenuTag; //选中了哪个项(攻击、技能、道具) - + RPGBattleMenu(); virtual ~RPGBattleMenu(); bool initWithParentNode(CCDictionary* stringList, CppSQLite3DB* db, CCNode* parentNode, RPGPlayer* playerData); diff --git a/Classes/RPGBattleMonsterSprite.cpp b/Classes/RPGBattleMonsterSprite.cpp index 9b03521..d4af1a9 100644 --- a/Classes/RPGBattleMonsterSprite.cpp +++ b/Classes/RPGBattleMonsterSprite.cpp @@ -71,22 +71,22 @@ void RPGBattleMonsterSprite::selected(bool isSelected) } -void RPGBattleMonsterSprite::showEffectResults(cocos2d::CCObject *target, int HPResults, CCNode* player) +void RPGBattleMonsterSprite::showEffectResults(cocos2d::CCObject *target, int results, CCNode* player) { - addLab(this, kRPGBattleMonsterSpriteTagEffectResults, CCString::createWithFormat("%i", HPResults), 24, kCCTextAlignmentCenter, ccp(this->getContentSize().width / 2, this->getContentSize().height / 2)); + addLab(this, kRPGBattleMonsterSpriteTagEffectResults, CCString::createWithFormat("%i", results), 24, kCCTextAlignmentCenter, ccp(this->getContentSize().width / 2, this->getContentSize().height / 2)); CCLabelTTF *effectResults = (CCLabelTTF*)this->getChildByTag(kRPGBattleMonsterSpriteTagEffectResults); //增加HP的话则使用绿色 - if(HPResults > 0) + if(results > 0) effectResults->setFontFillColor(ccc3(80, 255, 90)); CCMoveBy *up = CCMoveBy::create(0.5, ccp(0, 30)); CCMoveBy *down = CCMoveBy::create(1, ccp(0, -30)); - this->m_HPResults = HPResults; + this->m_results = results; - effectResults->runAction(CCSequence::create(CCEaseExponentialOut::create(up), CCEaseBounceOut::create(down), CCDelayTime::create(0.5), CCCallFunc::create(this, callfunc_selector(RPGBattleMonsterSprite::showEffectResultsEnd)), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::attackWithTargetEffectLabEnd), player), NULL)); + effectResults->runAction(CCSequence::create(CCEaseExponentialOut::create(up), CCEaseBounceOut::create(down), CCDelayTime::create(0.5), CCCallFunc::create(this, callfunc_selector(RPGBattleMonsterSprite::showEffectResultsEnd)), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::actionWithTargetEffectLabEnd), player), NULL)); } @@ -106,9 +106,25 @@ void RPGBattleMonsterSprite::animAttack(CCObject* target, CCObject *targetObjDat //private void RPGBattleMonsterSprite::showEffectResultsEnd() { - this->m_data->m_HP += this->m_HPResults; + if(strcmp(CCUserDefault::sharedUserDefault()->getStringForKey(GAME_BATTLE_FIELD, "").c_str(), "mp") == 0) + { + this->m_data->m_MP += this->m_results; + + if(this->m_data->m_MP < 0) + this->m_data->m_MP = 0; + else if(this->m_data->m_MP > this->m_data->m_maxMP) + this->m_data->m_MP = this->m_data->m_maxMP; + } + else + { + this->m_data->m_HP += this->m_results; + + if(this->m_data->m_HP < 0) + this->m_data->m_HP = 0; + else if(this->m_data->m_HP > this->m_data->m_maxHP) + this->m_data->m_HP = this->m_data->m_maxHP; + } - if(this->m_data->m_HP < 0) - this->m_data->m_HP = 0; + CCUserDefault::sharedUserDefault()->setStringForKey(GAME_BATTLE_FIELD, ""); } diff --git a/Classes/RPGBattleMonsterSprite.h b/Classes/RPGBattleMonsterSprite.h index 6c2bedc..0e1c167 100644 --- a/Classes/RPGBattleMonsterSprite.h +++ b/Classes/RPGBattleMonsterSprite.h @@ -28,7 +28,7 @@ class RPGBattleMonsterSprite : public CCSprite private: - int m_HPResults; //临时保存HP效果值 + int m_results; //临时保存HP效果值 void showEffectResultsEnd(); //showEffectResults执行完毕后执行,然后再执行showEffectResults参数中的回调 @@ -45,7 +45,7 @@ public: void selected(bool isSelected); - void showEffectResults(CCObject* target, int HPResults, CCNode* player); //显示效果值,target为回调对象,攻击的话HPResults传入的是负值,回复的话为正值 + void showEffectResults(CCObject* target, int results, CCNode* player); //显示效果值,target为回调对象,攻击的话results传入的是负值,回复的话为正值 void animAttack(CCObject* target, CCObject *targetObjData); //执行一般攻击或技能攻击的动作,target为回调对象,targetObjData为攻击的对象 diff --git a/Classes/RPGBattlePlayerSprite.cpp b/Classes/RPGBattlePlayerSprite.cpp index 592523e..65d2dd6 100644 --- a/Classes/RPGBattlePlayerSprite.cpp +++ b/Classes/RPGBattlePlayerSprite.cpp @@ -285,33 +285,61 @@ void RPGBattlePlayerSprite::animSkill(cocos2d::CCObject *target, cocos2d::CCObje CCLog("使用技能"); } -void RPGBattlePlayerSprite::showEffectResults(cocos2d::CCObject *target, int HPResults, CCNode* srcAttackObj) +void RPGBattlePlayerSprite::animUseItem(cocos2d::CCObject *target, cocos2d::CCObject *targetObjData) +{ + this->stopAllActions(); + + if(this->getChildByTag(kRPGBattlePlayerSpriteTagArm)) + this->removeChildByTag(kRPGBattlePlayerSpriteTagArm, true); + + CCAnimation *animation = CCAnimation::createWithSpriteFrames(this->m_spriteFramesUseItem, 0.2); + + CCSequence *animate = CCSequence::create(CCAnimate::create(animation), CCDelayTime::create(0.5), CCCallFunc::create(this, callfunc_selector(RPGBattlePlayerSprite::animNormal)), NULL); + this->runAction(CCSequence::createWithTwoActions(animate, CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::useItemResults), (void*)targetObjData))); +} + +void RPGBattlePlayerSprite::showEffectResults(cocos2d::CCObject *target, int results, CCNode* srcAttackObj) { //srcAttackObj为发起攻击的Sprite对象 - addLab(this, kRPGBattlePlayerSpriteTagEffectResults, CCString::createWithFormat("%i", HPResults), 24, kCCTextAlignmentCenter, ccp(this->getContentSize().width / 2, this->getContentSize().height / 2)); + addLab(this, kRPGBattlePlayerSpriteTagEffectResults, CCString::createWithFormat("%i", results), 24, kCCTextAlignmentCenter, ccp(this->getContentSize().width / 2, this->getContentSize().height / 2)); CCLabelTTF *effectResults = (CCLabelTTF*)this->getChildByTag(kRPGBattlePlayerSpriteTagEffectResults); //增加HP的话则使用绿色 - if(HPResults > 0) + if(results > 0) effectResults->setFontFillColor(ccc3(80, 255, 90)); CCMoveBy *up = CCMoveBy::create(0.5, ccp(0, 30)); CCMoveBy *down = CCMoveBy::create(1, ccp(0, -30)); - this->m_HPResults = HPResults; + this->m_results = results; - effectResults->runAction(CCSequence::create(CCEaseExponentialOut::create(up), CCEaseBounceOut::create(down), CCDelayTime::create(0.5), CCCallFunc::create(this, callfunc_selector(RPGBattlePlayerSprite::showEffectResultsEnd)), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::attackWithTargetEffectLabEnd), srcAttackObj), NULL)); + effectResults->runAction(CCSequence::create(CCEaseExponentialOut::create(up), CCEaseBounceOut::create(down), CCDelayTime::create(0.5), CCCallFunc::create(this, callfunc_selector(RPGBattlePlayerSprite::showEffectResultsEnd)), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::actionWithTargetEffectLabEnd), srcAttackObj), NULL)); } //private void RPGBattlePlayerSprite::showEffectResultsEnd() { - this->m_data->m_HP += this->m_HPResults; - - if(this->m_data->m_HP < 0) - this->m_data->m_HP = 0; + if(strcmp(CCUserDefault::sharedUserDefault()->getStringForKey(GAME_BATTLE_FIELD, "").c_str(), "mp") == 0) + { + this->m_data->m_MP += this->m_results; + + if(this->m_data->m_MP < 0) + this->m_data->m_MP = 0; + else if(this->m_data->m_MP > this->m_data->m_maxMP) + this->m_data->m_MP = this->m_data->m_maxMP; + } + else + { + this->m_data->m_HP += this->m_results; + + if(this->m_data->m_HP < 0) + this->m_data->m_HP = 0; + else if(this->m_data->m_HP > this->m_data->m_maxHP) + this->m_data->m_HP = this->m_data->m_maxHP; + } + CCUserDefault::sharedUserDefault()->setStringForKey(GAME_BATTLE_FIELD, ""); } diff --git a/Classes/RPGBattlePlayerSprite.h b/Classes/RPGBattlePlayerSprite.h index d6f7fec..8127cba 100644 --- a/Classes/RPGBattlePlayerSprite.h +++ b/Classes/RPGBattlePlayerSprite.h @@ -28,7 +28,7 @@ class RPGBattlePlayerSprite : public CCSprite private: - int m_HPResults; //临时保存HP效果值 + int m_results; //临时保存HP效果值 CCArray* m_spriteFramesNormal; //通常 CCArray* m_spriteFramesHurt; //受到攻击 @@ -66,7 +66,9 @@ public: void animSkill(CCObject* target, CCObject *targetObjData); //执行技能,target为回调对象,targetObjData为目标对象 - void showEffectResults(CCObject* target, int HPResults, CCNode* srcAttackObj); //显示效果值,target为回调对象,攻击的话HPResults传入的是负值,回复的话为正值 + void animUseItem(CCObject* target, CCObject *targetObjData); //执行使用道具,target为回调对象,targetObjData为目标对象 + + void showEffectResults(CCObject* target, int results, CCNode* srcAttackObj); //显示效果值,target为回调对象,攻击的话results传入的是负值,回复的话为正值 }; diff --git a/Classes/RPGBattleSceneLayer.cpp b/Classes/RPGBattleSceneLayer.cpp index 44819ce..6c424af 100755 --- a/Classes/RPGBattleSceneLayer.cpp +++ b/Classes/RPGBattleSceneLayer.cpp @@ -10,11 +10,13 @@ #include "RPGLoadingSceneLayer.h" #include "RPGComputingResults.h" #include "RPGStartSceneLayer.h" +#include "RPGResultsLogic.h" #define MONSTER_QUERY "select * from monster where map_id = %i order by random() limit 1" //随机出现怪物 #define SAVE_GOLD "update save_data set gold = %i where id = 1" //保存金钱 #define UPDATE_PLAYER "update player set hp = %i, mp = %i, attack = %f, defense = %f, speed = %f, skill_attack = %f, skill_defense = %f, level = %i, skill = '%s', next_exp = %i, exp = %i where id = %i" //更新player数据,升级时用到 +#define UPDATE_EXISTING_ITEMS "update items_existing set total = %i where id = %i" //更新已有道具 RPGBattleSceneLayer::RPGBattleSceneLayer() { @@ -27,7 +29,8 @@ RPGBattleSceneLayer::~RPGBattleSceneLayer() this->m_monsterDataList->release(); this->m_playerList->release(); this->m_monsterList->release(); - + this->m_existingItems->release(); + CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFramesFromFile("monsters.plist"); // CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo(); @@ -77,6 +80,32 @@ bool RPGBattleSceneLayer::init() this->m_speedTotal = 0; //速度总值的初始化 + //加载已有道具 + this->m_existingItems = new CCArray(); + this->m_existingItems->init(); + + CppSQLite3Query itemsQuery = this->m_db.execQuery(CCString::createWithFormat(ITEMS_EXISTING_QUERY_TYPE, 3)->getCString()); + while(!itemsQuery.eof()) + { + RPGExistingItems *itemsData = RPGExistingItems::create(); + itemsData->m_dataId = itemsQuery.getIntField("id"); + itemsData->m_name = itemsQuery.getStringField("name_cns"); + itemsData->m_buy = itemsQuery.getIntField("buy"); + itemsData->m_sell = itemsQuery.getIntField("sell"); + itemsData->m_type = itemsQuery.getIntField("type"); + itemsData->m_attack = itemsQuery.getFloatField("attack"); + itemsData->m_defense = itemsQuery.getFloatField("defense"); + itemsData->m_speed = itemsQuery.getFloatField("speed"); + itemsData->m_skillAttack = itemsQuery.getFloatField("skill_attack"); + itemsData->m_skillDefense = itemsQuery.getFloatField("skill_defense"); + itemsData->m_total = itemsQuery.getIntField("total"); + this->m_existingItems->addObject(itemsData); + + itemsQuery.nextRow(); + } + itemsQuery.finalize(); + //加载已有道具 end + //player float playerY = 620; float separateY = 197; @@ -207,6 +236,8 @@ bool RPGBattleSceneLayer::init() monsterData->m_name = query.getStringField("name_cns"); monsterData->m_maxHP = query.getIntField("max_hp"); monsterData->m_HP = query.getIntField("max_hp"); //跟上面的一样 + monsterData->m_maxMP = query.getIntField("max_mp"); + monsterData->m_MP = query.getIntField("max_mp"); //跟上面的一样 monsterData->m_attack = query.getFloatField("attack"); monsterData->m_defense = query.getFloatField("defense"); monsterData->m_speed = query.getFloatField("speed"); @@ -448,12 +479,12 @@ void RPGBattleSceneLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) CCLog("攻击player"); RPGBattleMenu *battleMenu = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagBattleMenu); - RPGPlayer *playerData = battleMenu->m_playerData; + RPGPlayer *srcPlayerData = battleMenu->m_playerData; player->selected(false); this->removeChildByTag(kRPGBattleSceneLayerTagBattleMenu, true); - this->attack(playerData, player->m_data); + this->attack(srcPlayerData, player->m_data); } else player->selected(true); @@ -476,12 +507,12 @@ void RPGBattleSceneLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) CCLog("攻击怪物"); RPGBattleMenu *battleMenu = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagBattleMenu); - RPGPlayer *playerData = battleMenu->m_playerData; + RPGPlayer *srcPlayerData = battleMenu->m_playerData; monster->selected(false); - battleMenu->removeFromParentAndCleanup(true); + this->removeChildByTag(kRPGBattleSceneLayerTagBattleMenu, true); - this->attack(playerData, monster->m_data); + this->attack(srcPlayerData, monster->m_data); } else @@ -496,13 +527,129 @@ void RPGBattleSceneLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) break; case kRPGBattleMenuTagSkill: + { + CCLog("技能"); - CCLog("a"); + //检测选中的player + for (int i = 0; i < this->m_playerList->count(); i++) + { + RPGBattlePlayerSprite *player = (RPGBattlePlayerSprite*)this->m_playerList->objectAtIndex(i); + if(player->boundingBox().containsPoint(point)) + { + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + if(player->m_isSelected) + { + CCLog("对player使用技能"); + +// RPGBattleMenu *battleMenu = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagBattleMenu); +// RPGPlayer *playerData = battleMenu->m_playerData; +// +// player->selected(false); +// this->removeChildByTag(kRPGBattleSceneLayerTagBattleMenu, true); +// +// this->attack(playerData, player->m_data); + } + else + player->selected(true); + } + else + player->selected(false); + + } + + //检测选中的怪物 + for (int i = 0; i < this->m_monsterList->count(); i++) + { + RPGBattleMonsterSprite *monster = (RPGBattleMonsterSprite*)this->m_monsterList->objectAtIndex(i); + if(monster->boundingBox().containsPoint(point)) + { + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + if(monster->m_isSelected) + { + CCLog("对怪物使用技能"); + +// RPGBattleMenu *battleMenu = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagBattleMenu); +// RPGPlayer *playerData = battleMenu->m_playerData; +// +// monster->selected(false); +// battleMenu->removeFromParentAndCleanup(true); +// +// this->attack(playerData, monster->m_data); + + } + else + monster->selected(true); + } + else + monster->selected(false); + + } + + } break; case kRPGBattleMenuTagItems: + { + CCLog("道具"); - CCLog("b"); + //检测选中的player + for (int i = 0; i < this->m_playerList->count(); i++) + { + RPGBattlePlayerSprite *player = (RPGBattlePlayerSprite*)this->m_playerList->objectAtIndex(i); + if(player->boundingBox().containsPoint(point)) + { + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + if(player->m_isSelected) + { + CCLog("对player使用道具"); + + RPGBattleMenu *battleMenu = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagBattleMenu); + RPGPlayer *srcPlayerData = battleMenu->m_playerData; + + player->selected(false); + this->removeChildByTag(kRPGBattleSceneLayerTagBattleMenu, true); + + this->useItem(srcPlayerData, player->m_data); + } + else + player->selected(true); + } + else + player->selected(false); + + } + + //检测选中的怪物 + for (int i = 0; i < this->m_monsterList->count(); i++) + { + RPGBattleMonsterSprite *monster = (RPGBattleMonsterSprite*)this->m_monsterList->objectAtIndex(i); + if(monster->boundingBox().containsPoint(point)) + { + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + if(monster->m_isSelected) + { + CCLog("对怪物使用道具"); + + RPGBattleMenu *battleMenu = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagBattleMenu); + RPGPlayer *srcPlayerData = battleMenu->m_playerData; + + monster->selected(false); + this->removeChildByTag(kRPGBattleSceneLayerTagBattleMenu, true); + + this->useItem(srcPlayerData, monster->m_data); + } + else + monster->selected(true); + } + else + monster->selected(false); + + } + } break; // default: @@ -542,6 +689,11 @@ void RPGBattleSceneLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) } //保存现有道具到数据库 + for (int i = 0; i < this->m_existingItems->count(); i++) + { + RPGExistingItems *itemsData = (RPGExistingItems*)this->m_existingItems->objectAtIndex(i); + this->m_db.execDML(CCString::createWithFormat(UPDATE_EXISTING_ITEMS, itemsData->m_total, itemsData->m_dataId)->getCString()); + } this->goToMap(); } @@ -712,10 +864,10 @@ void RPGBattleSceneLayer::attack(cocos2d::CCObject *attackObjData, cocos2d::CCOb RPGBattlePlayerSprite *player = (RPGBattlePlayerSprite*)this->getChildByTag(kRPGBattleSceneLayerTagPlayer + ((RPGPlayer*)attackObjData)->m_dataId); player->animAttack(this, targetObjData); } - else if(dynamic_cast(attackObjData) != NULL) - { - - } +// else if(dynamic_cast(attackObjData) != NULL) +// { +// +// } } @@ -739,8 +891,8 @@ void RPGBattleSceneLayer::attackResults(cocos2d::CCNode *sender, void *data) RPGBattleMonsterSprite *targetMonster = (RPGBattleMonsterSprite*)this->getChildByTag(((RPGMonster*)data)->m_tag); particleSysPoint = targetMonster->getPosition(); - int HPResults = RPGComputingResults::attackResults(((RPGBattlePlayerSprite*)sender)->m_data->m_attack, ((RPGMonster*)data)->m_defense); - targetMonster->showEffectResults(this, -HPResults, sender); + int results = RPGComputingResults::attackResults(((RPGBattlePlayerSprite*)sender)->m_data->m_attack, ((RPGMonster*)data)->m_defense); + targetMonster->showEffectResults(this, -results, sender); } else if(dynamic_cast((CCObject*)data) != NULL) { @@ -750,8 +902,8 @@ void RPGBattleSceneLayer::attackResults(cocos2d::CCNode *sender, void *data) particleSysPoint = targetPlayer->getPosition(); - int HPResults = RPGComputingResults::attackResults(((RPGBattlePlayerSprite*)sender)->m_data->m_attack, ((RPGPlayer*)data)->m_defense); - targetPlayer->showEffectResults(this, -HPResults, sender); + int results = RPGComputingResults::attackResults(((RPGBattlePlayerSprite*)sender)->m_data->m_attack, ((RPGPlayer*)data)->m_defense); + targetPlayer->showEffectResults(this, -results, sender); } @@ -778,7 +930,49 @@ void RPGBattleSceneLayer::attackResults(cocos2d::CCNode *sender, void *data) } -void RPGBattleSceneLayer::attackWithTargetEffectLabEnd(cocos2d::CCNode *sender, void* data) +void RPGBattleSceneLayer::useItem(cocos2d::CCObject *useItemObjData, cocos2d::CCObject *targetObjData) +{ + RPGBattlePlayerSprite *srcPlayer = (RPGBattlePlayerSprite*)this->getChildByTag(kRPGBattleSceneLayerTagPlayer + ((RPGPlayer*)useItemObjData)->m_dataId); + srcPlayer->animUseItem(this, targetObjData); + +} + +void RPGBattleSceneLayer::useItemResults(cocos2d::CCNode *sender, void *data) +{ + CCPoint particleSysPoint; + + if(dynamic_cast(sender) != NULL) + { + if(dynamic_cast((CCObject*)data) != NULL) + { + //对怪物使用道具 + + RPGBattleMonsterSprite *targetMonster = (RPGBattleMonsterSprite*)this->getChildByTag(((RPGMonster*)data)->m_tag); + particleSysPoint = targetMonster->getPosition(); + + int results = RPGResultsLogic::battleUseItems(this->m_existingItems, (RPGMonster*)data, CCUserDefault::sharedUserDefault()->getIntegerForKey(GAME_BATTLE_SELECTED_ID)); + targetMonster->showEffectResults(this, results, sender); + } + else if(dynamic_cast((CCObject*)data) != NULL) + { + //player攻击player + RPGBattlePlayerSprite *targetPlayer = (RPGBattlePlayerSprite*)this->getChildByTag(kRPGBattleSceneLayerTagPlayer + ((RPGPlayer*)data)->m_dataId); + particleSysPoint = targetPlayer->getPosition(); + + int results = RPGResultsLogic::battleUseItems(this->m_existingItems, (RPGPlayer*)data, CCUserDefault::sharedUserDefault()->getIntegerForKey(GAME_BATTLE_SELECTED_ID)); + targetPlayer->showEffectResults(this, results, sender); + } + + } + + //显示使用道具后的粒子效果 + CCParticleSystemQuad *particleSys = CCParticleSystemQuad::create("use_item.plist"); + particleSys->setAutoRemoveOnFinish(true); + particleSys->setPosition(particleSysPoint); + this->addChild(particleSys); +} + +void RPGBattleSceneLayer::actionWithTargetEffectLabEnd(cocos2d::CCNode *sender, void* data) { //data为发起攻击的Sprite对象 @@ -794,6 +988,12 @@ void RPGBattleSceneLayer::attackWithTargetEffectLabEnd(cocos2d::CCNode *sender, targetPlayer->m_data->m_status = kRPGDataStatusDeath; targetPlayer->animDeath(); } + else + { + //player复活 + targetPlayer->m_data->m_status = kRPGDataStatusNormal; + targetPlayer->animNormal(); + } sender->removeFromParentAndCleanup(true); @@ -819,7 +1019,7 @@ void RPGBattleSceneLayer::attackWithTargetEffectLabEnd(cocos2d::CCNode *sender, RPGBattleMonsterSprite *srcMonster = (RPGBattleMonsterSprite*)data; srcMonster->m_data->m_progress = 0; } - + //判断是否胜利了 if(!this->judgeLose()) this->scheduleUpdate(); @@ -892,7 +1092,7 @@ void RPGBattleSceneLayer::attackWithTargetEffectLabEnd(cocos2d::CCNode *sender, player->m_data->m_progress = 0; CCProgressTimer *battleProgress = (CCProgressTimer*)this->getChildByTag(kRPGBattleSceneLayerTagPlayerProgress + player->m_data->m_dataId); battleProgress->setPercentage(player->m_data->m_progress); - + //判断是否胜利了 if(!this->judgeWin()) this->scheduleUpdate(); diff --git a/Classes/RPGBattleSceneLayer.h b/Classes/RPGBattleSceneLayer.h index c4ab565..cb1df9e 100755 --- a/Classes/RPGBattleSceneLayer.h +++ b/Classes/RPGBattleSceneLayer.h @@ -80,6 +80,8 @@ private: public: + CCArray* m_existingItems; //已有道具 + RPGBattleSceneLayer(); virtual ~RPGBattleSceneLayer(); virtual bool init(); @@ -103,10 +105,15 @@ public: void enabledTouched(bool enabled); //是否打开可点击状态(主要可点击player或怪物) void cancelAllSelected(); //取消全部选中的对象 + //攻击 void attack(CCObject* attackObjData, CCObject* targetObjData); //player或怪物执行攻击 void attackResults(CCNode* sender, void* data); //回调,计算攻击后的结果 - void attackWithTargetEffectLabEnd(CCNode* sender, void* data); //回调,攻击流程完毕后执行,这个sender是被攻击的对象中显示的伤害值CCLabelTTF + //道具 + void useItem(CCObject* useItemObjData, CCObject* targetObjData); //player执行使用道具 + void useItemResults(CCNode* sender, void* data); //回调,计算使用道具后的结果 + + void actionWithTargetEffectLabEnd(CCNode* sender, void* data); //回调,攻击、技能、道具流程完毕后执行,这个sender是目标对象中显示的效果值CCLabelTTF }; #endif /* defined(__OzgGameRPG__RPGBattleSceneLayer__) */ diff --git a/Classes/RPGData.h b/Classes/RPGData.h index c6a3806..aa3a756 100644 --- a/Classes/RPGData.h +++ b/Classes/RPGData.h @@ -64,6 +64,8 @@ public: string m_name; int m_maxHP; int m_HP; //数据库里面没有这个字段 + int m_maxMP; + int m_MP; //数据库里面没有这个字段 float m_attack; float m_defense; float m_speed; diff --git a/Classes/RPGResultsLogic.cpp b/Classes/RPGResultsLogic.cpp index 32853a7..e4c7fef 100644 --- a/Classes/RPGResultsLogic.cpp +++ b/Classes/RPGResultsLogic.cpp @@ -97,13 +97,12 @@ bool RPGResultsLogic::useItems(CppSQLite3DB* db, int playerId, int itemsId) CppSQLite3Query query = db->execQuery(CCString::createWithFormat(PLAYER_DETAIL_QUERY, playerId)->getCString()); while(!query.eof()) { - //死亡状态下不能直接恢复hp的道具 if(query.getIntField("hp") <= 0 && itemsId != 8) - return false; + return false; //死亡状态下不能直接恢复hp的道具 else if(query.getIntField("hp") <= 0 && itemsId == 8) results = 1; //复活后是1HP else if(query.getIntField("hp") > 0 && itemsId == 8) - return false; //活着的人不能使用复活药 + return false; //活着的时候不能使用复活药 else { //恢复HP或MP @@ -134,6 +133,74 @@ bool RPGResultsLogic::useItems(CppSQLite3DB* db, int playerId, int itemsId) return true; } +int RPGResultsLogic::battleUseItems(CCArray* existingItems, cocos2d::CCObject *targetData, int itemsId) +{ + /* + 6 草药 + 7 党参 + 8 复活药 + + */ + + //道具的效果值 + int results = 0; + + if(dynamic_cast(targetData) != NULL) + { + if(((RPGPlayer*)targetData)->m_status == kRPGDataStatusDeath && itemsId != 8) + return 0; //死亡状态下不能直接恢复hp的道具 + else if(((RPGPlayer*)targetData)->m_status == kRPGDataStatusDeath && itemsId == 8) + results = 1; //复活后是1HP + else if(((RPGPlayer*)targetData)->m_status != kRPGDataStatusDeath && itemsId == 8) + return 0; //活着的时候不能使用复活药 + else + { + //恢复HP或MP + results = RPGComputingResults::itemCure(itemsId); + if(itemsId == 7) + CCUserDefault::sharedUserDefault()->setStringForKey(GAME_BATTLE_FIELD, "mp"); + + } + + } + else if(dynamic_cast(targetData) != NULL) + { + //以下的复活部分是不会触发的 + + if(((RPGMonster*)targetData)->m_status == kRPGDataStatusDeath && itemsId != 8) + return 0; //死亡状态下不能直接恢复hp的道具 + else if(((RPGMonster*)targetData)->m_status == kRPGDataStatusDeath && itemsId == 8) + results = 1; //复活后是1HP + else if(((RPGMonster*)targetData)->m_status != kRPGDataStatusDeath && itemsId == 8) + return 0; //活着的时候不能使用复活药 + else + { + //恢复HP或MP + results = RPGComputingResults::itemCure(itemsId); + if(itemsId == 7) + CCUserDefault::sharedUserDefault()->setStringForKey(GAME_BATTLE_FIELD, "mp"); + + } + + } + + //扣减一个已有道具,没有了就在已有existingItems中删除 + CCArray* noneExistingItems = CCArray::create(); + for (int i = 0; i < existingItems->count(); i++) + { + RPGExistingItems *itemsData = (RPGExistingItems*)existingItems->objectAtIndex(i); + + itemsData->m_total--; + + if(itemsData->m_total <= 0) + noneExistingItems->addObject(itemsData); //该道具用完了之后就加入删除列表 + } + //删除用完了的道具 + existingItems->removeObjectsInArray(noneExistingItems); + + return results; +} + bool RPGResultsLogic::useSkillCure(CppSQLite3DB *db, int srcPlayerId, int targetPlayerId, int srcSkillId) { RPGPlayer *srcPlayerData; diff --git a/Classes/RPGResultsLogic.h b/Classes/RPGResultsLogic.h index 66d1897..0e7bc5d 100644 --- a/Classes/RPGResultsLogic.h +++ b/Classes/RPGResultsLogic.h @@ -24,7 +24,8 @@ class RPGResultsLogic public: static void discardItems(CppSQLite3DB* db, int itemsId); //丢弃道具 static void deductionsItems(CppSQLite3DB* db, int itemsId); //扣减道具数 - static bool useItems(CppSQLite3DB* db, int playerId, int itemsId); //使用道具,返回成功或失败 + static bool useItems(CppSQLite3DB* db, int playerId, int itemsId); //地图画面中使用道具,返回成功或失败 + static int battleUseItems(CCArray* existingItems, CCObject* targetData, int itemsId); //战斗画面中使用道具,existingItems为已有道具,objData为RPGPlayer、RPGMonster,返回的是该道具的效果值 static bool useSkillCure(CppSQLite3DB* db, int srcPlayerId, int targetPlayerId, int srcSkillId); //使用回复技能 diff --git a/README.md b/README.md index b6c70a9..2ed903a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -ozg game — 单机版RPG(开发中…) +ozg game — RPG(开发中…) ================ 本游戏主要用于技术的研究和积累 @@ -9,7 +9,7 @@ ozg game — 单机版RPG(开发中…) 声音文件来自 http://www.66rpg.com/type.php?t=17 -目前只在iOS平台下进行测试,战斗系统的技能、道具未完成。 +目前只在iOS平台下进行测试,战斗系统的技能未完成。 每次的更新完毕之后,数据结构都可能发生了变化,所以要把旧的数据库删除。 diff --git a/Resources/db.sys b/Resources/db.sys index 1c178c7b3a6ca27d7625c648b148b70d4f9d4a48..f7bfd9af95caa1350f68ce0c376a89b808b988af 100755 GIT binary patch delta 261 zcmZo@5Nl`Q77%qTU znOVyAF+@yk44KSawwtB0l(AuBV-4eGyNbCiObpv6HqMz`Su4)f%x}ytE-lU2TDti} zSt+Bij)GEdVnuvzfs%r!Ux=%_YmjEMQhmEpJ>ztxdM1BH*6l_0OcNS-R2i7-o-@=v zuMe+31F~`B1W#Um8%BNxbw)5?5;SIH@Cb%r4pg!Yt<9cRo lR!N{QtR^-Zir4@d3`WdIN)#EVFQ{i$VH9g?U~X$*0RRL3M9KgF delta 232 zcmZo@5Nl`qTU znOQ1J86qY&hD>HI+s)NfYs@Y#EzQ^(xOrA>DI=riX1j{HEKE$E6C3ADuB;W`IDwau zrM`rrbz);J#Qa$5zrFtfR#_H`w^-L2Qc;XnC>s1-*kJPKyPXbx7aY7@nNc}_x zdj$Np7 Iw>7W;0I!5Tng9R* diff --git a/Resources/use_item.plist b/Resources/use_item.plist new file mode 100644 index 0000000..34b49d5 --- /dev/null +++ b/Resources/use_item.plist @@ -0,0 +1,110 @@ + + + + + angle + 258.89999389648438 + angleVariance + 12.329999923706055 + blendFuncDestination + 1 + blendFuncSource + 770 + duration + 0.5 + emitterType + 0.0 + finishColorAlpha + 1 + finishColorBlue + 1 + finishColorGreen + 0.43999999761581421 + finishColorRed + 0.0 + finishColorVarianceAlpha + 1 + finishColorVarianceBlue + 0.0 + finishColorVarianceGreen + 0.0 + finishColorVarianceRed + 0.0 + finishParticleSize + 0.0 + finishParticleSizeVariance + 0.0 + gravityx + 0.0 + gravityy + -434.20999145507812 + maxParticles + 300 + maxRadius + 100 + maxRadiusVariance + 0.0 + minRadius + 0.0 + particleLifespan + 0.5 + particleLifespanVariance + 0.25 + radialAccelVariance + 0.0 + radialAcceleration + 0.0 + rotatePerSecond + 0.0 + rotatePerSecondVariance + 0.0 + rotationEnd + 0.0 + rotationEndVariance + 0.0 + rotationStart + 0.0 + rotationStartVariance + 0.0 + sourcePositionVariancex + 44.5 + sourcePositionVariancey + -48 + sourcePositionx + 167.97297668457031 + sourcePositiony + 411.23309326171875 + speed + 59.209999084472656 + speedVariance + 0.0 + startColorAlpha + 1 + startColorBlue + 1 + startColorGreen + 0.75999999046325684 + startColorRed + 0.49000000953674316 + startColorVarianceAlpha + 0.0 + startColorVarianceBlue + 0.50999999046325684 + startColorVarianceGreen + 0.0 + startColorVarianceRed + 0.0 + startParticleSize + 34.110000610351562 + startParticleSizeVariance + 5 + tangentialAccelVariance + 0.0 + tangentialAcceleration + 0.0 + textureFileName + particleTexture.png + textureImageData + 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 + + diff --git a/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj b/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj index 451be9e..59eee74 100644 --- a/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj +++ b/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj @@ -216,6 +216,7 @@ 46C1009316BF786A00F74D54 /* tolua_fix.c in Sources */ = {isa = PBXBuildFile; fileRef = 46C1008A16BF786A00F74D54 /* tolua_fix.c */; }; 46C59AD317641FF300F43DC3 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 46C59AD117641FF300F43DC3 /* AudioEngine.lua */; }; 46C59AD417641FF300F43DC3 /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 46C59AD217641FF300F43DC3 /* CCBReaderLoad.lua */; }; + 8905D0C1190CC5E70031F27E /* use_item.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8905D0C0190CC5E70031F27E /* use_item.plist */; }; 8909857018F253DE0021AE26 /* battle_msg_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8909856F18F253DE0021AE26 /* battle_msg_style1.tmx */; }; 890F1B5C1902E284002F2769 /* attack1.ExportJson in Resources */ = {isa = PBXBuildFile; fileRef = 890F1B501902E284002F2769 /* attack1.ExportJson */; }; 890F1B5D1902E284002F2769 /* attack2.ExportJson in Resources */ = {isa = PBXBuildFile; fileRef = 890F1B511902E284002F2769 /* attack2.ExportJson */; }; @@ -842,6 +843,7 @@ 46C1008B16BF786A00F74D54 /* tolua_fix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tolua_fix.h; sourceTree = ""; }; 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 = ""; }; + 8905D0C0190CC5E70031F27E /* use_item.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = use_item.plist; sourceTree = ""; }; 8909856F18F253DE0021AE26 /* battle_msg_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = battle_msg_style1.tmx; sourceTree = ""; }; 890F1B501902E284002F2769 /* attack1.ExportJson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = attack1.ExportJson; sourceTree = ""; }; 890F1B511902E284002F2769 /* attack2.ExportJson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = attack2.ExportJson; sourceTree = ""; }; @@ -2426,6 +2428,7 @@ F293BC4615EB859D00256477 /* Resources */ = { isa = PBXGroup; children = ( + 8905D0C0190CC5E70031F27E /* use_item.plist */, 89D2A12A190B431F00EDD50B /* skill_cure.plist */, 89D2A12B190B431F00EDD50B /* skill_fire.plist */, 893D34D21906B01100BFE2C5 /* attack_damage.plist */, @@ -2658,6 +2661,7 @@ 15C1569E1683138E00D239F2 /* Icon-144.png in Resources */, 89F5D10F18E7C5C0009D703C /* actor7_4.png in Resources */, 9E5C5F6E18EE59BB00A68C36 /* battle_menu_style1.tmx in Resources */, + 8905D0C1190CC5E70031F27E /* use_item.plist in Resources */, 1AC3623516D47C5C000847F2 /* fonts in Resources */, 893D34D41906B01100BFE2C5 /* attack_damage.plist in Resources */, 89F5D14118E7C5DD009D703C /* map_01.tmx in Resources */, 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 f66972061bda22d14786e5772ba9fb2f56743a2f..ffb4ce1b721429d5279b7885168eccff73f047ab 100644 GIT binary patch literal 89899 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 literal 87210 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