mirror of
https://github.com/wu736139669/OzgGameRPG.git
synced 2026-08-05 06:24:38 +00:00
修正技能部分存在的bug
This commit is contained in:
@@ -96,6 +96,7 @@ public:
|
||||
float m_skillAttack;
|
||||
int m_MP;
|
||||
int m_type;
|
||||
int m_attr;
|
||||
|
||||
RPGSkill();
|
||||
virtual ~RPGSkill();
|
||||
|
||||
@@ -12,6 +12,31 @@
|
||||
#include "RPGMapChoicePlayerMenuLayer.h"
|
||||
#include "OzgCCUtility.h"
|
||||
|
||||
//RPGSkillBtnData
|
||||
class RPGSkillBtnData : public RPGSkill
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
bool m_enabled; //是否可点击
|
||||
|
||||
static RPGSkillBtnData* create();
|
||||
|
||||
};
|
||||
|
||||
RPGSkillBtnData* RPGSkillBtnData::create()
|
||||
{
|
||||
RPGSkillBtnData *obj = new RPGSkillBtnData();
|
||||
if(obj)
|
||||
{
|
||||
obj->autorelease();
|
||||
return obj;
|
||||
}
|
||||
CC_SAFE_DELETE(obj);
|
||||
return NULL;
|
||||
}
|
||||
//RPGSkillBtnData end
|
||||
|
||||
RPGMapSkillMenuLayer::RPGMapSkillMenuLayer()
|
||||
{
|
||||
|
||||
@@ -39,8 +64,6 @@ bool RPGMapSkillMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB
|
||||
|
||||
this->m_isDefault = true;
|
||||
|
||||
this->m_enabledPlayerSkill = true; //默认可以点击技能项
|
||||
|
||||
CCMenu *mainMenu = CCMenu::create();
|
||||
mainMenu->setTag(kRPGMapSkillMenuLayerTagMainMenu);
|
||||
mainMenu->setAnchorPoint(CCPointZero);
|
||||
@@ -156,7 +179,7 @@ CCTableViewCell* RPGMapSkillMenuLayer::tableCellAtIndex(CCTableView *tableView,
|
||||
if(index >= this->m_skillList->count())
|
||||
break;
|
||||
|
||||
RPGSkill *skillData = (RPGSkill*)this->m_skillList->objectAtIndex(index);
|
||||
RPGSkillBtnData *skillData = (RPGSkillBtnData*)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));
|
||||
@@ -165,13 +188,7 @@ CCTableViewCell* RPGMapSkillMenuLayer::tableCellAtIndex(CCTableView *tableView,
|
||||
cell->addChild(skillBtn);
|
||||
|
||||
//如果是非回复类技能的话,则禁用点击
|
||||
if(skillData->m_type != 2)
|
||||
{
|
||||
skillBtn->setTitleColorForState(ccc3(144, 144, 144), CCControlStateNormal);
|
||||
skillBtn->setEnabled(false);
|
||||
}
|
||||
//MP不够的话,禁用点击
|
||||
else if(!this->m_enabledPlayerSkill)
|
||||
if(!skillData->m_enabled)
|
||||
{
|
||||
skillBtn->setTitleColorForState(ccc3(144, 144, 144), CCControlStateNormal);
|
||||
skillBtn->setEnabled(false);
|
||||
@@ -285,9 +302,6 @@ void RPGMapSkillMenuLayer::setPlayerSkill(int dataId)
|
||||
{
|
||||
this->m_selectedPlayerId = query.getIntField("id");
|
||||
|
||||
if(query.getFloatField("mp") <= 0 || query.getFloatField("hp") <= 0)
|
||||
this->m_enabledPlayerSkill = false;
|
||||
|
||||
//数据处理部分
|
||||
this->m_skillList->removeAllObjects();
|
||||
|
||||
@@ -311,12 +325,22 @@ void RPGMapSkillMenuLayer::setPlayerSkill(int dataId)
|
||||
CppSQLite3Query skillQuery = this->m_db->execQuery(CCString::createWithFormat(SKILL_QUERY, wq.c_str())->getCString());
|
||||
while(!skillQuery.eof())
|
||||
{
|
||||
RPGSkill *skill = RPGSkill::create();
|
||||
RPGSkillBtnData *skill = RPGSkillBtnData::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");
|
||||
skill->m_attr = skillQuery.getIntField("attr");
|
||||
skill->m_enabled = true;
|
||||
|
||||
//不能使用技能的情况
|
||||
if(query.getFloatField("mp") <= 0 || query.getFloatField("hp") <= 0)
|
||||
skill->m_enabled = false;
|
||||
else if(query.getFloatField("mp") < skill->m_MP)
|
||||
skill->m_enabled = false;
|
||||
else if(skill->m_type != 2)
|
||||
skill->m_enabled = false;
|
||||
|
||||
this->m_skillList->addObject(skill);
|
||||
|
||||
@@ -341,7 +365,7 @@ void RPGMapSkillMenuLayer::onButton(cocos2d::CCObject *pSender, CCControlEvent e
|
||||
for (int i = 0; i < this->m_skillList->count(); i++)
|
||||
{
|
||||
//判断选中道具
|
||||
RPGSkill *skillData = (RPGSkill*)this->m_skillList->objectAtIndex(i);
|
||||
RPGSkillBtnData *skillData = (RPGSkillBtnData*)this->m_skillList->objectAtIndex(i);
|
||||
if(skillBtn->getTag() == skillData->m_dataId)
|
||||
{
|
||||
this->m_selectedSkill = skillData;
|
||||
|
||||
@@ -43,7 +43,6 @@ private:
|
||||
bool m_isDefault; //是否为第一次进入技能界面,如果是的话就不播放效果音了
|
||||
|
||||
int m_selectedPlayerId; //选中上面的player的id
|
||||
bool m_enabledPlayerSkill; //是否允许点击技能项,死亡状态、相关异常状态或MP为0时设置为false
|
||||
RPGSkill* m_selectedSkill; //选中的技能
|
||||
|
||||
void onMenu(cocos2d::CCObject *pObject);
|
||||
|
||||
@@ -245,6 +245,7 @@ void RPGMapStatusMenuLayer::setStatusPlayer(int dataId)
|
||||
skill->m_MP = skillQuery.getIntField("mp");
|
||||
skill->m_skillAttack = skillQuery.getIntField("skill_attack");
|
||||
skill->m_type = skillQuery.getIntField("type");
|
||||
skill->m_attr = skillQuery.getIntField("attr");
|
||||
|
||||
this->m_skillList->addObject(skill);
|
||||
|
||||
|
||||
@@ -164,6 +164,7 @@ bool RPGResultsLogic::useSkillCure(CppSQLite3DB *db, int srcPlayerId, int target
|
||||
srcSkillData->m_MP = srcSkillQuery.getIntField("mp");
|
||||
srcSkillData->m_name = srcSkillQuery.getStringField("name_cns");
|
||||
srcSkillData->m_skillAttack = srcSkillQuery.getFloatField("skill_attack");
|
||||
srcSkillData->m_attr = srcSkillQuery.getFloatField("attr");
|
||||
|
||||
srcSkillQuery.nextRow();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ ozg game — 单机版RPG(开发中…)
|
||||
声音文件来自 http://www.66rpg.com/type.php?t=17
|
||||
|
||||
|
||||
目前只在iOS平台下进行测试,战斗画面的技能、道具未完成。
|
||||
目前只在iOS平台下进行测试,战斗系统的技能、道具未完成。
|
||||
|
||||
每次的更新完毕之后,数据结构都可能发生了变化,所以要把旧的数据库删除。
|
||||
|
||||
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -251,6 +251,8 @@
|
||||
89CB7D8118E9A47800A5921B /* map_menu3_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 89CB7D7E18E9A47800A5921B /* map_menu3_style1.tmx */; };
|
||||
89CB7D8818E9A87700A5921B /* dialog_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 89CB7D8718E9A87700A5921B /* dialog_style1.tmx */; };
|
||||
89CB7D8B18E9A8BF00A5921B /* RPGMapDialogLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 89CB7D8918E9A8BF00A5921B /* RPGMapDialogLayer.cpp */; };
|
||||
89D2A12C190B431F00EDD50B /* skill_cure.plist in Resources */ = {isa = PBXBuildFile; fileRef = 89D2A12A190B431F00EDD50B /* skill_cure.plist */; };
|
||||
89D2A12D190B431F00EDD50B /* skill_fire.plist in Resources */ = {isa = PBXBuildFile; fileRef = 89D2A12B190B431F00EDD50B /* skill_fire.plist */; };
|
||||
89E63C7518ED83C900BDD04F /* actor5_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 89E63C6B18ED83C900BDD04F /* actor5_0.png */; };
|
||||
89E63C7618ED83C900BDD04F /* actor5_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 89E63C6C18ED83C900BDD04F /* actor5_1.png */; };
|
||||
89E63C7718ED83C900BDD04F /* actor5_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 89E63C6D18ED83C900BDD04F /* actor5_2.png */; };
|
||||
@@ -881,6 +883,8 @@
|
||||
89CB7D8718E9A87700A5921B /* dialog_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = dialog_style1.tmx; sourceTree = "<group>"; };
|
||||
89CB7D8918E9A8BF00A5921B /* RPGMapDialogLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGMapDialogLayer.cpp; path = ../Classes/RPGMapDialogLayer.cpp; sourceTree = "<group>"; };
|
||||
89CB7D8A18E9A8BF00A5921B /* RPGMapDialogLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGMapDialogLayer.h; path = ../Classes/RPGMapDialogLayer.h; sourceTree = "<group>"; };
|
||||
89D2A12A190B431F00EDD50B /* skill_cure.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = skill_cure.plist; sourceTree = "<group>"; };
|
||||
89D2A12B190B431F00EDD50B /* skill_fire.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = skill_fire.plist; sourceTree = "<group>"; };
|
||||
89E63C6B18ED83C900BDD04F /* actor5_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = actor5_0.png; sourceTree = "<group>"; };
|
||||
89E63C6C18ED83C900BDD04F /* actor5_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = actor5_1.png; sourceTree = "<group>"; };
|
||||
89E63C6D18ED83C900BDD04F /* actor5_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = actor5_2.png; sourceTree = "<group>"; };
|
||||
@@ -2422,6 +2426,8 @@
|
||||
F293BC4615EB859D00256477 /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
89D2A12A190B431F00EDD50B /* skill_cure.plist */,
|
||||
89D2A12B190B431F00EDD50B /* skill_fire.plist */,
|
||||
893D34D21906B01100BFE2C5 /* attack_damage.plist */,
|
||||
893D34D31906B01100BFE2C5 /* attack_damage.png */,
|
||||
890F1B501902E284002F2769 /* attack1.ExportJson */,
|
||||
@@ -2628,6 +2634,7 @@
|
||||
89E63C7E18ED83C900BDD04F /* actor8_4.png in Resources */,
|
||||
89E63C7C18ED83C900BDD04F /* actor8_2.png in Resources */,
|
||||
89F5D12B18E7C5CC009D703C /* audio_start.mp3 in Resources */,
|
||||
89D2A12C190B431F00EDD50B /* skill_cure.plist in Resources */,
|
||||
15C1569A1683138E00D239F2 /* Default@2x.png in Resources */,
|
||||
89E63C7718ED83C900BDD04F /* actor5_2.png in Resources */,
|
||||
89CB7D7F18E9A47800A5921B /* map_menu1_style1.tmx in Resources */,
|
||||
@@ -2670,6 +2677,7 @@
|
||||
890F1B601902E284002F2769 /* attack10.plist in Resources */,
|
||||
89E63C7618ED83C900BDD04F /* actor5_1.png in Resources */,
|
||||
89F5D14918E7C5DD009D703C /* scene_loading_cns.plist in Resources */,
|
||||
89D2A12D190B431F00EDD50B /* skill_fire.plist in Resources */,
|
||||
89F5D11E18E7C5C0009D703C /* actor117.png in Resources */,
|
||||
89F5D14A18E7C5DD009D703C /* scene_map_cns.plist in Resources */,
|
||||
8960C17F18E7D0BD0075EF99 /* alert_style1.tmx in Resources */,
|
||||
|
||||
BIN
Binary file not shown.
Reference in New Issue
Block a user