mirror of
https://github.com/wu736139669/OzgGameRPG.git
synced 2026-08-05 06:24:38 +00:00
数据库调整,完善战斗系统
This commit is contained in:
@@ -26,10 +26,27 @@ void addLab(CCNode* parentNode, int tag, CCString* text, float fontSize, CCTextA
|
||||
parentNode->addChild(textLab);
|
||||
}
|
||||
|
||||
void saveData(CppSQLite3DB* db, int mapId, float toX, float toY, string playerDirection)
|
||||
void saveData(CppSQLite3DB* db, RPGSaveData *saveData)
|
||||
{
|
||||
|
||||
db->execDML(CCString::createWithFormat("update save_data set map_id = %i, player_to_x = %f, player_to_y = %f, player_direction = '%s' where id = 1", mapId, toX, toY, playerDirection.c_str())->getCString());
|
||||
db->execDML(CCString::createWithFormat("update save_data set map_id = %i, player_to_x = %f, player_to_y = %f, player_direction = '%s', gold = %i where id = 1", saveData->m_mapId, saveData->m_playerToX, saveData->m_playerToY, saveData->m_playerDirection.c_str(), saveData->m_gold)->getCString());
|
||||
}
|
||||
|
||||
RPGSaveData* loadSaveData(CppSQLite3DB* db)
|
||||
{
|
||||
RPGSaveData *saveDataObj = RPGSaveData::create();
|
||||
CppSQLite3Query query = db->execQuery(SAVEDATA_QUERY);
|
||||
|
||||
saveDataObj->m_dataId = query.getIntField("id");
|
||||
saveDataObj->m_mapId = query.getIntField("map_id");
|
||||
saveDataObj->m_playerToX = query.getFloatField("player_to_x");
|
||||
saveDataObj->m_playerToY = query.getFloatField("player_to_y");
|
||||
saveDataObj->m_playerDirection = query.getStringField("player_direction");
|
||||
saveDataObj->m_gold = query.getIntField("gold");
|
||||
|
||||
query.finalize();
|
||||
|
||||
return saveDataObj;
|
||||
}
|
||||
|
||||
void savePlayerData(CppSQLite3DB* db, CCArray* playerDataList)
|
||||
|
||||
@@ -56,7 +56,8 @@ void addLab(CCNode* parentNode, int tag, CCString* text, CCPoint point); //增
|
||||
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);
|
||||
|
||||
void saveData(CppSQLite3DB* db, int mapId, float toX, float toY, string playerDirection);
|
||||
void saveData(CppSQLite3DB* db, RPGSaveData *saveData);
|
||||
RPGSaveData* loadSaveData(CppSQLite3DB* db);
|
||||
void savePlayerData(CppSQLite3DB* db, CCArray* playerDataList);
|
||||
|
||||
class RPGBaseSceneLayer : public CCLayer
|
||||
|
||||
@@ -90,6 +90,19 @@ void RPGBattleMonsterSprite::showEffectResults(cocos2d::CCObject *target, int HP
|
||||
|
||||
}
|
||||
|
||||
void RPGBattleMonsterSprite::animAttack(CCObject* target, CCObject *targetObjData)
|
||||
{
|
||||
this->stopAllActions();
|
||||
|
||||
SimpleAudioEngine::sharedEngine()->playEffect("audio_battle_attack1.wav");
|
||||
|
||||
CCActionInterval *tint = CCTintBy::create(0.3, -255, -255, -255);
|
||||
CCActionInterval *tintBack = tint->reverse();
|
||||
|
||||
this->runAction(CCSequence::createWithTwoActions(CCSequence::createWithTwoActions(tint, tintBack), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::attackResults), (void*)targetObjData)));
|
||||
|
||||
}
|
||||
|
||||
//private
|
||||
void RPGBattleMonsterSprite::showEffectResultsEnd()
|
||||
{
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "cocos2d.h"
|
||||
#include "RPGData.h"
|
||||
#include "RPGBattlePlayerSprite.h"
|
||||
|
||||
USING_NS_CC;
|
||||
using namespace std;
|
||||
@@ -30,7 +31,7 @@ private:
|
||||
int m_HPResults; //临时保存HP效果值
|
||||
|
||||
void showEffectResultsEnd(); //showEffectResults执行完毕后执行,然后再执行showEffectResults参数中的回调
|
||||
|
||||
|
||||
public:
|
||||
bool m_isSelected;
|
||||
|
||||
@@ -46,6 +47,8 @@ public:
|
||||
|
||||
void showEffectResults(CCObject* target, int HPResults, CCNode* player); //显示效果值,target为回调对象,攻击的话HPResults传入的是负值,回复的话为正值
|
||||
|
||||
void animAttack(CCObject* target, CCObject *targetObjData); //执行一般攻击或技能攻击的动作,target为回调对象,targetObjData为攻击的对象
|
||||
|
||||
};
|
||||
|
||||
#endif /* defined(__OzgGameRPG__RPGBattleMonsterSprite__) */
|
||||
|
||||
@@ -230,6 +230,18 @@ void RPGBattlePlayerSprite::animWin()
|
||||
this->runAction(animate);
|
||||
}
|
||||
|
||||
void RPGBattlePlayerSprite::animHurt()
|
||||
{
|
||||
this->stopAllActions();
|
||||
|
||||
if(this->getChildByTag(kRPGBattlePlayerSpriteTagArm))
|
||||
this->removeChildByTag(kRPGBattlePlayerSpriteTagArm, true);
|
||||
|
||||
CCAnimation *animation = CCAnimation::createWithSpriteFrames(this->m_spriteFramesHurt, 0.2);
|
||||
CCSequence *animate = CCSequence::create(CCAnimate::create(animation), CCDelayTime::create(1.0), CCCallFunc::create(this, callfunc_selector(RPGBattlePlayerSprite::animNormal)), NULL);
|
||||
this->runAction(animate);
|
||||
}
|
||||
|
||||
void RPGBattlePlayerSprite::animAttack(CCObject* target, cocos2d::CCObject *targetObjData)
|
||||
{
|
||||
this->stopAllActions();
|
||||
@@ -267,8 +279,10 @@ void RPGBattlePlayerSprite::animAttack(CCObject* target, cocos2d::CCObject *targ
|
||||
this->runAction(CCSequence::createWithTwoActions(CCAnimate::create(animation), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::attackResults), (void*)targetObjData)));
|
||||
}
|
||||
|
||||
void RPGBattlePlayerSprite::showEffectResults(cocos2d::CCObject *target, int HPResults, CCNode* player)
|
||||
void RPGBattlePlayerSprite::showEffectResults(cocos2d::CCObject *target, int HPResults, CCNode* srcAttackObj)
|
||||
{
|
||||
//srcAttackObj为发起攻击的Sprite对象
|
||||
|
||||
addLab(this, kRPGBattlePlayerSpriteTagEffectResults, CCString::createWithFormat("%i", HPResults), 24, kCCTextAlignmentCenter, ccp(this->getContentSize().width / 2, this->getContentSize().height / 2));
|
||||
|
||||
CCLabelTTF *effectResults = (CCLabelTTF*)this->getChildByTag(kRPGBattlePlayerSpriteTagEffectResults);
|
||||
@@ -282,7 +296,7 @@ void RPGBattlePlayerSprite::showEffectResults(cocos2d::CCObject *target, int HPR
|
||||
|
||||
this->m_HPResults = HPResults;
|
||||
|
||||
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), player), 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::attackWithTargetEffectLabEnd), srcAttackObj), NULL));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -60,10 +60,11 @@ public:
|
||||
void animDying(); //执行临死的状态
|
||||
void animDeath(); //执行战斗不能的状态
|
||||
void animWin(); //执行胜利的状态
|
||||
void animHurt(); //执行受到攻击的状态,执行一次完毕后回到通常时状态,执行animNormal()
|
||||
|
||||
void animAttack(CCObject* target, CCObject *targetObjData); //执行一般攻击的动作,target为回调对象
|
||||
void animAttack(CCObject* target, CCObject *targetObjData); //执行一般攻击的动作,target为回调对象,targetObjData为攻击的对象
|
||||
|
||||
void showEffectResults(CCObject* target, int HPResults, CCNode* player); //显示效果值,target为回调对象,攻击的话HPResults传入的是负值,回复的话为正值
|
||||
void showEffectResults(CCObject* target, int HPResults, CCNode* srcAttackObj); //显示效果值,target为回调对象,攻击的话HPResults传入的是负值,回复的话为正值
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -359,7 +359,12 @@ void RPGBattleSceneLayer::update(float delta)
|
||||
for (int j = 0; j < monsters->count(); j++)
|
||||
{
|
||||
RPGMonster *monsterData = (RPGMonster*)monsters->objectAtIndex(j);
|
||||
// RPGBattleMonsterSprite *monster = (RPGBattleMonsterSprite*)this->getChildByTag(monsterData->m_tag);
|
||||
|
||||
//对于已被打倒的怪物,则跳过进度条的处理
|
||||
if(monsterData->m_status == kRPGDataStatusDeath)
|
||||
continue;
|
||||
|
||||
RPGBattleMonsterSprite *monster = (RPGBattleMonsterSprite*)this->getChildByTag(monsterData->m_tag);
|
||||
|
||||
monsterData->m_progress += progressSpeed;
|
||||
|
||||
@@ -370,6 +375,29 @@ void RPGBattleSceneLayer::update(float delta)
|
||||
{
|
||||
CCLog("怪物攻击");
|
||||
|
||||
//计算攻击哪个player
|
||||
|
||||
//先确定哪个player不在战斗不能状态
|
||||
vector<int> playerIdList;
|
||||
for (int i = 0; i < this->m_playerList->count(); i++)
|
||||
{
|
||||
RPGBattlePlayerSprite *player = (RPGBattlePlayerSprite*)this->m_playerList->objectAtIndex(i);
|
||||
|
||||
if(player->m_data->m_status != kRPGDataStatusDeath)
|
||||
playerIdList.push_back(player->m_data->m_dataId);
|
||||
}
|
||||
|
||||
int randIndex = 0;
|
||||
if(playerIdList.size() > 1)
|
||||
randIndex = OzgCCUtility::rangeRand(0, (int)playerIdList.size() - 1);
|
||||
|
||||
int tagetPlayerId = playerIdList[randIndex];
|
||||
|
||||
//计算攻击哪个player 完毕
|
||||
|
||||
RPGBattlePlayerSprite *targetPlayer = (RPGBattlePlayerSprite*)this->getChildByTag(kRPGBattleSceneLayerTagPlayer + tagetPlayerId);
|
||||
monster->animAttack(this, targetPlayer->m_data);
|
||||
|
||||
this->unscheduleUpdate();
|
||||
return;
|
||||
}
|
||||
@@ -474,24 +502,20 @@ void RPGBattleSceneLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
|
||||
|
||||
//保存获得的金钱到数据库
|
||||
{
|
||||
CCString *sql = NULL;
|
||||
this->m_totalGold = CCUserDefault::sharedUserDefault()->getIntegerForKey("gold") + this->m_totalGold;
|
||||
|
||||
CppSQLite3Query query = this->m_db.execQuery(CCString::create(SAVEDATA_QUERY)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
this->m_totalGold = query.getIntField("gold") + this->m_totalGold;
|
||||
|
||||
//最大值的处理
|
||||
if(this->m_totalGold > MAX_GOLD)
|
||||
this->m_totalGold = MAX_GOLD;
|
||||
|
||||
sql = CCString::createWithFormat(SAVE_GOLD, this->m_totalGold);
|
||||
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
//最大值的处理
|
||||
if(this->m_totalGold > MAX_GOLD)
|
||||
this->m_totalGold = MAX_GOLD;
|
||||
|
||||
if(sql) this->m_db.execDML(sql->getCString());
|
||||
RPGSaveData *saveDataObj = RPGSaveData::create();
|
||||
saveDataObj->m_mapId = CCUserDefault::sharedUserDefault()->getIntegerForKey("map_id");
|
||||
saveDataObj->m_playerToX = CCUserDefault::sharedUserDefault()->getFloatForKey("player_to_x");
|
||||
saveDataObj->m_playerToY = CCUserDefault::sharedUserDefault()->getFloatForKey("player_to_y");
|
||||
saveDataObj->m_playerDirection = CCUserDefault::sharedUserDefault()->getStringForKey("player_direction");
|
||||
saveDataObj->m_gold = this->m_totalGold;
|
||||
|
||||
saveData(&this->m_db, saveDataObj);
|
||||
}
|
||||
|
||||
//保存player的状态到数据库
|
||||
@@ -532,9 +556,10 @@ void RPGBattleSceneLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
|
||||
CCTextureCache::sharedTextureCache()->removeTextureForKey(CCString::createWithFormat("%s_3.png", playerData->m_texPrefix.c_str())->getCString());
|
||||
}
|
||||
|
||||
CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
|
||||
// CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
|
||||
|
||||
SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true);
|
||||
if(SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying())
|
||||
SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true);
|
||||
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio_start.mp3", true);
|
||||
CCScene *s = RPGStartSceneLayer::scene();
|
||||
CCTransitionFade *t = CCTransitionFade::create(GAME_SCENE, s);
|
||||
@@ -683,6 +708,8 @@ void RPGBattleSceneLayer::attack(cocos2d::CCObject *attackObjData, cocos2d::CCOb
|
||||
|
||||
void RPGBattleSceneLayer::attackResults(cocos2d::CCNode *sender, void *data)
|
||||
{
|
||||
//sender为发起攻击的Sprite对象,data为被攻击的对象
|
||||
|
||||
SimpleAudioEngine::sharedEngine()->playEffect("audio_battle_attack2.wav");
|
||||
|
||||
// CCLog("计算伤害值");
|
||||
@@ -706,18 +733,27 @@ void RPGBattleSceneLayer::attackResults(cocos2d::CCNode *sender, void *data)
|
||||
{
|
||||
//player攻击player
|
||||
RPGBattlePlayerSprite *targetPlayer = (RPGBattlePlayerSprite*)this->getChildByTag(kRPGBattleSceneLayerTagPlayer + ((RPGPlayer*)data)->m_dataId);
|
||||
targetPlayer->animHurt();
|
||||
|
||||
particleSysPoint = targetPlayer->getPosition();
|
||||
|
||||
int HPResults = RPGComputingResults::attackResults(((RPGBattlePlayerSprite*)sender)->m_data->m_attack, ((RPGPlayer*)data)->m_defense);
|
||||
targetPlayer->showEffectResults(this, -HPResults, sender);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else if(dynamic_cast<RPGBattleMonsterSprite*>(sender) != NULL)
|
||||
{
|
||||
//怪物攻击player
|
||||
// int hurtHP = RPGComputingResults::attackResults(((RPGBattleMonsterSprite*)data)->m_attack, ((RPGPlayer*)sender)->m_defense);
|
||||
|
||||
RPGBattlePlayerSprite *targetPlayer = (RPGBattlePlayerSprite*)this->getChildByTag(kRPGBattleSceneLayerTagPlayer + ((RPGPlayer*)data)->m_dataId);
|
||||
targetPlayer->animHurt();
|
||||
|
||||
particleSysPoint = targetPlayer->getPosition();
|
||||
|
||||
int HPResults = RPGComputingResults::attackResults(((RPGBattleMonsterSprite*)sender)->m_data->m_attack, ((RPGPlayer*)data)->m_defense);
|
||||
targetPlayer->showEffectResults(this, -HPResults, sender);
|
||||
|
||||
}
|
||||
|
||||
@@ -731,6 +767,8 @@ void RPGBattleSceneLayer::attackResults(cocos2d::CCNode *sender, void *data)
|
||||
|
||||
void RPGBattleSceneLayer::attackWithTargetEffectLabEnd(cocos2d::CCNode *sender, void* data)
|
||||
{
|
||||
//data为发起攻击的Sprite对象
|
||||
|
||||
CCLog("攻击流程完毕");
|
||||
|
||||
if(dynamic_cast<RPGBattlePlayerSprite*>(sender->getParent()) != NULL)
|
||||
@@ -750,15 +788,24 @@ void RPGBattleSceneLayer::attackWithTargetEffectLabEnd(cocos2d::CCNode *sender,
|
||||
CCLabelTTF *targetPlayerHP = (CCLabelTTF*)this->getChildByTag(kRPGBattleSceneLayerTagPlayerHP + targetPlayer->m_data->m_dataId);
|
||||
targetPlayerHP->setString(CCString::createWithFormat("%i", targetPlayer->m_data->m_HP)->getCString());
|
||||
|
||||
//发起攻击的player还原通常时状态,并重新计算进度条
|
||||
RPGBattlePlayerSprite *srcPlayer = (RPGBattlePlayerSprite*)data;
|
||||
|
||||
if(srcPlayer->m_data->m_status != kRPGDataStatusDeath)
|
||||
srcPlayer->animNormal();
|
||||
|
||||
srcPlayer->m_data->m_progress = 0;
|
||||
CCProgressTimer *battleProgress = (CCProgressTimer*)this->getChildByTag(kRPGBattleSceneLayerTagPlayerProgress + srcPlayer->m_data->m_dataId);
|
||||
battleProgress->setPercentage(srcPlayer->m_data->m_progress);
|
||||
if(dynamic_cast<RPGBattlePlayerSprite*>((CCObject*)data) != NULL)
|
||||
{
|
||||
//发起攻击的player还原通常时状态,并重新计算进度条
|
||||
RPGBattlePlayerSprite *srcPlayer = (RPGBattlePlayerSprite*)data;
|
||||
|
||||
if(srcPlayer->m_data->m_status != kRPGDataStatusDeath)
|
||||
srcPlayer->animNormal();
|
||||
|
||||
srcPlayer->m_data->m_progress = 0;
|
||||
CCProgressTimer *battleProgress = (CCProgressTimer*)this->getChildByTag(kRPGBattleSceneLayerTagPlayerProgress + srcPlayer->m_data->m_dataId);
|
||||
battleProgress->setPercentage(srcPlayer->m_data->m_progress);
|
||||
}
|
||||
else if(dynamic_cast<RPGBattleMonsterSprite*>((CCObject*)data) != NULL)
|
||||
{
|
||||
//发起攻击的怪物重新计算进度条
|
||||
RPGBattleMonsterSprite *srcMonster = (RPGBattleMonsterSprite*)data;
|
||||
srcMonster->m_data->m_progress = 0;
|
||||
}
|
||||
|
||||
//判断是否胜利了
|
||||
if(!this->judgeLose())
|
||||
@@ -767,7 +814,7 @@ void RPGBattleSceneLayer::attackWithTargetEffectLabEnd(cocos2d::CCNode *sender,
|
||||
{
|
||||
// CCLog("输了");
|
||||
SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true);
|
||||
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio_battle_lose.mp3", true);
|
||||
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio_battle_lose.mp3", false);
|
||||
|
||||
this->showLoseResults();
|
||||
}
|
||||
@@ -936,17 +983,17 @@ void RPGBattleSceneLayer::computingProgress()
|
||||
}
|
||||
|
||||
//monster
|
||||
// for (int i = 0; i < this->m_monsterDataList->count(); i++)
|
||||
// {
|
||||
// CCArray *monsters = (CCArray*)this->m_monsterDataList->objectAtIndex(i);
|
||||
// for (int j = 0; j < monsters->count(); j++)
|
||||
// {
|
||||
// RPGMonster *monsterData = (RPGMonster*)monsters->objectAtIndex(j);
|
||||
//
|
||||
// float val = monsterData->m_speed / this->m_speedTotal * 100.0;
|
||||
// monsterData->m_progress = val;
|
||||
// }
|
||||
// }
|
||||
for (int i = 0; i < this->m_monsterDataList->count(); i++)
|
||||
{
|
||||
CCArray *monsters = (CCArray*)this->m_monsterDataList->objectAtIndex(i);
|
||||
for (int j = 0; j < monsters->count(); j++)
|
||||
{
|
||||
RPGMonster *monsterData = (RPGMonster*)monsters->objectAtIndex(j);
|
||||
|
||||
float val = monsterData->m_speed / this->m_speedTotal * 100.0;
|
||||
monsterData->m_progress = val;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1123,6 +1170,8 @@ void RPGBattleSceneLayer::showLoseResults()
|
||||
loseResults->setTag(kRPGBattleSceneLayerTagLoseResultsDialog);
|
||||
this->addChild(loseResults);
|
||||
|
||||
this->enabledTouched(true);
|
||||
|
||||
//显示title
|
||||
addLab(loseResults, 5, CCString::create(((CCString*)this->m_stringList->objectForKey("lose_title"))->getCString()), 28, kCCTextAlignmentCenter, ccp(loseResults->getContentSize().width / 2, loseResults->getContentSize().height / 2));
|
||||
|
||||
|
||||
@@ -130,3 +130,27 @@ RPGExistingItems* RPGExistingItems::create()
|
||||
}
|
||||
|
||||
//RPGExistingItems end
|
||||
|
||||
RPGSaveData::RPGSaveData()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
RPGSaveData::~RPGSaveData()
|
||||
{
|
||||
CCLog("RPGSaveData 释放");
|
||||
}
|
||||
|
||||
RPGSaveData* RPGSaveData::create()
|
||||
{
|
||||
RPGSaveData *obj = new RPGSaveData();
|
||||
if(obj)
|
||||
{
|
||||
obj->autorelease();
|
||||
return obj;
|
||||
}
|
||||
CC_SAFE_DELETE(obj);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//RPGSaveData
|
||||
|
||||
@@ -140,4 +140,23 @@ public:
|
||||
static RPGExistingItems* create();
|
||||
};
|
||||
|
||||
//存档
|
||||
class RPGSaveData : public CCObject
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
int m_dataId;
|
||||
int m_mapId;
|
||||
float m_playerToX;
|
||||
float m_playerToY;
|
||||
string m_playerDirection;
|
||||
int m_gold;
|
||||
|
||||
RPGSaveData();
|
||||
virtual ~RPGSaveData();
|
||||
|
||||
static RPGSaveData* create();
|
||||
};
|
||||
|
||||
#endif /* defined(__OzgGameRPG__RPGData__) */
|
||||
|
||||
@@ -590,7 +590,15 @@ void RPGMapSceneLayer::playerMoveEnd()
|
||||
float toY = stringToNumber<float>(playerToY->getCString()) + 0.5;
|
||||
|
||||
//保存数据
|
||||
saveData(&this->m_db, stringToNumber<int>(mapId->getCString()), toX, toY, playerDirection->getCString());
|
||||
|
||||
RPGSaveData *saveDataObj = RPGSaveData::create();
|
||||
saveDataObj->m_mapId = stringToNumber<int>(mapId->getCString());
|
||||
saveDataObj->m_playerToX = toX;
|
||||
saveDataObj->m_playerToY = toY;
|
||||
saveDataObj->m_playerDirection = playerDirection->getCString();
|
||||
saveDataObj->m_gold = this->m_mapData.gold;
|
||||
|
||||
saveData(&this->m_db, saveDataObj);
|
||||
|
||||
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
|
||||
this->unscheduleUpdate();
|
||||
@@ -638,7 +646,30 @@ void RPGMapSceneLayer::playerMoveEnd()
|
||||
SimpleAudioEngine::sharedEngine()->playEffect("audio_battle_start.wav");
|
||||
|
||||
// CCLog("%i", this->m_saveData.mapId);
|
||||
|
||||
RPGMapRoleSprite *player = (RPGMapRoleSprite*)bgMap->getChildByTag(kRPGMapSceneLayerTagPlayer);
|
||||
|
||||
CCUserDefault::sharedUserDefault()->setIntegerForKey("map_id", this->m_mapData.mapId);
|
||||
CCUserDefault::sharedUserDefault()->setFloatForKey("player_to_x", player->getPosition().x / GAME_TMX_ROLE_WIDTH);
|
||||
CCUserDefault::sharedUserDefault()->setFloatForKey("player_to_y", player->getPosition().y / GAME_TMX_ROLE_HEIGHT);
|
||||
CCUserDefault::sharedUserDefault()->setIntegerForKey("gold", this->m_mapData.gold);
|
||||
switch (player->m_direction)
|
||||
{
|
||||
case kRPGMapRoleSpriteDirectionUp:
|
||||
CCUserDefault::sharedUserDefault()->setStringForKey("player_direction", "up");
|
||||
break;
|
||||
case kRPGMapRoleSpriteDirectionDown:
|
||||
CCUserDefault::sharedUserDefault()->setStringForKey("player_direction", "down");
|
||||
break;
|
||||
case kRPGMapRoleSpriteDirectionLeft:
|
||||
CCUserDefault::sharedUserDefault()->setStringForKey("player_direction", "left");
|
||||
break;
|
||||
case kRPGMapRoleSpriteDirectionRight:
|
||||
CCUserDefault::sharedUserDefault()->setStringForKey("player_direction", "right");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
CCScene *s = RPGLoadingSceneLayer::scene(loadTextures, releaseTextures, "single_battle");
|
||||
CCTransitionFade *t = CCTransitionFade::create(GAME_SCENE, s);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+1
-1
@@ -5,7 +5,7 @@
|
||||
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
|
||||
<false/>
|
||||
<key>IDESourceControlProjectIdentifier</key>
|
||||
<string>F2C82415-EB94-4FC6-83CD-0738BAC2C127</string>
|
||||
<string>DBF2011C-83EC-4385-93A5-BD4FBD25642A</string>
|
||||
<key>IDESourceControlProjectName</key>
|
||||
<string>OzgGameRPG</string>
|
||||
<key>IDESourceControlProjectOriginsDictionary</key>
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user