diff --git a/Classes/RPGBaseSceneLayer.h b/Classes/RPGBaseSceneLayer.h
index 186990b..690a626 100755
--- a/Classes/RPGBaseSceneLayer.h
+++ b/Classes/RPGBaseSceneLayer.h
@@ -33,6 +33,12 @@ using namespace CocosDenshion;
//查询现有道具
#define ITEMS_QUERY "select * from items where id in(%s) order by id asc"
+//获取一个player的详细数据
+#define PLAYER_DETAIL_QUERY "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)"
+
//技能的属性
enum RPGSkillAttr
{
diff --git a/Classes/RPGComputingResults.h b/Classes/RPGComputingResults.h
index 8319baf..6dc63de 100644
--- a/Classes/RPGComputingResults.h
+++ b/Classes/RPGComputingResults.h
@@ -21,7 +21,7 @@ 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 skillCureResults(float playerSkillAttack, float skillAttack); //技能治疗
static int itemCure(int itemsId); //道具治疗
diff --git a/Classes/RPGData.h b/Classes/RPGData.h
index bbb1339..705462c 100644
--- a/Classes/RPGData.h
+++ b/Classes/RPGData.h
@@ -82,7 +82,8 @@ public:
int m_dataId;
string m_name;
float m_skillAttack;
- int m_mp;
+ int m_MP;
+ int m_type;
RPGSkill();
virtual ~RPGSkill();
diff --git a/Classes/RPGMapChoicePlayerMenuLayer.cpp b/Classes/RPGMapChoicePlayerMenuLayer.cpp
index 40156ba..4739c8c 100644
--- a/Classes/RPGMapChoicePlayerMenuLayer.cpp
+++ b/Classes/RPGMapChoicePlayerMenuLayer.cpp
@@ -21,7 +21,7 @@ RPGMapChoicePlayerMenuLayer::~RPGMapChoicePlayerMenuLayer()
CCLog("RPGMapChoicePlayerMenuLayer 释放");
}
-bool RPGMapChoicePlayerMenuLayer::init(CppSQLite3DB *db, CCObject* target, SEL_CallFuncO selector, float width, float height)
+bool RPGMapChoicePlayerMenuLayer::init(CppSQLite3DB *db, CCString* titleLab, CCObject* target, SEL_CallFuncO selector, float width, float height)
{
if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height))
{
@@ -41,6 +41,16 @@ bool RPGMapChoicePlayerMenuLayer::init(CppSQLite3DB *db, CCObject* target, SEL_C
mainMenu->setPosition(CCPointZero);
this->addChild(mainMenu);
+ CCMenuItemSprite *menuBack = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapChoicePlayerMenuLayerTagMainMenuBack);
+ if(!menuBack)
+ {
+ menuBack = CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), CCSprite::createWithSpriteFrameName("commons_btn_back_04.png"), this, menu_selector(RPGMapChoicePlayerMenuLayer::onMenu));
+ menuBack->setPosition(ccp(40, 600));
+ menuBack->setTag(kRPGMapChoicePlayerMenuLayerTagMainMenuBack);
+ menuBack->setScale(0.5);
+ mainMenu->addChild(menuBack);
+ }
+
this->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - width) / 2, (CCDirector::sharedDirector()->getWinSize().height - height) / 2));
//显示4个角色
@@ -48,9 +58,20 @@ bool RPGMapChoicePlayerMenuLayer::init(CppSQLite3DB *db, CCObject* target, SEL_C
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 = NULL;
+ if(query.getIntField("hp") <= 0)
+ {
+ //死亡
+ CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_2.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
+ playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(10));
+ }
+ else
+ {
+ //正常
+ CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_0.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
+ playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(1));
+ }
- CCSprite *playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(1));
CCMenuItemSprite *player = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapChoicePlayerMenuLayerTagMainMenuPlayer + query.getIntField("id"));
if(!player)
{
@@ -66,6 +87,8 @@ bool RPGMapChoicePlayerMenuLayer::init(CppSQLite3DB *db, CCObject* target, SEL_C
}
query.finalize();
+ addLab(this, kRPGMapChoicePlayerMenuLayerTagTitleLab, titleLab, ccp(600, 400));
+
CCNotificationCenter::sharedNotificationCenter()->addObserver(this->m_target, selector, "onChoicePlayer", NULL);
return true;
@@ -73,10 +96,10 @@ bool RPGMapChoicePlayerMenuLayer::init(CppSQLite3DB *db, CCObject* target, SEL_C
return false;
}
-RPGMapChoicePlayerMenuLayer* RPGMapChoicePlayerMenuLayer::create(CppSQLite3DB *db, CCObject* target, SEL_CallFuncO selector, float width, float height)
+RPGMapChoicePlayerMenuLayer* RPGMapChoicePlayerMenuLayer::create(CppSQLite3DB *db, CCString* titleLab, CCObject* target, SEL_CallFuncO selector, float width, float height)
{
RPGMapChoicePlayerMenuLayer *obj = new RPGMapChoicePlayerMenuLayer();
- if(obj && obj->init(db, target, selector, width, height))
+ if(obj && obj->init(db, titleLab, target, selector, width, height))
{
obj->autorelease();
return obj;
@@ -88,4 +111,5 @@ RPGMapChoicePlayerMenuLayer* RPGMapChoicePlayerMenuLayer::create(CppSQLite3DB *d
void RPGMapChoicePlayerMenuLayer::onMenu(cocos2d::CCObject *pObject)
{
CCNotificationCenter::sharedNotificationCenter()->postNotification("onChoicePlayer", pObject);
+
}
diff --git a/Classes/RPGMapChoicePlayerMenuLayer.h b/Classes/RPGMapChoicePlayerMenuLayer.h
index 52d181d..b9acb3b 100644
--- a/Classes/RPGMapChoicePlayerMenuLayer.h
+++ b/Classes/RPGMapChoicePlayerMenuLayer.h
@@ -22,6 +22,7 @@
#include "cocos2d.h"
#include "RPGBaseSceneLayer.h"
+#include "RPGBaseSceneLayer.h"
#include "OzgCCUtility.h"
USING_NS_CC;
@@ -29,7 +30,9 @@ USING_NS_CC;
enum RPGMapChoicePlayerMenuLayerTag
{
kRPGMapChoicePlayerMenuLayerTagMainMenu = 1,
+ kRPGMapChoicePlayerMenuLayerTagMainMenuBack = 4,
kRPGMapChoicePlayerMenuLayerTagBg = 2,
+ kRPGMapChoicePlayerMenuLayerTagTitleLab = 3,
kRPGMapChoicePlayerMenuLayerTagMainMenuPlayer = 100
};
@@ -48,8 +51,8 @@ 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);
+ bool init(CppSQLite3DB *db, CCString* titleLab, CCObject* target, SEL_CallFuncO selector, float width, float height);
+ static RPGMapChoicePlayerMenuLayer* create(CppSQLite3DB *db, CCString* titleLab, CCObject* target, SEL_CallFuncO selector, float width, float height);
};
#endif /* defined(__OzgGameRPG__RPGMapChoicePlayerMenuLayer__) */
diff --git a/Classes/RPGMapItemsMenuLayer.cpp b/Classes/RPGMapItemsMenuLayer.cpp
index cdfff91..6ba862d 100644
--- a/Classes/RPGMapItemsMenuLayer.cpp
+++ b/Classes/RPGMapItemsMenuLayer.cpp
@@ -248,8 +248,8 @@ void RPGMapItemsMenuLayer::onMenu(cocos2d::CCObject *pObject)
void RPGMapItemsMenuLayer::onDialog(cocos2d::CCObject *pObject)
{
this->getParent()->removeChildByTag(kRPGMapItemsMenuLayerTagDialog, true);
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayerBg, true);
this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true);
- this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerLab, true);
this->setVisible(true);
}
@@ -272,13 +272,19 @@ void RPGMapItemsMenuLayer::onButton(cocos2d::CCObject *pSender, CCControlEvent e
//因为动态获取地图的大小会导致了菜单层显示错位,所以定死了
float width = 960;
float height = 640;
- RPGMapChoicePlayerMenuLayer *choicePlayer = RPGMapChoicePlayerMenuLayer::create(this->m_db, this, callfuncO_selector(RPGMapItemsMenuLayer::onChoicePlayer), width, height);
+
+ //临时背景
+ CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu3_style1.tmx");
+ mainBg->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width / 2, CCDirector::sharedDirector()->getWinSize().height / 2));
+ mainBg->setAnchorPoint(ccp(0.5, 0.5));
+ mainBg->setTag(kRPGMapSceneLayerTagChoicePlayerMenuLayerBg);
+ this->getParent()->addChild(mainBg);
+
+ CCString *title = CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("menu_items_choice"))->getCString(), this->m_selectedItems->m_name.c_str());
+ RPGMapChoicePlayerMenuLayer *choicePlayer = RPGMapChoicePlayerMenuLayer::create(this->m_db, title, this, callfuncO_selector(RPGMapItemsMenuLayer::onChoicePlayer), width, height);
choicePlayer->setTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer);
this->getParent()->addChild(choicePlayer);
- CCString *labText = CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("menu_items_choice"))->getCString(), this->m_selectedItems->m_name.c_str());
- addLab(this->getParent(), kRPGMapSceneLayerTagChoicePlayerLab, labText, ccp(650, 470));
-
this->setVisible(false);
}
@@ -286,25 +292,35 @@ void RPGMapItemsMenuLayer::onChoicePlayer(cocos2d::CCObject *pObject)
{
SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav");
- CCMenuItem *player = (CCMenuItem*)pObject;
-
- bool isSuccess = RPGResultsLogic::useItems(this->m_db, player->getTag() - kRPGMapChoicePlayerMenuLayerTagMainMenuPlayer, this->m_selectedItems->m_dataId);
- if(!isSuccess)
+ CCMenuItem *menuItem = (CCMenuItem*)pObject;
+ if(menuItem->getTag() == kRPGMapChoicePlayerMenuLayerTagMainMenuBack)
{
- //道具使用失败
- CCSize winSize = CCDirector::sharedDirector()->getWinSize();
- RPGDialogLayer *dialog = RPGDialogLayer::create(((CCString*)this->m_stringList->objectForKey("menu_items_fail"))->getCString(), ((CCString*)this->m_stringList->objectForKey("confirm_exit_ok"))->getCString(), kRPGMapItemsMenuLayerTagDialogOK, winSize.width, winSize.height, this, menu_selector(RPGMapItemsMenuLayer::onDialog));
- dialog->setTag(kRPGMapItemsMenuLayerTagDialog);
- this->getParent()->addChild(dialog);
-
+ //按了退出
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayerBg, true);
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true);
+ this->setVisible(true);
}
else
{
- //道具使用成功
- this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true);
- this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerLab, true);
- this->setVisible(true);
-
- this->loadItemsData();
+ bool isSuccess = RPGResultsLogic::useItems(this->m_db, menuItem->getTag() - kRPGMapChoicePlayerMenuLayerTagMainMenuPlayer, this->m_selectedItems->m_dataId);
+ if(!isSuccess)
+ {
+ //道具使用失败
+ CCSize winSize = CCDirector::sharedDirector()->getWinSize();
+ RPGDialogLayer *dialog = RPGDialogLayer::create(((CCString*)this->m_stringList->objectForKey("menu_items_fail"))->getCString(), ((CCString*)this->m_stringList->objectForKey("confirm_exit_ok"))->getCString(), kRPGMapItemsMenuLayerTagDialogOK, winSize.width, winSize.height, this, menu_selector(RPGMapItemsMenuLayer::onDialog));
+ dialog->setTag(kRPGMapItemsMenuLayerTagDialog);
+ this->getParent()->addChild(dialog);
+
+ }
+ else
+ {
+ //道具使用成功
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayerBg, true);
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true);
+ this->setVisible(true);
+
+ this->loadItemsData();
+ }
}
+
}
diff --git a/Classes/RPGMapMenuLayer.cpp b/Classes/RPGMapMenuLayer.cpp
index 5938833..ff665e9 100755
--- a/Classes/RPGMapMenuLayer.cpp
+++ b/Classes/RPGMapMenuLayer.cpp
@@ -28,7 +28,7 @@ RPGMapMenuLayer::~RPGMapMenuLayer()
// CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
-// CCLog("RPGMapMenuLayer释放");
+ CCLog("RPGMapMenuLayer释放");
}
bool RPGMapMenuLayer::init(CCDictionary* stringList, CppSQLite3DB* db, float width, float height)
@@ -280,9 +280,20 @@ void RPGMapMenuLayer::setDefaultInterface()
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 = NULL;
+ if(query.getIntField("hp") <= 0)
+ {
+ //死亡
+ CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_2.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
+ playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(10));
+ }
+ else
+ {
+ //正常
+ CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_0.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
+ playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(1));
+ }
- CCSprite *playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(1));
playerSprite->setPosition(ccp(150, playerY));
playerSprite->setScale(2);
playerSprite->setTag(kRPGMapMenuLayerTagDefualtPlayerTex + query.getIntField("id"));
diff --git a/Classes/RPGMapSceneLayer.h b/Classes/RPGMapSceneLayer.h
index 7993263..d8d730a 100755
--- a/Classes/RPGMapSceneLayer.h
+++ b/Classes/RPGMapSceneLayer.h
@@ -20,7 +20,7 @@ enum RPGMapSceneLayerTag
kRPGMapSceneLayerTagMainMenuCommand = 4,
kRPGMapSceneLayerTagMenuLayer = 5,
kRPGMapSceneLayerTagChoicePlayerMenuLayer = 6,
- kRPGMapSceneLayerTagChoicePlayerLab = 7,
+ kRPGMapSceneLayerTagChoicePlayerMenuLayerBg = 7,
kRPGMapSceneLayerTagPlayer = 1999,
kRPGMapSceneLayerTagNPC = 2000
diff --git a/Classes/RPGMapSkillMenuLayer.cpp b/Classes/RPGMapSkillMenuLayer.cpp
index af44731..3cafd09 100644
--- a/Classes/RPGMapSkillMenuLayer.cpp
+++ b/Classes/RPGMapSkillMenuLayer.cpp
@@ -9,6 +9,8 @@
#include "RPGMapSkillMenuLayer.h"
#include "RPGMapMenuLayer.h"
#include "RPGMapSceneLayer.h"
+#include "RPGMapChoicePlayerMenuLayer.h"
+#include "OzgCCUtility.h"
RPGMapSkillMenuLayer::RPGMapSkillMenuLayer()
{
@@ -18,6 +20,7 @@ RPGMapSkillMenuLayer::RPGMapSkillMenuLayer()
RPGMapSkillMenuLayer::~RPGMapSkillMenuLayer()
{
this->m_stringList->release();
+ this->m_skillList->release();
CCLog("RPGMapSkillMenuLayer 释放");
}
@@ -31,6 +34,13 @@ bool RPGMapSkillMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB
this->m_db = db;
+ this->m_skillList = new CCArray();
+ this->m_skillList->init();
+
+ this->m_statusIsDefault = true;
+
+ this->m_enabledPlayerSkill = true; //默认可以点击技能项
+
CCMenu *mainMenu = CCMenu::create();
mainMenu->setTag(kRPGMapSkillMenuLayerTagMainMenu);
mainMenu->setAnchorPoint(CCPointZero);
@@ -52,6 +62,43 @@ bool RPGMapSkillMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB
mainBg->setTag(kRPGMapSkillMenuLayerTagBg);
this->addChild(mainBg);
+ //显示上面的4个角色
+ float playerX = 200;
+ CppSQLite3Query query = this->m_db->execQuery(PLAYER_QUERY);
+ while(!query.eof())
+ {
+ CCSprite *playerSprite = NULL;
+ if(query.getIntField("hp") <= 0)
+ {
+ //死亡
+ CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_2.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
+ playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(10));
+ }
+ else
+ {
+ //正常
+ CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_0.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
+ playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(1));
+ }
+
+ CCMenuItemSprite *player = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapSkillMenuLayerTagMainMenuPlayer + query.getIntField("id"));
+ if(!player)
+ {
+ player = CCMenuItemSprite::create(playerSprite, playerSprite, this, menu_selector(RPGMapSkillMenuLayer::onMenu));
+ player->setPosition(ccp(playerX, 560));
+ player->setScale(2);
+ player->setTag(kRPGMapSkillMenuLayerTagMainMenuPlayer + query.getIntField("id"));
+ mainMenu->addChild(player);
+ }
+
+ playerX += 200;
+ query.nextRow();
+ }
+ query.finalize();
+
+ //默认选中第一个
+ this->onMenu(mainMenu->getChildByTag(kRPGMapSkillMenuLayerTagMainMenuPlayer + 1));
+
return true;
}
return false;
@@ -69,11 +116,93 @@ RPGMapSkillMenuLayer* RPGMapSkillMenuLayer::create(cocos2d::CCDictionary *string
return NULL;
}
+//CCTableView
+void RPGMapSkillMenuLayer::scrollViewDidScroll(CCScrollView *scrollView)
+{
+
+}
+
+void RPGMapSkillMenuLayer::scrollViewDidZoom(CCScrollView *scrollView)
+{
+
+}
+
+void RPGMapSkillMenuLayer::tableCellTouched(CCTableView *tableView, CCTableViewCell *cell)
+{
+
+}
+
+CCSize RPGMapSkillMenuLayer::cellSizeForTable(CCTableView *tableView)
+{
+ return CCSizeMake(tableView->getContentSize().width, 80);
+}
+
+CCTableViewCell* RPGMapSkillMenuLayer::tableCellAtIndex(CCTableView *tableView, unsigned int idx)
+{
+ CCTableViewCell *cell = tableView->dequeueCell();
+ if (!cell)
+ {
+ cell = new CCTableViewCell();
+ cell->autorelease();
+ }
+ else
+ cell->removeAllChildrenWithCleanup(true);
+
+ float x = 100;
+ for (int i = 0; i < 5; i++)
+ {
+ int index = idx * 5 + i;
+
+ if(index >= this->m_skillList->count())
+ break;
+
+ RPGSkill *skillData = (RPGSkill*)this->m_skillList->objectAtIndex(index);
+
+ CCControlButton *skillBtn = CCControlButton::create(CCString::createWithFormat("%s (%i)", skillData->m_name.c_str(), skillData->m_MP)->getCString(), "Arial", 22);
+ skillBtn->setPosition(ccp(x, 0));
+ skillBtn->setTag(skillData->m_dataId);
+ skillBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(RPGMapSkillMenuLayer::onButton), CCControlEventTouchUpInside);
+ cell->addChild(skillBtn);
+
+ //如果是非回复类技能的话,则禁用点击
+ if(skillData->m_type != 2)
+ {
+ skillBtn->setTitleColorForState(ccc3(144, 144, 144), CCControlStateNormal);
+ skillBtn->setEnabled(false);
+ }
+ //MP不够的话,禁用点击
+ else if(!this->m_enabledPlayerSkill)
+ {
+ skillBtn->setTitleColorForState(ccc3(144, 144, 144), CCControlStateNormal);
+ skillBtn->setEnabled(false);
+ }
+
+ x += 170;
+ }
+
+ return cell;
+}
+
+unsigned int RPGMapSkillMenuLayer::numberOfCellsInTableView(CCTableView *tableView)
+{
+ int rowItemCount = 5;
+ int size = this->m_skillList->count();
+
+ if(size % rowItemCount == 0)
+ return size / rowItemCount;
+ else
+ return size / rowItemCount + 1;
+}
+//CCTableView end
+
//private
void RPGMapSkillMenuLayer::onMenu(cocos2d::CCObject *pObject)
{
+ //第一次显示数据的话则不播放效果音
+ if(!this->m_statusIsDefault)
+ SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav");
+
CCMenuItem *menuItem = (CCMenuItem*)pObject;
- SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav");
switch (menuItem->getTag())
{
@@ -98,4 +227,189 @@ void RPGMapSkillMenuLayer::onMenu(cocos2d::CCObject *pObject)
break;
}
+ if(menuItem->getTag() >= kRPGMapSkillMenuLayerTagMainMenuPlayer && menuItem->getTag() <= kRPGMapSkillMenuLayerTagMainMenuPlayer + 99)
+ {
+// CCLog("点击了上面4个player的其中一个");
+ CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapSkillMenuLayerTagMainMenu);
+
+ CppSQLite3Query query = this->m_db->execQuery(PLAYER_QUERY);
+ while(!query.eof())
+ {
+ if(menuItem->getTag() == kRPGMapSkillMenuLayerTagMainMenuPlayer + query.getIntField("id"))
+ {
+ this->m_statusIsDefault = false;
+
+ int dataId = query.getIntField("id");
+ this->setPlayerSkill(dataId);
+
+ //选中的光标部分
+ CCMenuItemSprite *player = (CCMenuItemSprite*)mainMenu->getChildByTag(kRPGMapSkillMenuLayerTagMainMenuPlayer + 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 RPGMapSkillMenuLayer::setPlayerSkill(int dataId)
+{
+ CCTableView *tableView = (CCTableView*)this->getChildByTag(kRPGMapSkillMenuLayerTagItemListTable);
+ if(!tableView)
+ {
+ tableView = CCTableView::create(this, CCSizeMake(850, 420));
+ tableView->setDirection(kCCScrollViewDirectionVertical);
+ tableView->setPosition(ccp(30, 30));
+ tableView->setDelegate(this);
+ tableView->setVerticalFillOrder(kCCTableViewFillTopDown);
+ tableView->setTag(kRPGMapSkillMenuLayerTagItemListTable);
+ this->addChild(tableView);
+ }
+
+ CppSQLite3Query query = this->m_db->execQuery(CCString::createWithFormat(PLAYER_DETAIL_QUERY, dataId)->getCString());
+ while(!query.eof())
+ {
+ this->m_selectedPlayerId = query.getIntField("id");
+
+ if(query.getFloatField("mp") <= 0 || query.getFloatField("hp") <= 0)
+ this->m_enabledPlayerSkill = false;
+
+ //数据处理部分
+ 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_dataId = skillQuery.getIntField("id");
+ skill->m_name = skillQuery.getStringField("name_cns");
+ skill->m_MP = skillQuery.getIntField("mp");
+ skill->m_skillAttack = skillQuery.getIntField("skill_attack");
+ skill->m_type = skillQuery.getIntField("type");
+
+ this->m_skillList->addObject(skill);
+
+ skillQuery.nextRow();
+ }
+ skillQuery.finalize();
+ }
+
+ tableView->reloadData();
+
+ query.nextRow();
+ }
+ query.finalize();
+
+}
+
+void RPGMapSkillMenuLayer::onButton(cocos2d::CCObject *pSender, CCControlEvent event)
+{
+ SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav");
+
+ CCControlButton *skillBtn = (CCControlButton*)pSender;
+ for (int i = 0; i < this->m_skillList->count(); i++)
+ {
+ //判断选中道具
+ RPGSkill *skillData = (RPGSkill*)this->m_skillList->objectAtIndex(i);
+ if(skillBtn->getTag() == skillData->m_dataId)
+ {
+ this->m_selectedSkill = skillData;
+ break;
+ }
+ }
+
+ //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了
+ float width = 960;
+ float height = 640;
+
+ //临时背景
+ CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu3_style1.tmx");
+ mainBg->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width / 2, CCDirector::sharedDirector()->getWinSize().height / 2));
+ mainBg->setAnchorPoint(ccp(0.5, 0.5));
+ mainBg->setTag(kRPGMapSceneLayerTagChoicePlayerMenuLayerBg);
+ this->getParent()->addChild(mainBg);
+
+ CCString *title = CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("menu_skill_choice"))->getCString(), this->m_selectedSkill->m_name.c_str());
+ RPGMapChoicePlayerMenuLayer *choicePlayer = RPGMapChoicePlayerMenuLayer::create(this->m_db, title, this, callfuncO_selector(RPGMapSkillMenuLayer::onChoicePlayer), width, height);
+ choicePlayer->setTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer);
+ this->getParent()->addChild(choicePlayer);
+
+ this->setVisible(false);
+}
+
+void RPGMapSkillMenuLayer::onChoicePlayer(CCObject* pObject)
+{
+ SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav");
+
+ CCMenuItem *menuItem = (CCMenuItem*)pObject;
+ if(menuItem->getTag() == kRPGMapChoicePlayerMenuLayerTagMainMenuBack)
+ {
+ //按了退出
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayerBg, true);
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true);
+ this->setVisible(true);
+ }
+ else
+ {
+
+ bool isSuccess = RPGResultsLogic::useSkillCure(this->m_db, this->m_selectedPlayerId, menuItem->getTag() - kRPGMapChoicePlayerMenuLayerTagMainMenuPlayer, this->m_selectedSkill->m_dataId);
+ if(!isSuccess)
+ {
+ CCLog("技能使用失败");
+ CCSize winSize = CCDirector::sharedDirector()->getWinSize();
+ RPGDialogLayer *dialog = RPGDialogLayer::create(((CCString*)this->m_stringList->objectForKey("menu_skill_fail"))->getCString(), ((CCString*)this->m_stringList->objectForKey("confirm_exit_ok"))->getCString(), kRPGMapSkillMenuLayerTagDialogOK, winSize.width, winSize.height, this, menu_selector(RPGMapSkillMenuLayer::onDialog));
+ dialog->setTag(kRPGMapSkillMenuLayerTagDialog);
+ this->getParent()->addChild(dialog);
+
+ }
+ else
+ {
+ CCLog("技能使用成功");
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayerBg, true);
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true);
+ this->setVisible(true);
+
+ this->setPlayerSkill(this->m_selectedPlayerId); //刷新正在显示的技能数据
+ }
+ }
+
+}
+
+void RPGMapSkillMenuLayer::onDialog(cocos2d::CCObject *pObject)
+{
+ this->getParent()->removeChildByTag(kRPGMapSkillMenuLayerTagDialog, true);
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayerBg, true);
+ this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true);
+ this->setVisible(true);
}
diff --git a/Classes/RPGMapSkillMenuLayer.h b/Classes/RPGMapSkillMenuLayer.h
index 6cce218..a19ded8 100644
--- a/Classes/RPGMapSkillMenuLayer.h
+++ b/Classes/RPGMapSkillMenuLayer.h
@@ -15,6 +15,7 @@
#include "JsonBox.h"
#include "RPGMapRoleSprite.h"
#include "RPGBaseSceneLayer.h"
+#include "RPGResultsLogic.h"
USING_NS_CC;
USING_NS_CC_EXT;
@@ -23,19 +24,36 @@ enum RPGMapSkillMenuLayerTag
{
kRPGMapSkillMenuLayerTagMainMenu = 1,
kRPGMapSkillMenuLayerTagMainMenuBack = 2,
- kRPGMapSkillMenuLayerTagBg = 3
-
+ kRPGMapSkillMenuLayerTagBg = 3,
+ kRPGMapSkillMenuLayerTagItemListTable = 4,
+ kRPGMapSkillMenuLayerTagMainMenuPlayer = 100,
+ kRPGMapSkillMenuLayerTagDialogOK = 5,
+ kRPGMapSkillMenuLayerTagDialog = 86
};
-class RPGMapSkillMenuLayer : public CCLayerColor//, CCTableViewDelegate, CCTableViewDataSource
+class RPGMapSkillMenuLayer : public CCLayerColor, CCTableViewDelegate, CCTableViewDataSource
{
private:
CCDictionary* m_stringList;
CppSQLite3DB* m_db;
+ CCArray* m_skillList;
+
+ bool m_statusIsDefault; //是否为第一次进入状态界面,如果是的话就不播放效果音了
+
+ int m_selectedPlayerId; //选中上面的player的id
+ bool m_enabledPlayerSkill; //是否允许点击技能项,死亡状态、相关异常状态或MP为0时设置为false
+ RPGSkill* m_selectedSkill; //选中的技能
+
void onMenu(cocos2d::CCObject *pObject);
+ void setPlayerSkill(int dataId);
+
+ void onButton(CCObject* pSender, CCControlEvent event); //点击了items列表的其中一个后触发
+ void onChoicePlayer(CCObject* pObject); //在player选择框中,选中一个player后触发
+ void onDialog(cocos2d::CCObject *pObject);
+
public:
RPGMapSkillMenuLayer();
@@ -44,6 +62,19 @@ public:
bool init(CCDictionary* stringList, CppSQLite3DB* db, float width, float height);
static RPGMapSkillMenuLayer* 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__RPGMapSkillMenuLayer__) */
diff --git a/Classes/RPGMapStatusMenuLayer.cpp b/Classes/RPGMapStatusMenuLayer.cpp
index 6a6134a..7367b37 100644
--- a/Classes/RPGMapStatusMenuLayer.cpp
+++ b/Classes/RPGMapStatusMenuLayer.cpp
@@ -11,12 +11,6 @@
#include "RPGMapSceneLayer.h"
#include "OzgCCUtility.h"
-//获取一个player的详细数据
-#define PLAYER_DETAIL_QUERY "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()
{
@@ -27,7 +21,7 @@ RPGMapStatusMenuLayer::~RPGMapStatusMenuLayer()
this->m_stringList->release();
this->m_skillList->release();
-// CCLog("RPGMapStatusMenuLayer 释放");
+ CCLog("RPGMapStatusMenuLayer 释放");
}
bool RPGMapStatusMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB *db, float width, float height)
@@ -70,14 +64,25 @@ bool RPGMapStatusMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB
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 = NULL;
+ if(query.getIntField("hp") <= 0)
+ {
+ //死亡
+ CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_2.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
+ playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(10));
+ }
+ else
+ {
+ //正常
+ CCArray *frames = OzgCCUtility::createSpriteFrames(CCString::createWithFormat("%s_0.png", query.getStringField("tex_prefix"))->getCString(), 3, 4);
+ playerSprite = CCSprite::createWithSpriteFrame((CCSpriteFrame*)frames->objectAtIndex(1));
+ }
- 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->setPosition(ccp(playerX, 560));
player->setScale(2);
player->setTag(kRPGMapStatusMenuLayerTagMainMenuPlayer + query.getIntField("id"));
mainMenu->addChild(player);
@@ -141,9 +146,9 @@ void RPGMapStatusMenuLayer::onMenu(cocos2d::CCObject *pObject)
break;
}
- //player status
if(menuItem->getTag() >= kRPGMapStatusMenuLayerTagMainMenuPlayer && menuItem->getTag() <= kRPGMapStatusMenuLayerTagMainMenuPlayer + 99)
{
+// CCLog("点击了上面4个player的其中一个");
CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu);
CppSQLite3Query query = this->m_db->execQuery(PLAYER_QUERY);
@@ -230,8 +235,9 @@ void RPGMapStatusMenuLayer::setStatusPlayer(int dataId)
RPGSkill *skill = RPGSkill::create();
skill->m_dataId = skillQuery.getIntField("id");
skill->m_name = skillQuery.getStringField("name_cns");
- skill->m_mp = skillQuery.getIntField("mp");
+ skill->m_MP = skillQuery.getIntField("mp");
skill->m_skillAttack = skillQuery.getIntField("skill_attack");
+ skill->m_type = skillQuery.getIntField("type");
this->m_skillList->addObject(skill);
@@ -338,7 +344,7 @@ CCTableViewCell* RPGMapStatusMenuLayer::tableCellAtIndex(CCTableView *tableView,
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);
+ 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);
diff --git a/Classes/RPGResultsLogic.cpp b/Classes/RPGResultsLogic.cpp
index 2bf1288..19012c5 100644
--- a/Classes/RPGResultsLogic.cpp
+++ b/Classes/RPGResultsLogic.cpp
@@ -8,15 +8,15 @@
#include "RPGResultsLogic.h"
-//获取一个player的数据
-#define PLAYER_DETAIL_QUERY "select * from player where id = %i"
-
-//使用道具后player的数据更新
-#define ITEMS_USE_UPDATE "update player set %s = %i where id = %i"
+//执行操作后player的数据更新
+#define PLAYER_UPDATE "update player set %s = %i where id = %i"
//使用道具后现有道具的变化
#define SAVEDATA_ITEMS_UPDATE "update save_data set items = '%s' where id = 1"
+//查询一个技能的明细
+#define SKILL_DETAIL_QUERY "select * from skill where id = %i"
+
void RPGResultsLogic::deductionsItems(CppSQLite3DB *db, int itemsId)
{
CppSQLite3Query query = db->execQuery(SAVEDATA_QUERY);
@@ -104,7 +104,7 @@ bool RPGResultsLogic::useItems(CppSQLite3DB* db, int playerId, int itemsId)
//使用道具
{
- CCString *sql = CCString::createWithFormat(ITEMS_USE_UPDATE, field.c_str(), results, playerId);
+ CCString *sql = CCString::createWithFormat(PLAYER_UPDATE, field.c_str(), results, playerId);
db->execDML(sql->getCString());
CCLog("%s", sql->getCString());
@@ -116,3 +116,79 @@ bool RPGResultsLogic::useItems(CppSQLite3DB* db, int playerId, int itemsId)
CCLog("对player%d 使用了一个道具%d", playerId, itemsId);
return true;
}
+
+bool RPGResultsLogic::useSkillCure(CppSQLite3DB *db, int srcPlayerId, int targetPlayerId, int srcSkillId)
+{
+ RPGPlayer *srcPlayerData;
+ RPGSkill *srcSkillData;
+
+ RPGPlayer *targetPlayerData;
+
+ //查询使用技能的player
+ CppSQLite3Query srcPlayerQuery = db->execQuery(CCString::createWithFormat(PLAYER_DETAIL_QUERY, srcPlayerId)->getCString());
+ while(!srcPlayerQuery.eof())
+ {
+ srcPlayerData = RPGPlayer::create();
+ srcPlayerData->m_dataId = srcPlayerQuery.getIntField("id");
+ srcPlayerData->m_maxMP = srcPlayerQuery.getIntField("max_mp");
+ srcPlayerData->m_MP = srcPlayerQuery.getIntField("mp");
+ srcPlayerData->m_skillAttack = srcPlayerQuery.getFloatField("skill_attack");
+
+ srcPlayerQuery.nextRow();
+ }
+ srcPlayerQuery.finalize();
+
+ //查询使用的技能
+ CppSQLite3Query srcSkillQuery = db->execQuery(CCString::createWithFormat(SKILL_DETAIL_QUERY, srcSkillId)->getCString());
+ while(!srcSkillQuery.eof())
+ {
+ srcSkillData = RPGSkill::create();
+ srcSkillData->m_dataId = srcSkillQuery.getIntField("id");
+ srcSkillData->m_MP = srcSkillQuery.getIntField("mp");
+ srcSkillData->m_name = srcSkillQuery.getStringField("name_cns");
+ srcSkillData->m_skillAttack = srcSkillQuery.getFloatField("skill_attack");
+
+ srcSkillQuery.nextRow();
+ }
+ srcSkillQuery.finalize();
+
+ //查询目标player
+ CppSQLite3Query targetPlayerQuery = db->execQuery(CCString::createWithFormat(PLAYER_DETAIL_QUERY, targetPlayerId)->getCString());
+ while(!targetPlayerQuery.eof())
+ {
+ targetPlayerData = RPGPlayer::create();
+ targetPlayerData->m_dataId = targetPlayerQuery.getIntField("id");
+ targetPlayerData->m_maxHP = targetPlayerQuery.getIntField("max_hp");
+ targetPlayerData->m_HP = targetPlayerQuery.getIntField("hp");
+
+ targetPlayerQuery.nextRow();
+ }
+ targetPlayerQuery.finalize();
+
+ //执行逻辑
+ if(srcPlayerData && srcSkillData && targetPlayerData)
+ {
+ //计算player时候技能后的效果值
+ int targetResults = RPGComputingResults::skillCureResults(srcPlayerData->m_skillAttack, srcSkillData->m_skillAttack);
+ targetPlayerData->m_HP += targetResults;
+
+ CCLog("player %i 回复了 %i HP", targetPlayerId, targetResults);
+
+ //超过HP最大值
+ if(targetPlayerData->m_HP > targetPlayerData->m_maxHP)
+ targetPlayerData->m_HP = targetPlayerData->m_maxHP;
+ db->execDML(CCString::createWithFormat(PLAYER_UPDATE, "hp", targetPlayerData->m_HP, targetPlayerData->m_dataId)->getCString());
+
+ //扣减使用者的MP
+ srcPlayerData->m_MP -= srcSkillData->m_MP;
+ if(srcPlayerData->m_MP < 0)
+ srcPlayerData->m_MP = 0;
+
+ CCLog("player %i 消耗了 %i MP", srcPlayerId, srcSkillData->m_MP);
+
+ db->execDML(CCString::createWithFormat(PLAYER_UPDATE, "mp", srcPlayerData->m_MP, srcPlayerData->m_dataId)->getCString());
+
+ }
+
+ return true;
+}
diff --git a/Classes/RPGResultsLogic.h b/Classes/RPGResultsLogic.h
index 861e555..e4d0eeb 100644
--- a/Classes/RPGResultsLogic.h
+++ b/Classes/RPGResultsLogic.h
@@ -25,6 +25,8 @@ public:
static void deductionsItems(CppSQLite3DB* db, int itemsId); //扣减道具数
static bool useItems(CppSQLite3DB* db, int playerId, int itemsId); //使用道具,返回成功或失败
+ static bool useSkillCure(CppSQLite3DB* db, int srcPlayerId, int targetPlayerId, int srcSkillId); //使用回复技能
+
};
#endif /* defined(__OzgGameRPG__RPGResultsLogic__) */
diff --git a/README.md b/README.md
index 4bc5bc4..4f5c61b 100644
--- a/README.md
+++ b/README.md
@@ -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 6c9cdce..69d9cb6 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 263410e..eefbb0d 100755
--- a/Resources/scene_map_cns.plist
+++ b/Resources/scene_map_cns.plist
@@ -38,12 +38,16 @@
退出
menu_skill
技能
+ menu_skill_choice
+ 对谁使用[%s]技能呢?
+ menu_skill_fail
+ 技能使用失败
menu_status
状态
menu_items
道具
menu_items_choice
- 对谁使用[%s]呢?
+ 对谁使用[%s]道具呢?
menu_items_fail
道具使用失败
menu_equip
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 adfd520..659d37e 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 a3245fd..b1b4649 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