数据结构调整,战斗场景完成一部分功能
@@ -16,6 +16,10 @@
|
||||
#define GAME_TMX_ROLE_HEIGHT 32.0
|
||||
#define GAME_PLAYER_MOVESPEED 0.5
|
||||
|
||||
#define GAME_INIT_SQL "insert into save_data (map_id, player_to_x, player_to_y, player_direction) values(1, 14.5, 9.5, 'down');"
|
||||
#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 MAX_GOLD 999999 //金钱最大值
|
||||
#define MAX_STATUS1 9999 //HP最大值
|
||||
#define MAX_STATUS2 999 //MP、攻击力、防御力、速度、技能攻击、技能防御的最大值
|
||||
|
||||
#endif
|
||||
|
||||
@@ -41,6 +41,8 @@ using namespace CocosDenshion;
|
||||
//查询一个角色的技能
|
||||
#define SKILL_QUERY "select * from skill where id in(%s)"
|
||||
|
||||
#define SAVEDATA_MAP_QUERY "select m.name as map_name, m.location_cns, sd.map_id, m.has_enemy, m.bg_audio, sd.player_to_x, sd.player_to_y, sd.player_direction, sd.gold from save_data as sd inner join map as m on sd.map_id = m.id where sd.id = 1" //获取存档和地图数据
|
||||
|
||||
//技能的属性
|
||||
enum RPGSkillAttr
|
||||
{
|
||||
|
||||
@@ -86,7 +86,7 @@ void RPGBattleMonsterSprite::showHurtResults(cocos2d::CCObject *target, int HPRe
|
||||
|
||||
this->m_HPResults = HPResults;
|
||||
|
||||
hurtResults->runAction(CCSequence::create(CCEaseExponentialOut::create(up), CCEaseBounceOut::create(down), CCCallFunc::create(this, callfunc_selector(RPGBattleMonsterSprite::showHurtResultsEnd)), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::attackWithTargetHurtLabEnd), player), NULL));
|
||||
hurtResults->runAction(CCSequence::create(CCEaseExponentialOut::create(up), CCEaseBounceOut::create(down), CCDelayTime::create(0.5), CCCallFunc::create(this, callfunc_selector(RPGBattleMonsterSprite::showHurtResultsEnd)), CCCallFuncND::create(target, callfuncND_selector(RPGBattleSceneLayer::attackWithTargetHurtLabEnd), player), NULL));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,10 @@
|
||||
#include "RPGLoadingSceneLayer.h"
|
||||
#include "RPGComputingResults.h"
|
||||
|
||||
#define MONSTER_QUERY "select * from monster where map_id = %i order by random() limit 1"
|
||||
#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数据,升级时用到
|
||||
|
||||
RPGBattleSceneLayer::RPGBattleSceneLayer()
|
||||
{
|
||||
@@ -26,6 +29,7 @@ RPGBattleSceneLayer::~RPGBattleSceneLayer()
|
||||
|
||||
CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFramesFromFile("monsters.plist");
|
||||
|
||||
// CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
|
||||
CCLog("RPGBattleSceneLayer 释放");
|
||||
}
|
||||
|
||||
@@ -102,6 +106,7 @@ bool RPGBattleSceneLayer::init()
|
||||
playerData->m_itemsIdArms = query.getIntField("items_id_arms");
|
||||
playerData->m_skill = query.getStringField("skill");
|
||||
playerData->m_texPrefix = query.getStringField("tex_prefix");
|
||||
playerData->m_exp = query.getIntField("exp");
|
||||
playerData->m_progress = 0.0; //computingProgress方法会重新计算这个值
|
||||
|
||||
playerData->m_speed = this->computingFloat(playerData->m_speed);
|
||||
@@ -205,6 +210,7 @@ bool RPGBattleSceneLayer::init()
|
||||
monsterData->m_exp = query.getIntField("exp");
|
||||
monsterData->m_skill = query.getStringField("skill");
|
||||
monsterData->m_tex = query.getStringField("tex");
|
||||
monsterData->m_gold = query.getIntField("gold");
|
||||
monsterData->m_progress = 0.0; //computingProgress方法会重新计算这个值
|
||||
|
||||
monsterData->m_speed = this->computingFloat(monsterData->m_speed);
|
||||
@@ -280,6 +286,7 @@ bool RPGBattleSceneLayer::init()
|
||||
this->computingProgress();
|
||||
|
||||
this->scheduleUpdate();
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -383,68 +390,113 @@ void RPGBattleSceneLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
|
||||
CCPoint point = pTouch->getLocation();
|
||||
|
||||
RPGBattleMenu *battleMenu = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagBattleMenu);
|
||||
RPGBattleMenu *winResultsDialog = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagWinResultsDialog);
|
||||
|
||||
switch (battleMenu->m_selectedMenuTag)
|
||||
if(battleMenu)
|
||||
{
|
||||
case kRPGBattleMenuTagAttack:
|
||||
switch (battleMenu->m_selectedMenuTag)
|
||||
{
|
||||
// CCLog("攻击");
|
||||
|
||||
SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav");
|
||||
|
||||
//检测选中的player
|
||||
for (int i = 0; i < this->m_playerList->count(); i++)
|
||||
case kRPGBattleMenuTagAttack:
|
||||
{
|
||||
RPGBattlePlayerSprite *player = (RPGBattlePlayerSprite*)this->m_playerList->objectAtIndex(i);
|
||||
if(player->boundingBox().containsPoint(point))
|
||||
// CCLog("攻击");
|
||||
|
||||
SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav");
|
||||
|
||||
//检测选中的player
|
||||
for (int i = 0; i < this->m_playerList->count(); i++)
|
||||
{
|
||||
if(player->m_isSelected)
|
||||
RPGBattlePlayerSprite *player = (RPGBattlePlayerSprite*)this->m_playerList->objectAtIndex(i);
|
||||
if(player->boundingBox().containsPoint(point))
|
||||
{
|
||||
CCLog("攻击player");
|
||||
|
||||
if(player->m_isSelected)
|
||||
{
|
||||
CCLog("攻击player");
|
||||
|
||||
player->selected(false);
|
||||
this->removeChildByTag(kRPGBattleSceneLayerTagBattleMenu, true);
|
||||
|
||||
}
|
||||
else
|
||||
player->selected(true);
|
||||
}
|
||||
else
|
||||
player->selected(false);
|
||||
this->removeChildByTag(kRPGBattleSceneLayerTagBattleMenu, true);
|
||||
|
||||
}
|
||||
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))
|
||||
//检测选中的怪物
|
||||
for (int i = 0; i < this->m_monsterList->count(); i++)
|
||||
{
|
||||
if(monster->m_isSelected)
|
||||
RPGBattleMonsterSprite *monster = (RPGBattleMonsterSprite*)this->m_monsterList->objectAtIndex(i);
|
||||
if(monster->boundingBox().containsPoint(point))
|
||||
{
|
||||
CCLog("攻击怪物");
|
||||
|
||||
RPGBattleMenu *battleMenu = (RPGBattleMenu*)this->getChildByTag(kRPGBattleSceneLayerTagBattleMenu);
|
||||
RPGPlayer *playerData = battleMenu->m_playerData;
|
||||
|
||||
monster->selected(false);
|
||||
battleMenu->removeFromParentAndCleanup(true);
|
||||
|
||||
this->attack(playerData, monster->m_data);
|
||||
|
||||
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(true);
|
||||
monster->selected(false);
|
||||
|
||||
}
|
||||
else
|
||||
monster->selected(false);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
// default:
|
||||
// break;
|
||||
}
|
||||
break;
|
||||
// default:
|
||||
// break;
|
||||
}
|
||||
else if(winResultsDialog)
|
||||
{
|
||||
CCLog("战斗胜利后返回地图界面");
|
||||
|
||||
//保存获得的金钱到数据库
|
||||
{
|
||||
CCString *sql = NULL;
|
||||
|
||||
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(sql) this->m_db.execDML(sql->getCString());
|
||||
}
|
||||
|
||||
//保存player的状态到数据库
|
||||
for (int i = 0; i < this->m_playerDataList->count(); i++)
|
||||
{
|
||||
RPGPlayer *playerData = (RPGPlayer*)this->m_playerDataList->objectAtIndex(i);
|
||||
|
||||
CCString *sql = CCString::createWithFormat(UPDATE_PLAYER, playerData->m_HP, playerData->m_MP, playerData->m_attack, playerData->m_defense, playerData->m_speed, playerData->m_skillAttack, playerData->m_skillDefense, playerData->m_level, playerData->m_skill.c_str(), playerData->m_nextExp, playerData->m_exp, playerData->m_dataId);
|
||||
// CCLog("%s", sql->getCString());
|
||||
this->m_db.execDML(sql->getCString());
|
||||
}
|
||||
|
||||
//保存现有道具到数据库
|
||||
|
||||
this->goToMap();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -523,6 +575,18 @@ void RPGBattleSceneLayer::goToMap()
|
||||
CCArray *releaseTextures = CCArray::create();
|
||||
releaseTextures->addObject(CCString::create("monsters.png"));
|
||||
releaseTextures->addObject(CCString::create("battle_bg.png"));
|
||||
releaseTextures->addObject(CCString::create("attack10.png"));
|
||||
releaseTextures->addObject(CCString::create("attack20.png"));
|
||||
releaseTextures->addObject(CCString::create("attack30.png"));
|
||||
releaseTextures->addObject(CCString::create("attack40.png"));
|
||||
|
||||
for (int i = 0; i < this->m_playerDataList->count(); i++)
|
||||
{
|
||||
RPGPlayer *playerData = (RPGPlayer*)this->m_playerDataList->objectAtIndex(i);
|
||||
releaseTextures->addObject(CCString::createWithFormat("%s_1.png", playerData->m_texPrefix.c_str()));
|
||||
releaseTextures->addObject(CCString::createWithFormat("%s_2.png", playerData->m_texPrefix.c_str()));
|
||||
releaseTextures->addObject(CCString::createWithFormat("%s_3.png", playerData->m_texPrefix.c_str()));
|
||||
}
|
||||
|
||||
CCScene *s = RPGLoadingSceneLayer::scene(loadTextures, releaseTextures, "single_map");
|
||||
CCTransitionFade *t = CCTransitionFade::create(GAME_SCENE, s);
|
||||
@@ -681,8 +745,7 @@ void RPGBattleSceneLayer::attackWithTargetHurtLabEnd(cocos2d::CCNode *sender, vo
|
||||
player->animWin();
|
||||
}
|
||||
|
||||
//!!!计算获得的经验值和金钱后,显示
|
||||
|
||||
this->showWinResults();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -816,3 +879,125 @@ bool RPGBattleSceneLayer::judgeLose()
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void RPGBattleSceneLayer::showWinResults()
|
||||
{
|
||||
CCTMXTiledMap *winResults = CCTMXTiledMap::create("battle_battle_style1.tmx");
|
||||
winResults->setPosition(ccp((CCDirector::sharedDirector()->getWinSize().width - winResults->getContentSize().width) / 2, (CCDirector::sharedDirector()->getWinSize().height - winResults->getContentSize().height) / 2));
|
||||
winResults->setTag(kRPGBattleSceneLayerTagWinResultsDialog);
|
||||
this->addChild(winResults);
|
||||
|
||||
//显示title
|
||||
addLab(winResults, 5, CCString::create(((CCString*)this->m_stringList->objectForKey("win_title"))->getCString()), 26, kCCTextAlignmentCenter, ccp(winResults->getContentSize().width / 2, 270));
|
||||
|
||||
//统计经验值,怪物的总经验值 / 活着的player总数
|
||||
|
||||
//player
|
||||
int totalPlayer = 0;
|
||||
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)
|
||||
totalPlayer++;
|
||||
}
|
||||
|
||||
//经验值和金钱
|
||||
int totalExp = 0;
|
||||
int totalGold = 0;
|
||||
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);
|
||||
totalExp += monsterData->m_exp;
|
||||
|
||||
totalGold += monsterData->m_gold;
|
||||
}
|
||||
}
|
||||
this->m_totalGold = totalGold;
|
||||
|
||||
//显示获得的金钱
|
||||
addLab(winResults, 6, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("win_gold"))->getCString(), totalGold), 20, kCCTextAlignmentCenter, ccp(winResults->getContentSize().width / 2, 220));
|
||||
|
||||
//显示各个player获得的经验值
|
||||
float y = 170;
|
||||
int exp = totalExp / totalPlayer;
|
||||
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)
|
||||
{
|
||||
player->m_data->m_exp += exp; //累加总经验
|
||||
player->m_data->m_nextExp -= exp; //累减下一级经验值
|
||||
if(player->m_data->m_nextExp <= 0)
|
||||
{
|
||||
//升级了
|
||||
player->m_data->m_level++;
|
||||
|
||||
player->m_data->m_nextExp = player->m_data->m_level * player->m_data->m_exp; //计算下一级经验值
|
||||
|
||||
//提升能力值
|
||||
|
||||
switch (player->m_data->m_dataId)
|
||||
{
|
||||
case 2:
|
||||
player->m_data->m_maxHP += 12;
|
||||
player->m_data->m_maxMP += 43;
|
||||
player->m_data->m_attack += 1;
|
||||
player->m_data->m_defense += 2;
|
||||
player->m_data->m_speed += 2;
|
||||
player->m_data->m_skillAttack += 5;
|
||||
player->m_data->m_skillDefense += 4;
|
||||
break;
|
||||
case 3:
|
||||
player->m_data->m_maxHP += 8;
|
||||
player->m_data->m_maxMP += 48;
|
||||
player->m_data->m_attack += 1;
|
||||
player->m_data->m_defense += 3;
|
||||
player->m_data->m_speed += 2;
|
||||
player->m_data->m_skillAttack += 4;
|
||||
player->m_data->m_skillDefense += 5;
|
||||
break;
|
||||
case 4:
|
||||
player->m_data->m_maxHP += 23;
|
||||
player->m_data->m_maxMP += 21;
|
||||
player->m_data->m_attack += 3;
|
||||
player->m_data->m_defense += 3;
|
||||
player->m_data->m_speed += 6;
|
||||
player->m_data->m_skillAttack += 2;
|
||||
player->m_data->m_skillDefense += 2;
|
||||
break;
|
||||
default:
|
||||
player->m_data->m_maxHP += 49;
|
||||
player->m_data->m_maxMP += 8;
|
||||
player->m_data->m_attack += 6;
|
||||
player->m_data->m_defense += 4;
|
||||
player->m_data->m_speed += 3;
|
||||
player->m_data->m_skillAttack += 1;
|
||||
player->m_data->m_skillDefense += 1;
|
||||
break;
|
||||
}
|
||||
|
||||
//最大值的处理
|
||||
if(player->m_data->m_maxHP > MAX_STATUS1) player->m_data->m_maxHP = MAX_STATUS1;
|
||||
if(player->m_data->m_maxMP > MAX_STATUS2) player->m_data->m_maxMP = MAX_STATUS2;
|
||||
if(player->m_data->m_attack > MAX_STATUS2) player->m_data->m_attack = MAX_STATUS2;
|
||||
if(player->m_data->m_defense > MAX_STATUS2) player->m_data->m_defense = MAX_STATUS2;
|
||||
if(player->m_data->m_speed > MAX_STATUS2) player->m_data->m_speed = MAX_STATUS2;
|
||||
if(player->m_data->m_skillAttack > MAX_STATUS2) player->m_data->m_skillAttack = MAX_STATUS2;
|
||||
if(player->m_data->m_skillDefense > MAX_STATUS2) player->m_data->m_skillDefense = MAX_STATUS2;
|
||||
|
||||
addLab(winResults, player->m_data->m_dataId, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("win_level_up"))->getCString(), player->m_data->m_name.c_str()), 18, kCCTextAlignmentLeft, ccp(230, y));
|
||||
}
|
||||
else
|
||||
addLab(winResults, player->m_data->m_dataId, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("win_exp"))->getCString(), player->m_data->m_name.c_str(), exp), 18, kCCTextAlignmentLeft, ccp(230, y));
|
||||
}
|
||||
else
|
||||
addLab(winResults, player->m_data->m_dataId, CCString::createWithFormat(((CCString*)this->m_stringList->objectForKey("win_exp"))->getCString(), player->m_data->m_name.c_str(), 0), 18, kCCTextAlignmentLeft, ccp(230, y));
|
||||
|
||||
y -= 40;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ enum RPGBattleSceneLayerTag
|
||||
kRPGBattleSceneLayerTagBg = 1,
|
||||
kRPGBattleSceneLayerTagMenuBg = 2,
|
||||
kRPGBattleSceneLayerTagBattleMenu = 3,
|
||||
kRPGBattleSceneLayerTagWinResultsDialog = 70,
|
||||
kRPGBattleSceneLayerTagMsg = 98,
|
||||
kRPGBattleSceneLayerTagPlayer = 100,
|
||||
kRPGBattleSceneLayerTagPlayerNameLab = 200,
|
||||
@@ -55,6 +56,8 @@ private:
|
||||
|
||||
bool m_enabledTouched; //是否打开了可点击状态(主要可点击player或怪物)
|
||||
|
||||
int m_totalGold; //临时保存战斗胜利后所获得的金钱,用来在胜利后执行goToMap()之前使用的
|
||||
|
||||
//对应的怪物的tag是否存在m_monsterDataList
|
||||
bool monsterDataListExistWithTag(int tag);
|
||||
|
||||
@@ -69,6 +72,8 @@ private:
|
||||
bool judgeWin(); //判断是否胜利,true为胜利,false继续战斗
|
||||
bool judgeLose(); //判断是否输了,true为输了,false继续战斗
|
||||
|
||||
void showWinResults(); //显示胜利后获得的经验值和金钱,统计升级也在这里执行
|
||||
|
||||
public:
|
||||
|
||||
RPGBattleSceneLayer();
|
||||
|
||||
@@ -42,6 +42,7 @@ public:
|
||||
string m_skill;
|
||||
int m_nextExp;
|
||||
string m_texPrefix;
|
||||
int m_exp; //总经验值
|
||||
|
||||
float m_progress; //进度条,数据库没有这个字段
|
||||
|
||||
@@ -71,6 +72,7 @@ public:
|
||||
int m_exp;
|
||||
string m_skill;
|
||||
string m_tex;
|
||||
int m_gold;
|
||||
|
||||
int m_tag; //格式为 enum tag + 0到999的无重复数(就算同一个怪物也不能重复)
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ void RPGMapMenuLayer::createMenuItem(float x, float y, CCString *text, RPGMapMen
|
||||
{
|
||||
CCLabelTTF *menuItemsLabel = CCLabelTTF::create(OzgCCUtility::generalString(text->getCString()).c_str(), "FZCuYuan-M03S", 25, CCSizeMake(120, 40), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter);
|
||||
|
||||
CCMenuItemLabel *menuItems = CCMenuItemLabel::create(menuItemsLabel, this, menu_selector(RPGMapMenuLayer::onMenu));
|
||||
menuItems = CCMenuItemLabel::create(menuItemsLabel, this, menu_selector(RPGMapMenuLayer::onMenu));
|
||||
menuItems->setPosition(ccp(x, y));
|
||||
menuItems->setTag(tag);
|
||||
mainMenu->addChild(menuItems);
|
||||
@@ -229,7 +229,7 @@ void RPGMapMenuLayer::createMenuItem(float x, float y, CCString *text, RPGMapMen
|
||||
|
||||
void RPGMapMenuLayer::setMainMenuDefault()
|
||||
{
|
||||
CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu);
|
||||
//显示右边的菜单项
|
||||
|
||||
CCString *menuItemsStr = (CCString*)this->m_stringList->objectForKey("menu_items");
|
||||
this->createMenuItem(835, 570, menuItemsStr, kRPGMapMenuLayerTagMainMenuItems);
|
||||
@@ -249,22 +249,27 @@ void RPGMapMenuLayer::setMainMenuDefault()
|
||||
CCString *menuExitStr = (CCString*)this->m_stringList->objectForKey("menu_exit");
|
||||
this->createMenuItem(835, 220, menuExitStr, kRPGMapMenuLayerTagMainMenuExit);
|
||||
|
||||
CCObject *item = NULL;
|
||||
CCARRAY_FOREACH(mainMenu->getChildren(), item)
|
||||
//分割线
|
||||
CCSprite *separate = CCSprite::createWithSpriteFrameName("separate.png");
|
||||
separate->setTag(kRPGMapMenuLayerTagSeparate);
|
||||
separate->setPosition(ccp(840, 170));
|
||||
separate->setScaleX(0.52);
|
||||
this->addChild(separate);
|
||||
|
||||
//显示右下角的部分
|
||||
addLab(this, kRPGMapMenuLayerTagGoldLab, CCString::createWithFormat("%s", ((CCString*)this->m_stringList->objectForKey("menu_gold"))->getCString()), 18, kCCTextAlignmentRight, ccp(630, 130));
|
||||
addLab(this, kRPGMapMenuLayerTagMapLab, CCString::createWithFormat("%s", ((CCString*)this->m_stringList->objectForKey("menu_map"))->getCString()), 18, kCCTextAlignmentRight, ccp(630, 90));
|
||||
|
||||
CppSQLite3Query query = this->m_db->execQuery(CCString::create(SAVEDATA_MAP_QUERY)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
CCMenuItem *menuItem = (CCMenuItem*)item;
|
||||
|
||||
if(menuItem->getTag() == kRPGMapMenuLayerTagMainMenuItems ||
|
||||
menuItem->getTag() == kRPGMapMenuLayerTagMainMenuEquip ||
|
||||
menuItem->getTag() == kRPGMapMenuLayerTagMainMenuSkill ||
|
||||
menuItem->getTag() == kRPGMapMenuLayerTagMainMenuStatus ||
|
||||
menuItem->getTag() == kRPGMapMenuLayerTagMainMenuClose ||
|
||||
menuItem->getTag() == kRPGMapMenuLayerTagMainMenuExit)
|
||||
menuItem->setVisible(true);
|
||||
else
|
||||
menuItem->setVisible(false);
|
||||
addLab(this, kRPGMapMenuLayerTagGoldLab, CCString::createWithFormat("%i", query.getIntField("gold")), 18, kCCTextAlignmentLeft, ccp(1030, 130));
|
||||
addLab(this, kRPGMapMenuLayerTagMapLab, CCString::createWithFormat("%s", query.getStringField("location_cns")), 18, kCCTextAlignmentLeft, ccp(1030, 90));
|
||||
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
|
||||
}
|
||||
|
||||
void RPGMapMenuLayer::setDefaultInterface()
|
||||
|
||||
@@ -33,6 +33,11 @@ enum RPGMapMenuLayerTag
|
||||
kRPGMapMenuLayerTagDialogExitOK = 9,
|
||||
kRPGMapMenuLayerTagDialogCancel = 10,
|
||||
kRPGMapMenuLayerTagDialog = 11,
|
||||
kRPGMapMenuLayerTagSeparate = 23,
|
||||
kRPGMapMenuLayerTagGoldLab = 24,
|
||||
kRPGMapMenuLayerTagMapLab = 25,
|
||||
kRPGMapMenuLayerTagGold = 26,
|
||||
kRPGMapMenuLayerTagMap = 27,
|
||||
kRPGMapMenuLayerTagDefualtPlayerTex = 200,
|
||||
kRPGMapMenuLayerTagDefualtPlayerName = 300,
|
||||
kRPGMapMenuLayerTagDefualtPlayerLevel = 400,
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
#include "RPGMapDialogLayer.h"
|
||||
#include "RPGLoadingSceneLayer.h"
|
||||
|
||||
#define NPC_QUERY "select * from npc where map_id = %i order by id desc" //查询该地图的NPC
|
||||
|
||||
RPGMapSceneLayer::RPGMapSceneLayer()
|
||||
{
|
||||
|
||||
@@ -38,16 +40,6 @@ RPGMapSceneLayer::~RPGMapSceneLayer()
|
||||
if(this->m_releaseTexture)
|
||||
{
|
||||
CCTextureCache::sharedTextureCache()->removeTextureForKey("map.png");
|
||||
CCTextureCache::sharedTextureCache()->removeTextureForKey("main.png");
|
||||
|
||||
//数据库部分,释放npc的纹理
|
||||
CppSQLite3Query query = this->m_db.execQuery("select * from npc order by id desc");
|
||||
while(!query.eof())
|
||||
{
|
||||
CCTextureCache::sharedTextureCache()->removeTextureForKey(query.getStringField("map_texture"));
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
|
||||
//player部分
|
||||
CCTextureCache::sharedTextureCache()->removeTextureForKey("actor4_0.png");
|
||||
@@ -55,7 +47,17 @@ RPGMapSceneLayer::~RPGMapSceneLayer()
|
||||
|
||||
}
|
||||
|
||||
// CCLog("RPGMapSceneLayer释放");
|
||||
//数据库部分,释放npc的纹理
|
||||
CppSQLite3Query query = this->m_db.execQuery(CCString::createWithFormat(NPC_QUERY, this->m_mapData.mapId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
CCTextureCache::sharedTextureCache()->removeTextureForKey(query.getStringField("map_texture"));
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
|
||||
// CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
|
||||
CCLog("RPGMapSceneLayer 释放");
|
||||
}
|
||||
|
||||
bool RPGMapSceneLayer::init(float showObjectTime)
|
||||
@@ -71,7 +73,7 @@ bool RPGMapSceneLayer::init(float showObjectTime)
|
||||
this->m_stringList->retain();
|
||||
|
||||
//数据库部分,读取进度记录
|
||||
CppSQLite3Query query = this->m_db.execQuery("select m.name as map_name, sd.map_id, m.has_enemy, m.bg_audio, sd.player_to_x, sd.player_to_y, sd.player_direction from save_data as sd inner join map as m on sd.map_id = m.id where sd.id = 1");
|
||||
CppSQLite3Query query = this->m_db.execQuery(SAVEDATA_MAP_QUERY);
|
||||
this->m_mapData.mapId = query.getIntField("map_id");
|
||||
this->m_mapData.mapName = query.getStringField("map_name");
|
||||
this->m_mapData.hasEnemy = query.getIntField("has_enemy") == 1 ? true : false;
|
||||
@@ -79,6 +81,8 @@ bool RPGMapSceneLayer::init(float showObjectTime)
|
||||
this->m_mapData.playerToX = query.getFloatField("player_to_x");
|
||||
this->m_mapData.playerToY = query.getFloatField("player_to_y");
|
||||
this->m_mapData.playerDirection = query.getStringField("player_direction");
|
||||
this->m_mapData.location = query.getStringField("location_cns");
|
||||
this->m_mapData.gold = query.getIntField("gold");
|
||||
query.finalize();
|
||||
|
||||
CCTMXTiledMap *bgMap = CCTMXTiledMap::create(this->m_mapData.mapName.c_str());
|
||||
@@ -103,6 +107,7 @@ bool RPGMapSceneLayer::init(float showObjectTime)
|
||||
|
||||
this->scheduleOnce(schedule_selector(RPGMapSceneLayer::startPlay), showObjectTime);
|
||||
|
||||
// CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -449,7 +454,7 @@ void RPGMapSceneLayer::startPlay(float delay)
|
||||
CCTMXTiledMap *bgMap = (CCTMXTiledMap*)this->getChildByTag(kRPGMapSceneLayerTagBgMap);
|
||||
|
||||
//数据库部分,读取npc数据
|
||||
CppSQLite3Query query = this->m_db.execQuery(CCString::createWithFormat("select * from npc where map_id = %i order by id desc", this->m_mapData.mapId)->getCString());
|
||||
CppSQLite3Query query = this->m_db.execQuery(CCString::createWithFormat(NPC_QUERY, this->m_mapData.mapId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
float x = (stringToNumber<float>(query.getStringField("tmx_x")) + 0.5) * GAME_TMX_ROLE_WIDTH;
|
||||
|
||||
@@ -50,6 +50,8 @@ struct RPGMapData
|
||||
float playerToX;
|
||||
float playerToY;
|
||||
string playerDirection;
|
||||
string location;
|
||||
int gold;
|
||||
};
|
||||
|
||||
class RPGMapSceneLayer : public RPGBaseSceneLayer
|
||||
|
||||
@@ -11,6 +11,12 @@
|
||||
//执行操作后player的数据更新
|
||||
#define PLAYER_UPDATE "update player set %s = %i where id = %i"
|
||||
|
||||
//更新player的各个状态值
|
||||
#define PLAYER_UPDATE_STATUS "update player set attack = %f, defense = %f, speed = %f, skill_attack = %f, skill_defense = %f, %s = %i where id = %i"
|
||||
|
||||
//获取一个已有道具的总数
|
||||
#define EXISTING_ITEMS_TOTAL "select total from items_existing where id = %i"
|
||||
|
||||
//丢弃一个道具
|
||||
#define ITEMS_DISCARD "delete from items_existing where id = %i"
|
||||
|
||||
@@ -23,6 +29,21 @@
|
||||
//查询一个技能的明细
|
||||
#define SKILL_DETAIL_QUERY "select * from skill where id = %i"
|
||||
|
||||
//查询一条player数据
|
||||
#define PLAYER_SINGLE_QUERY "select * from player where id = %i"
|
||||
|
||||
//查询一条items数据
|
||||
#define ITEMS_SINGLE_QUERY "select * from items where id = %i"
|
||||
|
||||
//是否已存在该道具
|
||||
#define EXIST_ITEMS "select count(id) from items_existing where id = %i"
|
||||
|
||||
//增加一个已有道具
|
||||
#define ADD_EXISTING_ITEMS "insert into items_existing (id, total) values(%i, 1)"
|
||||
|
||||
//更新一个已有道具的数量
|
||||
#define UPDATE_EXISTING_ITEMS "update items_existing set total = total + 1 where id = %i"
|
||||
|
||||
void RPGResultsLogic::discardItems(CppSQLite3DB *db, int itemsId)
|
||||
{
|
||||
db->execDML(CCString::createWithFormat(ITEMS_DISCARD, itemsId)->getCString());
|
||||
@@ -206,7 +227,7 @@ void RPGResultsLogic::removeEquip(CppSQLite3DB *db, int playerId, int type)
|
||||
return;
|
||||
|
||||
{
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat("select * from player where id = %i", playerId)->getCString());
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat(PLAYER_SINGLE_QUERY, playerId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
itemsId = query.getIntField(itemField.c_str());
|
||||
@@ -215,34 +236,64 @@ void RPGResultsLogic::removeEquip(CppSQLite3DB *db, int playerId, int type)
|
||||
query.finalize();
|
||||
}
|
||||
|
||||
float attack;
|
||||
float defense;
|
||||
float speed;
|
||||
float skillAttack;
|
||||
float skillDefense;
|
||||
|
||||
{
|
||||
//player将装备卸下后各个值发生变化
|
||||
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat("select * from items where id = %i", itemsId)->getCString());
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat(ITEMS_SINGLE_QUERY, itemsId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
float attack = query.getFloatField("attack");
|
||||
float defense = query.getFloatField("defense");
|
||||
float speed = query.getFloatField("speed");
|
||||
float skillAttack = query.getFloatField("skill_attack");
|
||||
float skillDefense = query.getFloatField("skill_defense");
|
||||
|
||||
playerSql = CCString::createWithFormat("update player set attack = attack - %f, defense = defense - %f, speed = speed - %f, skill_attack = skill_attack - %f, skill_defense = skill_defense - %f, %s = 0 where id = %i", attack, defense, speed, skillAttack, skillDefense, itemField.c_str(), playerId);
|
||||
attack = query.getFloatField("attack");
|
||||
defense = query.getFloatField("defense");
|
||||
speed = query.getFloatField("speed");
|
||||
skillAttack = query.getFloatField("skill_attack");
|
||||
skillDefense = query.getFloatField("skill_defense");
|
||||
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
}
|
||||
|
||||
//各个值的处理
|
||||
{
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat(PLAYER_SINGLE_QUERY, playerId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
attack = query.getFloatField("attack") - attack;
|
||||
defense = query.getFloatField("defense") - defense;
|
||||
speed = query.getFloatField("speed") - speed;
|
||||
skillAttack = query.getFloatField("skill_attack") - skillAttack;
|
||||
skillDefense = query.getFloatField("skill_defense") - skillDefense;
|
||||
|
||||
//最小值的处理
|
||||
if(attack < 0) attack = 0;
|
||||
if(defense < 0) defense = 0;
|
||||
if(speed < 0) speed = 0;
|
||||
if(skillAttack < 0) skillAttack = 0;
|
||||
if(skillDefense < 0) skillDefense = 0;
|
||||
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
}
|
||||
|
||||
int equipId = 0;
|
||||
playerSql = CCString::createWithFormat(PLAYER_UPDATE_STATUS, attack, defense, speed, skillAttack, skillDefense, itemField.c_str(), equipId, playerId);
|
||||
|
||||
{
|
||||
//将卸下的装备放回已有道具处
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat("select count(id) from items_existing where id = %i", itemsId)->getCString());
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat(EXIST_ITEMS, itemsId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
if(query.getIntField(0) <= 0)
|
||||
itemsExistingSql = CCString::createWithFormat("insert into items_existing (id, total) values(%i, 1)", itemsId);
|
||||
itemsExistingSql = CCString::createWithFormat(ADD_EXISTING_ITEMS, itemsId);
|
||||
else
|
||||
itemsExistingSql = CCString::createWithFormat("update items_existing set total = total + 1 where id = %i", itemsId);
|
||||
itemsExistingSql = CCString::createWithFormat(UPDATE_EXISTING_ITEMS, itemsId);
|
||||
|
||||
query.nextRow();
|
||||
}
|
||||
@@ -270,7 +321,7 @@ void RPGResultsLogic::equip(CppSQLite3DB *db, int playerId, int itemsId)
|
||||
{
|
||||
//查询该装备的类型和效果值
|
||||
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat("select * from items where id = %i", itemsId)->getCString());
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat(ITEMS_SINGLE_QUERY, itemsId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
attack = query.getFloatField("attack");
|
||||
@@ -293,18 +344,54 @@ void RPGResultsLogic::equip(CppSQLite3DB *db, int playerId, int itemsId)
|
||||
else
|
||||
return;
|
||||
|
||||
//如果已装备了则先卸掉此装备
|
||||
{
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat(PLAYER_SINGLE_QUERY, playerId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
if(query.getIntField(itemField.c_str()) != 0)
|
||||
RPGResultsLogic::removeEquip(db, playerId, type);
|
||||
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
}
|
||||
|
||||
//各个值的处理
|
||||
{
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat(PLAYER_SINGLE_QUERY, playerId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
attack = query.getFloatField("attack") + attack;
|
||||
defense = query.getFloatField("defense") + defense;
|
||||
speed = query.getFloatField("speed") + speed;
|
||||
skillAttack = query.getFloatField("skill_attack") + skillAttack;
|
||||
skillDefense = query.getFloatField("skill_defense") + skillDefense;
|
||||
|
||||
//最大值的处理
|
||||
if(attack > MAX_STATUS2) attack = MAX_STATUS2;
|
||||
if(defense > MAX_STATUS2) defense = MAX_STATUS2;
|
||||
if(speed > MAX_STATUS2) speed = MAX_STATUS2;
|
||||
if(skillAttack > MAX_STATUS2) skillAttack = MAX_STATUS2;
|
||||
if(skillDefense > MAX_STATUS2) skillDefense = MAX_STATUS2;
|
||||
|
||||
query.nextRow();
|
||||
}
|
||||
query.finalize();
|
||||
}
|
||||
|
||||
//player装备了之后各个值发生变化
|
||||
playerSql = CCString::createWithFormat("update player set attack = attack + %f, defense = defense + %f, speed = speed + %f, skill_attack = skill_attack + %f, skill_defense = skill_defense + %f, %s = %i where id = %i", attack, defense, speed, skillAttack, skillDefense, itemField.c_str(), itemsId, playerId);
|
||||
playerSql = CCString::createWithFormat(PLAYER_UPDATE_STATUS, attack, defense, speed, skillAttack, skillDefense, itemField.c_str(), itemsId, playerId);
|
||||
|
||||
{
|
||||
//扣减装备了的道具
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat("select total from items_existing where id = %i", itemsId)->getCString());
|
||||
CppSQLite3Query query = db->execQuery(CCString::createWithFormat(EXISTING_ITEMS_TOTAL, itemsId)->getCString());
|
||||
while(!query.eof())
|
||||
{
|
||||
if(query.getIntField(0) <= 1)
|
||||
itemsExistingSql = CCString::createWithFormat("delete from items_existing where id = %i", itemsId);
|
||||
itemsExistingSql = CCString::createWithFormat(ITEMS_DISCARD, itemsId);
|
||||
else
|
||||
itemsExistingSql = CCString::createWithFormat("update items_existing set total = total - 1 where id = %i", itemsId);
|
||||
itemsExistingSql = CCString::createWithFormat(ITEMS_DEDUCTIONS, itemsId);
|
||||
|
||||
query.nextRow();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
ozg game — 单机版RPG
|
||||
ozg game — 单机版RPG(开发中…)
|
||||
================
|
||||
|
||||
本游戏主要用于技术的研究和积累
|
||||
@@ -9,9 +9,9 @@ ozg game — 单机版RPG
|
||||
声音文件来自 http://www.66rpg.com/type.php?t=17
|
||||
|
||||
|
||||
目前只在iOS平台下进行测试,战斗画面的攻击、技能、道具未完成。
|
||||
目前只在iOS平台下进行测试,战斗画面的技能、道具未完成。
|
||||
|
||||
每次更新数据库都需要把模拟器里面的数据库删除。
|
||||
每次的更新完毕之后,数据结构都可能发生了变化,所以要把旧的数据库删除。
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"mov_data": [
|
||||
{
|
||||
"name": "main_anim",
|
||||
"dr": 31,
|
||||
"dr": 21,
|
||||
"lp": false,
|
||||
"to": 0,
|
||||
"drTW": 0,
|
||||
@@ -76,12 +76,11 @@
|
||||
"z": 0,
|
||||
"cX": 1.0,
|
||||
"cY": 1.0,
|
||||
"kX": 4.49408446E-07,
|
||||
"kY": -4.49408446E-07,
|
||||
"fi": 30,
|
||||
"kX": 0.0,
|
||||
"kY": 0.0,
|
||||
"fi": 20,
|
||||
"twE": 0,
|
||||
"tweenFrame": true,
|
||||
"evt": "attack1_end"
|
||||
"tweenFrame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"mov_data": [
|
||||
{
|
||||
"name": "main_anim",
|
||||
"dr": 31,
|
||||
"dr": 21,
|
||||
"lp": false,
|
||||
"to": 0,
|
||||
"drTW": 0,
|
||||
@@ -78,10 +78,9 @@
|
||||
"cY": 1.0,
|
||||
"kX": 0.0,
|
||||
"kY": 0.0,
|
||||
"fi": 30,
|
||||
"fi": 20,
|
||||
"twE": 0,
|
||||
"tweenFrame": true,
|
||||
"evt": "attack2_end"
|
||||
"tweenFrame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"mov_data": [
|
||||
{
|
||||
"name": "main_anim",
|
||||
"dr": 31,
|
||||
"dr": 21,
|
||||
"lp": false,
|
||||
"to": 0,
|
||||
"drTW": 0,
|
||||
@@ -78,10 +78,9 @@
|
||||
"cY": 1.0,
|
||||
"kX": 0.0,
|
||||
"kY": 0.0,
|
||||
"fi": 30,
|
||||
"fi": 20,
|
||||
"twE": 0,
|
||||
"tweenFrame": true,
|
||||
"evt": "attack3_end"
|
||||
"tweenFrame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"mov_data": [
|
||||
{
|
||||
"name": "main_anim",
|
||||
"dr": 31,
|
||||
"dr": 21,
|
||||
"lp": false,
|
||||
"to": 0,
|
||||
"drTW": 0,
|
||||
@@ -78,10 +78,9 @@
|
||||
"cY": 1.0,
|
||||
"kX": 0.0,
|
||||
"kY": 0.0,
|
||||
"fi": 30,
|
||||
"fi": 20,
|
||||
"twE": 0,
|
||||
"tweenFrame": true,
|
||||
"evt": "attack4_end"
|
||||
"tweenFrame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.0" orientation="orthogonal" width="20" height="20" tilewidth="16" tileheight="16">
|
||||
<tileset firstgid="1" name="Window_b_00" tilewidth="16" tileheight="16">
|
||||
<image source="Window_b_00.png" width="128" height="128"/>
|
||||
</tileset>
|
||||
<layer name="behind" width="20" height="20" opacity="0.79">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJwTZmBgEMaDefBgfPoIYWqbOWre4DGP2mmGFmmQWPME6WSeIBomxTxiMCnhR23zqJ3+ZIjAtCizRjEmBgDuqhsb
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="bront" width="20" height="20">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJxjZWBgYCMCsxOBOYCYl4F6QGDUvGFvnuioeaPmjZpHN/NkgVieSlgBiAGf4gVQ
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
@@ -6,6 +6,14 @@
|
||||
<string>逃跑成功</string>
|
||||
<key>escape_fail</key>
|
||||
<string>逃跑失败</string>
|
||||
<key>win_title</key>
|
||||
<string>战斗结束!</string>
|
||||
<key>win_gold</key>
|
||||
<string>获得金钱:%i</string>
|
||||
<key>win_exp</key>
|
||||
<string>%s 获得经验值:%i</string>
|
||||
<key>win_level_up</key>
|
||||
<string>%s 升级了</string>
|
||||
<key>battle_playermenu_attack</key>
|
||||
<string>攻击</string>
|
||||
<key>battle_playermenu_defense</key>
|
||||
|
||||
@@ -32,6 +32,10 @@
|
||||
<string>取消</string>
|
||||
<key>confirm_exit</key>
|
||||
<string>退出游戏返回到初始界面。</string>
|
||||
<key>menu_gold</key>
|
||||
<string>金钱:</string>
|
||||
<key>menu_map</key>
|
||||
<string>所在位置:</string>
|
||||
<key>menu_back</key>
|
||||
<string>后退</string>
|
||||
<key>menu_close</key>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"mov_data": [
|
||||
{
|
||||
"name": "main_anim",
|
||||
"dr": 31,
|
||||
"dr": 21,
|
||||
"lp": false,
|
||||
"to": 0,
|
||||
"drTW": 0,
|
||||
@@ -76,12 +76,11 @@
|
||||
"z": 0,
|
||||
"cX": 1.0,
|
||||
"cY": 1.0,
|
||||
"kX": 4.49408446E-07,
|
||||
"kY": -4.49408446E-07,
|
||||
"fi": 30,
|
||||
"kX": 0.0,
|
||||
"kY": 0.0,
|
||||
"fi": 20,
|
||||
"twE": 0,
|
||||
"tweenFrame": true,
|
||||
"evt": "attack1_end"
|
||||
"tweenFrame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 724 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ArrayOfGuidesProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<GuidesProject>
|
||||
<Project>attack1</Project>
|
||||
<GuidesList />
|
||||
</GuidesProject>
|
||||
</ArrayOfGuidesProject>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<AnimationProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<ProjectDir>D:\root\Temp\OzgCocoStudio\attack1</ProjectDir>
|
||||
<Version>1.3.0.1</Version>
|
||||
<Resources>D:\root\Temp\OzgCocoStudio\attack1\Resources</Resources>
|
||||
<Name>attack1</Name>
|
||||
<JsonFileName>attack1.json</JsonFileName>
|
||||
<JsonFolder>D:\root\Temp\OzgCocoStudio\attack1\Json</JsonFolder>
|
||||
<JsonList />
|
||||
<CanvasSize>
|
||||
<Width>0</Width>
|
||||
<Height>0</Height>
|
||||
</CanvasSize>
|
||||
<filePath>D:\root\Temp\OzgCocoStudio\attack1\attack1.xml.animation</filePath>
|
||||
<ProjectType>AnimationProject</ProjectType>
|
||||
<ResRelativePath />
|
||||
<ResourceFileList>
|
||||
<string>attack10.plist</string>
|
||||
</ResourceFileList>
|
||||
<bBatchImage>true</bBatchImage>
|
||||
</AnimationProject>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>frames</key>
|
||||
<dict>
|
||||
<key>role_attack_01.png</key>
|
||||
<dict>
|
||||
<key>width</key>
|
||||
<integer>38</integer>
|
||||
<key>height</key>
|
||||
<integer>25</integer>
|
||||
<key>originalWidth</key>
|
||||
<integer>38</integer>
|
||||
<key>originalHeight</key>
|
||||
<integer>25</integer>
|
||||
<key>x</key>
|
||||
<integer>0</integer>
|
||||
<key>y</key>
|
||||
<integer>0</integer>
|
||||
<key>offsetX</key>
|
||||
<real>0</real>
|
||||
<key>offsetY</key>
|
||||
<real>0</real>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>metadata</key>
|
||||
<dict>
|
||||
<key>format</key>
|
||||
<integer>0</integer>
|
||||
<key>textureFileName</key>
|
||||
<string>attack10.png</string>
|
||||
<key>realTextureFileName</key>
|
||||
<string>attack10.png</string>
|
||||
<key>size</key>
|
||||
<string>{1024,1024}</string>
|
||||
</dict>
|
||||
<key>texture</key>
|
||||
<dict>
|
||||
<key>width</key>
|
||||
<integer>1024</integer>
|
||||
<key>height</key>
|
||||
<integer>1024</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
Before Width: | Height: | Size: 449 B |
@@ -45,7 +45,7 @@
|
||||
"mov_data": [
|
||||
{
|
||||
"name": "main_anim",
|
||||
"dr": 31,
|
||||
"dr": 21,
|
||||
"lp": false,
|
||||
"to": 0,
|
||||
"drTW": 0,
|
||||
@@ -78,10 +78,9 @@
|
||||
"cY": 1.0,
|
||||
"kX": 0.0,
|
||||
"kY": 0.0,
|
||||
"fi": 30,
|
||||
"fi": 20,
|
||||
"twE": 0,
|
||||
"tweenFrame": true,
|
||||
"evt": "attack2_end"
|
||||
"tweenFrame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ArrayOfGuidesProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<GuidesProject>
|
||||
<Project>attack2</Project>
|
||||
<GuidesList />
|
||||
</GuidesProject>
|
||||
</ArrayOfGuidesProject>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<AnimationProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<ProjectDir>D:\root\Temp\OzgCocoStudio\attack2</ProjectDir>
|
||||
<Version>1.3.0.1</Version>
|
||||
<Resources>D:\root\Temp\OzgCocoStudio\attack2\Resources</Resources>
|
||||
<Name>attack2</Name>
|
||||
<JsonFileName>attack2.json</JsonFileName>
|
||||
<JsonFolder>D:\root\Temp\OzgCocoStudio\attack2\Json</JsonFolder>
|
||||
<JsonList />
|
||||
<CanvasSize>
|
||||
<Width>0</Width>
|
||||
<Height>0</Height>
|
||||
</CanvasSize>
|
||||
<filePath>D:\root\Temp\OzgCocoStudio\attack2\attack2.xml.animation</filePath>
|
||||
<ProjectType>AnimationProject</ProjectType>
|
||||
<ResRelativePath />
|
||||
<ResourceFileList>
|
||||
<string>attack20.plist</string>
|
||||
</ResourceFileList>
|
||||
<bBatchImage>true</bBatchImage>
|
||||
</AnimationProject>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>frames</key>
|
||||
<dict>
|
||||
<key>role_attack_02.png</key>
|
||||
<dict>
|
||||
<key>width</key>
|
||||
<integer>39</integer>
|
||||
<key>height</key>
|
||||
<integer>27</integer>
|
||||
<key>originalWidth</key>
|
||||
<integer>39</integer>
|
||||
<key>originalHeight</key>
|
||||
<integer>27</integer>
|
||||
<key>x</key>
|
||||
<integer>0</integer>
|
||||
<key>y</key>
|
||||
<integer>0</integer>
|
||||
<key>offsetX</key>
|
||||
<real>0</real>
|
||||
<key>offsetY</key>
|
||||
<real>0</real>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>metadata</key>
|
||||
<dict>
|
||||
<key>format</key>
|
||||
<integer>0</integer>
|
||||
<key>textureFileName</key>
|
||||
<string>attack20.png</string>
|
||||
<key>realTextureFileName</key>
|
||||
<string>attack20.png</string>
|
||||
<key>size</key>
|
||||
<string>{1024,1024}</string>
|
||||
</dict>
|
||||
<key>texture</key>
|
||||
<dict>
|
||||
<key>width</key>
|
||||
<integer>1024</integer>
|
||||
<key>height</key>
|
||||
<integer>1024</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
Before Width: | Height: | Size: 670 B |
@@ -45,7 +45,7 @@
|
||||
"mov_data": [
|
||||
{
|
||||
"name": "main_anim",
|
||||
"dr": 31,
|
||||
"dr": 21,
|
||||
"lp": false,
|
||||
"to": 0,
|
||||
"drTW": 0,
|
||||
@@ -78,10 +78,9 @@
|
||||
"cY": 1.0,
|
||||
"kX": 0.0,
|
||||
"kY": 0.0,
|
||||
"fi": 30,
|
||||
"fi": 20,
|
||||
"twE": 0,
|
||||
"tweenFrame": true,
|
||||
"evt": "attack3_end"
|
||||
"tweenFrame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 806 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ArrayOfGuidesProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<GuidesProject>
|
||||
<Project>attack3</Project>
|
||||
<GuidesList />
|
||||
</GuidesProject>
|
||||
</ArrayOfGuidesProject>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<AnimationProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<ProjectDir>D:\root\Temp\OzgCocoStudio\attack3</ProjectDir>
|
||||
<Version>1.3.0.1</Version>
|
||||
<Resources>D:\root\Temp\OzgCocoStudio\attack3\Resources</Resources>
|
||||
<Name>attack3</Name>
|
||||
<JsonFileName>attack3.json</JsonFileName>
|
||||
<JsonFolder>D:\root\Temp\OzgCocoStudio\attack3\Json</JsonFolder>
|
||||
<JsonList />
|
||||
<CanvasSize>
|
||||
<Width>0</Width>
|
||||
<Height>0</Height>
|
||||
</CanvasSize>
|
||||
<filePath>D:\root\Temp\OzgCocoStudio\attack3\attack3.xml.animation</filePath>
|
||||
<ProjectType>AnimationProject</ProjectType>
|
||||
<ResRelativePath />
|
||||
<ResourceFileList>
|
||||
<string>attack30.plist</string>
|
||||
</ResourceFileList>
|
||||
<bBatchImage>true</bBatchImage>
|
||||
</AnimationProject>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>frames</key>
|
||||
<dict>
|
||||
<key>role_attack_03.png</key>
|
||||
<dict>
|
||||
<key>width</key>
|
||||
<integer>30</integer>
|
||||
<key>height</key>
|
||||
<integer>22</integer>
|
||||
<key>originalWidth</key>
|
||||
<integer>30</integer>
|
||||
<key>originalHeight</key>
|
||||
<integer>22</integer>
|
||||
<key>x</key>
|
||||
<integer>0</integer>
|
||||
<key>y</key>
|
||||
<integer>0</integer>
|
||||
<key>offsetX</key>
|
||||
<real>0</real>
|
||||
<key>offsetY</key>
|
||||
<real>0</real>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>metadata</key>
|
||||
<dict>
|
||||
<key>format</key>
|
||||
<integer>0</integer>
|
||||
<key>textureFileName</key>
|
||||
<string>attack30.png</string>
|
||||
<key>realTextureFileName</key>
|
||||
<string>attack30.png</string>
|
||||
<key>size</key>
|
||||
<string>{1024,1024}</string>
|
||||
</dict>
|
||||
<key>texture</key>
|
||||
<dict>
|
||||
<key>width</key>
|
||||
<integer>1024</integer>
|
||||
<key>height</key>
|
||||
<integer>1024</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
Before Width: | Height: | Size: 466 B |
@@ -45,7 +45,7 @@
|
||||
"mov_data": [
|
||||
{
|
||||
"name": "main_anim",
|
||||
"dr": 31,
|
||||
"dr": 21,
|
||||
"lp": false,
|
||||
"to": 0,
|
||||
"drTW": 0,
|
||||
@@ -78,10 +78,9 @@
|
||||
"cY": 1.0,
|
||||
"kX": 0.0,
|
||||
"kY": 0.0,
|
||||
"fi": 30,
|
||||
"fi": 20,
|
||||
"twE": 0,
|
||||
"tweenFrame": true,
|
||||
"evt": "attack4_end"
|
||||
"tweenFrame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 669 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ArrayOfGuidesProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<GuidesProject>
|
||||
<Project>attack4</Project>
|
||||
<GuidesList />
|
||||
</GuidesProject>
|
||||
</ArrayOfGuidesProject>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<AnimationProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<ProjectDir>D:\root\Temp\OzgCocoStudio\attack4</ProjectDir>
|
||||
<Version>1.3.0.1</Version>
|
||||
<Resources>D:\root\Temp\OzgCocoStudio\attack4\Resources</Resources>
|
||||
<Name>attack4</Name>
|
||||
<JsonFileName>attack4.json</JsonFileName>
|
||||
<JsonFolder>D:\root\Temp\OzgCocoStudio\attack4\Json</JsonFolder>
|
||||
<JsonList />
|
||||
<CanvasSize>
|
||||
<Width>0</Width>
|
||||
<Height>0</Height>
|
||||
</CanvasSize>
|
||||
<filePath>D:\root\Temp\OzgCocoStudio\attack4\attack4.xml.animation</filePath>
|
||||
<ProjectType>AnimationProject</ProjectType>
|
||||
<ResRelativePath />
|
||||
<ResourceFileList>
|
||||
<string>attack40.plist</string>
|
||||
</ResourceFileList>
|
||||
<bBatchImage>true</bBatchImage>
|
||||
</AnimationProject>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>frames</key>
|
||||
<dict>
|
||||
<key>role_attack_04.png</key>
|
||||
<dict>
|
||||
<key>width</key>
|
||||
<integer>27</integer>
|
||||
<key>height</key>
|
||||
<integer>16</integer>
|
||||
<key>originalWidth</key>
|
||||
<integer>27</integer>
|
||||
<key>originalHeight</key>
|
||||
<integer>16</integer>
|
||||
<key>x</key>
|
||||
<integer>0</integer>
|
||||
<key>y</key>
|
||||
<integer>0</integer>
|
||||
<key>offsetX</key>
|
||||
<real>0</real>
|
||||
<key>offsetY</key>
|
||||
<real>0</real>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>metadata</key>
|
||||
<dict>
|
||||
<key>format</key>
|
||||
<integer>0</integer>
|
||||
<key>textureFileName</key>
|
||||
<string>attack40.png</string>
|
||||
<key>realTextureFileName</key>
|
||||
<string>attack40.png</string>
|
||||
<key>size</key>
|
||||
<string>{1024,1024}</string>
|
||||
</dict>
|
||||
<key>texture</key>
|
||||
<dict>
|
||||
<key>width</key>
|
||||
<integer>1024</integer>
|
||||
<key>height</key>
|
||||
<integer>1024</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
Before Width: | Height: | Size: 414 B |
@@ -229,6 +229,7 @@
|
||||
890F1B651902E284002F2769 /* attack30.png in Resources */ = {isa = PBXBuildFile; fileRef = 890F1B591902E284002F2769 /* attack30.png */; };
|
||||
890F1B661902E284002F2769 /* attack40.plist in Resources */ = {isa = PBXBuildFile; fileRef = 890F1B5A1902E284002F2769 /* attack40.plist */; };
|
||||
890F1B671902E284002F2769 /* attack40.png in Resources */ = {isa = PBXBuildFile; fileRef = 890F1B5B1902E284002F2769 /* attack40.png */; };
|
||||
891DEB7819054276005337E5 /* battle_battle_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 891DEB7719054276005337E5 /* battle_battle_style1.tmx */; };
|
||||
8936C3B518F6D72100AE709E /* select_player_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8936C3B418F6D72100AE709E /* select_player_style1.tmx */; };
|
||||
895EC07318F05AE600C3814D /* RPGData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 895EC07118F05AE600C3814D /* RPGData.cpp */; };
|
||||
8960C17F18E7D0BD0075EF99 /* alert_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8960C17E18E7D0BD0075EF99 /* alert_style1.tmx */; };
|
||||
@@ -849,6 +850,7 @@
|
||||
890F1B591902E284002F2769 /* attack30.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = attack30.png; sourceTree = "<group>"; };
|
||||
890F1B5A1902E284002F2769 /* attack40.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = attack40.plist; sourceTree = "<group>"; };
|
||||
890F1B5B1902E284002F2769 /* attack40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = attack40.png; sourceTree = "<group>"; };
|
||||
891DEB7719054276005337E5 /* battle_battle_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = battle_battle_style1.tmx; sourceTree = "<group>"; };
|
||||
8936C3B418F6D72100AE709E /* select_player_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = select_player_style1.tmx; sourceTree = "<group>"; };
|
||||
895EC07118F05AE600C3814D /* RPGData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGData.cpp; path = ../Classes/RPGData.cpp; sourceTree = "<group>"; };
|
||||
895EC07218F05AE600C3814D /* RPGData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGData.h; path = ../Classes/RPGData.h; sourceTree = "<group>"; };
|
||||
@@ -2385,18 +2387,18 @@
|
||||
89F5D0CD18E7C579009D703C /* RPGMapNPCRoleSprite.h */,
|
||||
89F5D0CE18E7C579009D703C /* RPGMapRoleSprite.cpp */,
|
||||
89F5D0CF18E7C579009D703C /* RPGMapRoleSprite.h */,
|
||||
89F5D0D618E7C579009D703C /* RPGMapSceneLayer.cpp */,
|
||||
89F5D0D718E7C579009D703C /* RPGMapSceneLayer.h */,
|
||||
89E63C7F18EDA9E200BDD04F /* RPGBattlePlayerSprite.cpp */,
|
||||
89E63C8018EDA9E200BDD04F /* RPGBattlePlayerSprite.h */,
|
||||
9E5C5F6F18EE68BD00A68C36 /* RPGBattleMonsterSprite.cpp */,
|
||||
9E5C5F7018EE68BD00A68C36 /* RPGBattleMonsterSprite.h */,
|
||||
895EC07118F05AE600C3814D /* RPGData.cpp */,
|
||||
895EC07218F05AE600C3814D /* RPGData.h */,
|
||||
8999051818F17A3D00012A0E /* RPGBattleMenu.cpp */,
|
||||
8999051918F17A3D00012A0E /* RPGBattleMenu.h */,
|
||||
89F5D0D418E7C579009D703C /* RPGBattleSceneLayer.cpp */,
|
||||
89F5D0D518E7C579009D703C /* RPGBattleSceneLayer.h */,
|
||||
89F5D0D618E7C579009D703C /* RPGMapSceneLayer.cpp */,
|
||||
89F5D0D718E7C579009D703C /* RPGMapSceneLayer.h */,
|
||||
895EC07118F05AE600C3814D /* RPGData.cpp */,
|
||||
895EC07218F05AE600C3814D /* RPGData.h */,
|
||||
89F5D0D818E7C579009D703C /* RPGStartSceneLayer.cpp */,
|
||||
89F5D0D918E7C579009D703C /* RPGStartSceneLayer.h */,
|
||||
8960C18018E7D51C0075EF99 /* RPGDialogLayer.cpp */,
|
||||
@@ -2434,6 +2436,7 @@
|
||||
896BAEE418EF04CF006581FD /* audio_battle_menu.wav */,
|
||||
896BAEE518EF04CF006581FD /* audio_battle_start.wav */,
|
||||
9E5C5F6D18EE59BB00A68C36 /* battle_menu_style1.tmx */,
|
||||
891DEB7719054276005337E5 /* battle_battle_style1.tmx */,
|
||||
8999051C18F17E6C00012A0E /* battle_battlemenu_style1.tmx */,
|
||||
89EA57C018EAF2CB00A10956 /* battle_bg.png */,
|
||||
89EA57BC18EAF1EC00A10956 /* monsters.plist */,
|
||||
@@ -2588,6 +2591,7 @@
|
||||
89F5D14B18E7C5DD009D703C /* scene_start_cns.plist in Resources */,
|
||||
896BAEE618EF04CF006581FD /* audio_battle_end.mp3 in Resources */,
|
||||
89F5D10E18E7C5C0009D703C /* actor7_3.png in Resources */,
|
||||
891DEB7819054276005337E5 /* battle_battle_style1.tmx in Resources */,
|
||||
89CB7D8818E9A87700A5921B /* dialog_style1.tmx in Resources */,
|
||||
89F5D11B18E7C5C0009D703C /* actor113.png in Resources */,
|
||||
89F5D14C18E7C5DD009D703C /* start_bg.png in Resources */,
|
||||
|
||||