diff --git a/Classes/GameCfg.h b/Classes/GameCfg.h index bf069d9..2dc09e0 100755 --- a/Classes/GameCfg.h +++ b/Classes/GameCfg.h @@ -16,6 +16,6 @@ #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, items) 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, items) values(1, 14.5, 9.5, 'down', '[{\"id\": 6, \"total\": 10}, {\"id\": 7, \"total\": 7}, {\"id\": 8, \"total\": 7}]');" #endif diff --git a/Classes/RPGBaseSceneLayer.h b/Classes/RPGBaseSceneLayer.h index 620c3bc..186990b 100755 --- a/Classes/RPGBaseSceneLayer.h +++ b/Classes/RPGBaseSceneLayer.h @@ -15,7 +15,7 @@ #include "SimpleAudioEngine.h" #include "CppSQLite3.h" #include "GameCfg.h" -#include "RPGConfirmLayer.h" +#include "RPGDialogLayer.h" #include "RPGData.h" USING_NS_CC; @@ -27,6 +27,12 @@ using namespace CocosDenshion; //获取player列表 #define PLAYER_QUERY "select * from player order by id asc" +//获取save_data数据 +#define SAVEDATA_QUERY "select * from save_data where id = 1" + +//查询现有道具 +#define ITEMS_QUERY "select * from items where id in(%s) order by id asc" + //技能的属性 enum RPGSkillAttr { diff --git a/Classes/RPGComputingResults.h b/Classes/RPGComputingResults.h index df3bb6d..8319baf 100644 --- a/Classes/RPGComputingResults.h +++ b/Classes/RPGComputingResults.h @@ -14,7 +14,7 @@ USING_NS_CC; -class RPGComputingResults : public CCObject +class RPGComputingResults { public: diff --git a/Classes/RPGConfirmLayer.cpp b/Classes/RPGConfirmLayer.cpp deleted file mode 100644 index 709938b..0000000 --- a/Classes/RPGConfirmLayer.cpp +++ /dev/null @@ -1,73 +0,0 @@ -// -// RPGConfirmLayer.cpp -// OzgGameRPG -// -// Created by ozg on 14-3-30. -// -// - -#include "RPGConfirmLayer.h" -#include "OzgCCUtility.h" - -RPGConfirmLayer::RPGConfirmLayer() -{ - -} - -RPGConfirmLayer::~RPGConfirmLayer() -{ - -} - -bool RPGConfirmLayer::init(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor) -{ - if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height)) - { - CCTMXTiledMap *mainBg = CCTMXTiledMap::create("alert_style1.tmx"); - float x = (CCDirector::sharedDirector()->getWinSize().width - mainBg->getContentSize().width) / 2.0f; - float y = (CCDirector::sharedDirector()->getWinSize().height - mainBg->getContentSize().height) / 2.0f; - mainBg->setPosition(ccp(x, y)); - this->addChild(mainBg); - - CCLabelTTF *titleLab = CCLabelTTF::create(titleStr.c_str(), "Arial", 25, CCSizeMake(mainBg->getContentSize().width, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); - titleLab->setPosition(ccp(190, 135)); - titleLab->setColor(ccc3(255, 255, 255)); - mainBg->addChild(titleLab); - - CCMenu *menu = CCMenu::create(); - menu->setAnchorPoint(CCPointZero); - menu->setPosition(CCPointZero); - mainBg->addChild(menu); - - CCLabelTTF *menuOKLab = CCLabelTTF::create(OzgCCUtility::generalString(CCString::create(menuOKStr)->getCString()).c_str(), "Arial", 20, CCSizeMake(120, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); - menuOKLab->setColor(ccc3(160, 160, 160)); - CCMenuItemLabel *menuOK = CCMenuItemLabel::create(menuOKLab, target, seletor); - menuOK->setTag(menuItemOKTag); - menuOK->setPosition(ccp(100, 60)); - menu->addChild(menuOK); - - CCLabelTTF *menuCancelLab = CCLabelTTF::create(OzgCCUtility::generalString(CCString::create(menuCancelStr)->getCString()).c_str(), "Arial", 20, CCSizeMake(120, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); - menuCancelLab->setColor(ccc3(160, 160, 160)); - CCMenuItemLabel *menuCancel = CCMenuItemLabel::create(menuCancelLab, target, seletor); - menuCancel->setTag(menuItemCancelTag); - menuCancel->setPosition(ccp(280, 60)); - menu->addChild(menuCancel); - - return true; - } - - return false; -} - -RPGConfirmLayer* RPGConfirmLayer::create(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor) -{ - RPGConfirmLayer *layer = new RPGConfirmLayer(); - if(layer && layer->init(titleStr, menuOKStr, menuItemOKTag, menuCancelStr, menuItemCancelTag, width, height, target, seletor)) - { - layer->autorelease(); - - return layer; - } - CC_SAFE_DELETE(layer); - return NULL; -} diff --git a/Classes/RPGConfirmLayer.h b/Classes/RPGConfirmLayer.h deleted file mode 100644 index f4a6f6e..0000000 --- a/Classes/RPGConfirmLayer.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// RPGConfirmLayer.h -// OzgGameRPG -// -// Created by ozg on 14-3-30. -// -// - -#ifndef __OzgGameRPG__RPGConfirmLayer__ -#define __OzgGameRPG__RPGConfirmLayer__ - -#include "cocos2d.h" - -USING_NS_CC; -using namespace std; - -class RPGConfirmLayer : public CCLayerColor -{ - -public: - - RPGConfirmLayer(); - virtual ~RPGConfirmLayer(); - bool init(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor); - static RPGConfirmLayer* create(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor); - -}; - -#endif /* defined(__OzgGameRPG__RPGConfirmLayer__) */ diff --git a/Classes/RPGData.cpp b/Classes/RPGData.cpp index d39a31e..1113833 100644 --- a/Classes/RPGData.cpp +++ b/Classes/RPGData.cpp @@ -82,3 +82,51 @@ RPGSkill* RPGSkill::create() } //RPGSkill end + +RPGItems::RPGItems() +{ + +} + +RPGItems::~RPGItems() +{ + CCLog("RPGItems 释放"); +} + +RPGItems* RPGItems::create() +{ + RPGItems *obj = new RPGItems(); + if(obj) + { + obj->autorelease(); + return obj; + } + CC_SAFE_DELETE(obj); + return NULL; +} + +//RPGItems end + +RPGExistingItems::RPGExistingItems() +{ + +} + +RPGExistingItems::~RPGExistingItems() +{ + CCLog("RPGExistingItems 释放"); +} + +RPGExistingItems* RPGExistingItems::create() +{ + RPGExistingItems *obj = new RPGExistingItems(); + if(obj) + { + obj->autorelease(); + return obj; + } + CC_SAFE_DELETE(obj); + return NULL; +} + +//RPGExistingItems end diff --git a/Classes/RPGData.h b/Classes/RPGData.h index e87243a..bbb1339 100644 --- a/Classes/RPGData.h +++ b/Classes/RPGData.h @@ -79,6 +79,7 @@ class RPGSkill : public CCObject { public: + int m_dataId; string m_name; float m_skillAttack; int m_mp; @@ -89,4 +90,41 @@ public: static RPGSkill* create(); }; +class RPGItems : public CCObject +{ + +public: + + int m_dataId; + string m_name; + float m_buy; + float m_sell; + int m_type; + float m_attack; + float m_defense; + float m_speed; + float m_skillAttack; + float m_skillDefense; + + RPGItems(); + virtual ~RPGItems(); + + static RPGItems* create(); + +}; + +//现有道具,数据库没有这个表 +class RPGExistingItems : public RPGItems +{ + +public: + + int m_total; //该道具的个数 + + RPGExistingItems(); + virtual ~RPGExistingItems(); + + static RPGExistingItems* create(); +}; + #endif /* defined(__OzgGameRPG__RPGData__) */ diff --git a/Classes/RPGDialogLayer.cpp b/Classes/RPGDialogLayer.cpp new file mode 100644 index 0000000..00f028d --- /dev/null +++ b/Classes/RPGDialogLayer.cpp @@ -0,0 +1,118 @@ +// +// RPGDialogLayer.cpp +// OzgGameRPG +// +// Created by ozg on 14-3-30. +// +// + +#include "RPGDialogLayer.h" +#include "OzgCCUtility.h" + +RPGDialogLayer::RPGDialogLayer() +{ + +} + +RPGDialogLayer::~RPGDialogLayer() +{ + CCLog("RPGDialogLayer 释放"); +} + +bool RPGDialogLayer::init(string titleStr, string menuOKStr, int menuItemOKTag, float width, float height, CCObject* target, SEL_MenuHandler seletor) +{ + if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height)) + { + this->initCommons(titleStr); + + CCTMXTiledMap *mainBg = (CCTMXTiledMap*)this->getChildByTag(kRPGDialogLayerBg); + CCMenu *menu = (CCMenu*)mainBg->getChildByTag(kRPGDialogLayerBgMenu); + + CCLabelTTF *menuOKLab = CCLabelTTF::create(OzgCCUtility::generalString(CCString::create(menuOKStr)->getCString()).c_str(), "Arial", 20, CCSizeMake(120, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); + menuOKLab->setColor(ccc3(160, 160, 160)); + CCMenuItemLabel *menuOK = CCMenuItemLabel::create(menuOKLab, target, seletor); + menuOK->setTag(menuItemOKTag); + menuOK->setPosition(ccp(190, 60)); + menu->addChild(menuOK); + + return true; + } + return false; +} + +bool RPGDialogLayer::init(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor) +{ + if(CCLayerColor::initWithColor(ccc4(0, 0, 0, 200), width, height)) + { + this->initCommons(titleStr); + + CCTMXTiledMap *mainBg = (CCTMXTiledMap*)this->getChildByTag(kRPGDialogLayerBg); + CCMenu *menu = (CCMenu*)mainBg->getChildByTag(kRPGDialogLayerBgMenu); + + CCLabelTTF *menuOKLab = CCLabelTTF::create(OzgCCUtility::generalString(CCString::create(menuOKStr)->getCString()).c_str(), "Arial", 20, CCSizeMake(120, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); + menuOKLab->setColor(ccc3(160, 160, 160)); + CCMenuItemLabel *menuOK = CCMenuItemLabel::create(menuOKLab, target, seletor); + menuOK->setTag(menuItemOKTag); + menuOK->setPosition(ccp(100, 60)); + menu->addChild(menuOK); + + CCLabelTTF *menuCancelLab = CCLabelTTF::create(OzgCCUtility::generalString(CCString::create(menuCancelStr)->getCString()).c_str(), "Arial", 20, CCSizeMake(120, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); + menuCancelLab->setColor(ccc3(160, 160, 160)); + CCMenuItemLabel *menuCancel = CCMenuItemLabel::create(menuCancelLab, target, seletor); + menuCancel->setTag(menuItemCancelTag); + menuCancel->setPosition(ccp(280, 60)); + menu->addChild(menuCancel); + + return true; + } + + return false; +} + +RPGDialogLayer* RPGDialogLayer::create(string titleStr, string menuOKStr, int menuItemOKTag, float width, float height, CCObject* target, SEL_MenuHandler seletor) +{ + RPGDialogLayer *layer = new RPGDialogLayer(); + if(layer && layer->init(titleStr, menuOKStr, menuItemOKTag, width, height, target, seletor)) + { + layer->autorelease(); + + return layer; + } + CC_SAFE_DELETE(layer); + return NULL; +} + +RPGDialogLayer* RPGDialogLayer::create(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor) +{ + RPGDialogLayer *layer = new RPGDialogLayer(); + if(layer && layer->init(titleStr, menuOKStr, menuItemOKTag, menuCancelStr, menuItemCancelTag, width, height, target, seletor)) + { + layer->autorelease(); + + return layer; + } + CC_SAFE_DELETE(layer); + return NULL; +} + +//private +void RPGDialogLayer::initCommons(string titleStr) +{ + CCTMXTiledMap *mainBg = CCTMXTiledMap::create("alert_style1.tmx"); + float x = (CCDirector::sharedDirector()->getWinSize().width - mainBg->getContentSize().width) / 2.0f; + float y = (CCDirector::sharedDirector()->getWinSize().height - mainBg->getContentSize().height) / 2.0f; + mainBg->setPosition(ccp(x, y)); + mainBg->setTag(kRPGDialogLayerBg); + this->addChild(mainBg); + + CCLabelTTF *titleLab = CCLabelTTF::create(titleStr.c_str(), "Arial", 25, CCSizeMake(mainBg->getContentSize().width, 25), kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); + titleLab->setPosition(ccp(190, 135)); + titleLab->setColor(ccc3(255, 255, 255)); + mainBg->addChild(titleLab); + + CCMenu *menu = CCMenu::create(); + menu->setAnchorPoint(CCPointZero); + menu->setPosition(CCPointZero); + menu->setTag(kRPGDialogLayerBgMenu); + mainBg->addChild(menu); +} diff --git a/Classes/RPGDialogLayer.h b/Classes/RPGDialogLayer.h new file mode 100644 index 0000000..86ab6ab --- /dev/null +++ b/Classes/RPGDialogLayer.h @@ -0,0 +1,47 @@ +// +// RPGDialogLayer.h +// OzgGameRPG +// +// Created by ozg on 14-3-30. +// +// + +#ifndef __OzgGameRPG__RPGDialogLayer__ +#define __OzgGameRPG__RPGDialogLayer__ + +#include "cocos2d.h" + +USING_NS_CC; +using namespace std; + +enum RPGDialogLayerTag +{ + kRPGDialogLayerBg = 1, + kRPGDialogLayerBgMenu = 2 + +}; + +class RPGDialogLayer : public CCLayerColor +{ + +private: + void initCommons(string titleStr); + +public: + + RPGDialogLayer(); + virtual ~RPGDialogLayer(); + + //只有一个确定按钮 + bool init(string titleStr, string menuOKStr, int menuItemOKTag, float width, float height, CCObject* target, SEL_MenuHandler seletor); + + //有确定和取消的按钮 + bool init(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor); + + static RPGDialogLayer* create(string titleStr, string menuOKStr, int menuItemOKTag, float width, float height, CCObject* target, SEL_MenuHandler seletor); + + static RPGDialogLayer* create(string titleStr, string menuOKStr, int menuItemOKTag, string menuCancelStr, int menuItemCancelTag, float width, float height, CCObject* target, SEL_MenuHandler seletor); + +}; + +#endif /* defined(__OzgGameRPG__RPGDialogLayer__) */ diff --git a/Classes/RPGLoadingSceneLayer.cpp b/Classes/RPGLoadingSceneLayer.cpp index d8c2466..4945b2d 100755 --- a/Classes/RPGLoadingSceneLayer.cpp +++ b/Classes/RPGLoadingSceneLayer.cpp @@ -95,7 +95,7 @@ void RPGLoadingSceneLayer::executeLoading(float delay) CCTextureCache::sharedTextureCache()->addImageAsync(loadTexture->getCString(), this, callfuncO_selector(RPGLoadingSceneLayer::loadCallBack)); } else - this->goToNextScene(); + this->goToNextScene(0); } @@ -106,7 +106,7 @@ void RPGLoadingSceneLayer::loadCallBack(cocos2d::CCObject *sender) { //完毕 //CCLog("loading 100%%"); - this->goToNextScene(); + this->goToNextScene(0); } else { @@ -120,7 +120,7 @@ void RPGLoadingSceneLayer::loadCallBack(cocos2d::CCObject *sender) } -void RPGLoadingSceneLayer::goToNextScene() +void RPGLoadingSceneLayer::goToNextScene(float delay) { //CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo(); CCScene *s = NULL; diff --git a/Classes/RPGLoadingSceneLayer.h b/Classes/RPGLoadingSceneLayer.h index c0d0f12..515ade6 100755 --- a/Classes/RPGLoadingSceneLayer.h +++ b/Classes/RPGLoadingSceneLayer.h @@ -31,7 +31,7 @@ public: void executeLoading(float delay); void loadCallBack(CCObject* sender); - void goToNextScene(); + void goToNextScene(float delay); }; #endif /* defined(__OzgGameRPG__RPGLoadingSceneLayer__) */ diff --git a/Classes/RPGMapItemsMenuLayer.cpp b/Classes/RPGMapItemsMenuLayer.cpp index 11f99b2..cdfff91 100644 --- a/Classes/RPGMapItemsMenuLayer.cpp +++ b/Classes/RPGMapItemsMenuLayer.cpp @@ -9,6 +9,7 @@ #include "RPGMapItemsMenuLayer.h" #include "RPGMapMenuLayer.h" #include "RPGMapSceneLayer.h" +#include "RPGResultsLogic.h" RPGMapItemsMenuLayer::RPGMapItemsMenuLayer() { @@ -18,6 +19,7 @@ RPGMapItemsMenuLayer::RPGMapItemsMenuLayer() RPGMapItemsMenuLayer::~RPGMapItemsMenuLayer() { this->m_stringList->release(); + this->m_itemsList->release(); CCLog("RPGMapItemsMenuLayer 释放"); } @@ -31,6 +33,9 @@ bool RPGMapItemsMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB this->m_db = db; + this->m_itemsList = new CCArray(); + this->m_itemsList->init(); + CCMenu *mainMenu = CCMenu::create(); mainMenu->setTag(kRPGMapItemsMenuLayerTagMainMenu); mainMenu->setAnchorPoint(CCPointZero); @@ -52,6 +57,16 @@ bool RPGMapItemsMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB mainBg->setTag(kRPGMapItemsMenuLayerTagBg); this->addChild(mainBg); + CCTableView *tableView = CCTableView::create(this, CCSizeMake(900, 570)); + tableView->setDirection(kCCScrollViewDirectionVertical); + tableView->setPosition(ccp(80, 30)); + tableView->setDelegate(this); + tableView->setVerticalFillOrder(kCCTableViewFillTopDown); + tableView->setTag(kRPGMapItemsMenuLayerTagItemListTable); + this->addChild(tableView); + + this->loadItemsData(); + return true; } return false; @@ -69,7 +84,137 @@ RPGMapItemsMenuLayer* RPGMapItemsMenuLayer::create(cocos2d::CCDictionary *string return NULL; } +//CCTableView +void RPGMapItemsMenuLayer::scrollViewDidScroll(CCScrollView *scrollView) +{ + +} + +void RPGMapItemsMenuLayer::scrollViewDidZoom(CCScrollView *scrollView) +{ + +} + +void RPGMapItemsMenuLayer::tableCellTouched(CCTableView *tableView, CCTableViewCell *cell) +{ + +} + +CCSize RPGMapItemsMenuLayer::cellSizeForTable(CCTableView *tableView) +{ + return CCSizeMake(tableView->getContentSize().width, 80); +} + +CCTableViewCell* RPGMapItemsMenuLayer::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 < 4; i++) + { + int index = idx * 4 + i; + + if(index >= this->m_itemsList->count()) + break; + + RPGExistingItems *itemsData = (RPGExistingItems*)this->m_itemsList->objectAtIndex(index); + + CCControlButton *itemBtn = CCControlButton::create(CCString::createWithFormat("%s (%i)", itemsData->m_name.c_str(), itemsData->m_total)->getCString(), "Arial", 22); + itemBtn->setPosition(ccp(x, 0)); + itemBtn->setTag(itemsData->m_dataId); + itemBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(RPGMapItemsMenuLayer::onButton), CCControlEventTouchUpInside); + cell->addChild(itemBtn); + + //如果是非道具类的话,则禁用点击 + if(itemsData->m_type != 3) + { + itemBtn->setTitleColorForState(ccc3(144, 144, 144), CCControlStateNormal); + itemBtn->setEnabled(false); + } + + x += 200; + } + + return cell; +} + +unsigned int RPGMapItemsMenuLayer::numberOfCellsInTableView(CCTableView *tableView) +{ + int rowItemCount = 4; + int size = this->m_itemsList->count(); + + if(size % rowItemCount == 0) + return size / rowItemCount; + else + return size / rowItemCount + 1; +} +//CCTableView end + //private +void RPGMapItemsMenuLayer::loadItemsData() +{ + //道具数据 + this->m_itemsList->removeAllObjects(); + + CppSQLite3Query query = this->m_db->execQuery(SAVEDATA_QUERY); + while(!query.eof()) + { + string idList; + + JsonBox::Value json; + json.loadFromString(query.getStringField("items")); + + JsonBox::Array items = json.getArray(); + for (int i = 0; i < (int)items.size(); i++) + { + JsonBox::Value item = items[i].getObject(); + + RPGExistingItems *itemsData = RPGExistingItems::create(); + itemsData->m_total = item["total"].getInt(); + this->m_itemsList->addObject(itemsData); + + idList.append(CCString::createWithFormat("%i", item["id"].getInt())->getCString()); + + if(i + 1 < (int)items.size()) + idList.append(", "); + } + + int i = 0; + CppSQLite3Query itemsQuery = this->m_db->execQuery(CCString::createWithFormat(ITEMS_QUERY, idList.c_str())->getCString()); + while(!itemsQuery.eof()) + { + RPGExistingItems *itemsData = (RPGExistingItems*)this->m_itemsList->objectAtIndex(i); + itemsData->m_dataId = itemsQuery.getIntField("id"); + itemsData->m_name = itemsQuery.getStringField("name_cns"); + itemsData->m_buy = itemsQuery.getIntField("buy"); + itemsData->m_sell = itemsQuery.getIntField("sell"); + itemsData->m_type = itemsQuery.getIntField("type"); + itemsData->m_attack = itemsQuery.getFloatField("attack"); + itemsData->m_defense = itemsQuery.getFloatField("defense"); + itemsData->m_speed = itemsQuery.getFloatField("speed"); + itemsData->m_skillAttack = itemsQuery.getFloatField("skill_attack"); + itemsData->m_skillDefense = itemsQuery.getFloatField("skill_defense"); + + i++; + itemsQuery.nextRow(); + } + itemsQuery.finalize(); + + query.nextRow(); + } + query.finalize(); + + CCTableView *tableView = (CCTableView*)this->getChildByTag(kRPGMapItemsMenuLayerTagItemListTable); + tableView->reloadData(); +} + void RPGMapItemsMenuLayer::onMenu(cocos2d::CCObject *pObject) { CCMenuItem *menuItem = (CCMenuItem*)pObject; @@ -99,3 +244,67 @@ void RPGMapItemsMenuLayer::onMenu(cocos2d::CCObject *pObject) } } + +void RPGMapItemsMenuLayer::onDialog(cocos2d::CCObject *pObject) +{ + this->getParent()->removeChildByTag(kRPGMapItemsMenuLayerTagDialog, true); + this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true); + this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerLab, true); + this->setVisible(true); +} + +void RPGMapItemsMenuLayer::onButton(cocos2d::CCObject *pSender, CCControlEvent event) +{ + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + CCControlButton *itemBtn = (CCControlButton*)pSender; + for (int i = 0; i < this->m_itemsList->count(); i++) + { + //判断选中道具 + RPGExistingItems *itemsData = (RPGExistingItems*)this->m_itemsList->objectAtIndex(i); + if(itemBtn->getTag() == itemsData->m_dataId) + { + this->m_selectedItems = itemsData; + break; + } + } + + //因为动态获取地图的大小会导致了菜单层显示错位,所以定死了 + float width = 960; + float height = 640; + RPGMapChoicePlayerMenuLayer *choicePlayer = RPGMapChoicePlayerMenuLayer::create(this->m_db, 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); +} + +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) + { + //道具使用失败 + 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(kRPGMapSceneLayerTagChoicePlayerMenuLayer, true); + this->getParent()->removeChildByTag(kRPGMapSceneLayerTagChoicePlayerLab, true); + this->setVisible(true); + + this->loadItemsData(); + } +} diff --git a/Classes/RPGMapItemsMenuLayer.h b/Classes/RPGMapItemsMenuLayer.h index 41d575b..7d51774 100644 --- a/Classes/RPGMapItemsMenuLayer.h +++ b/Classes/RPGMapItemsMenuLayer.h @@ -15,6 +15,7 @@ #include "JsonBox.h" #include "RPGMapRoleSprite.h" #include "RPGBaseSceneLayer.h" +#include "RPGMapChoicePlayerMenuLayer.h" USING_NS_CC; USING_NS_CC_EXT; @@ -23,18 +24,29 @@ enum RPGMapItemsMenuLayerTag { kRPGMapItemsMenuLayerTagMainMenu = 1, kRPGMapItemsMenuLayerTagMainMenuBack = 2, - kRPGMapItemsMenuLayerTagBg = 3 - + kRPGMapItemsMenuLayerTagBg = 3, + kRPGMapItemsMenuLayerTagItemListTable = 4, + kRPGMapItemsMenuLayerTagDialogOK = 5, + kRPGMapItemsMenuLayerTagDialog = 86 }; -class RPGMapItemsMenuLayer : public CCLayerColor//, CCTableViewDelegate, CCTableViewDataSource +class RPGMapItemsMenuLayer : public CCLayerColor, CCTableViewDelegate, CCTableViewDataSource { private: CCDictionary* m_stringList; CppSQLite3DB* m_db; + CCArray* m_itemsList; + + RPGExistingItems* m_selectedItems; //选中的道具 + + void loadItemsData(); //读取道具的数据 void onMenu(cocos2d::CCObject *pObject); + void onDialog(cocos2d::CCObject *pObject); + + void onButton(CCObject* pSender, CCControlEvent event); //点击了items列表的其中一个后触发 + void onChoicePlayer(CCObject* pObject); //在player选择框中,选中一个player后触发 public: @@ -43,7 +55,20 @@ public: bool init(CCDictionary* stringList, CppSQLite3DB* db, float width, float height); static RPGMapItemsMenuLayer* 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__RPGMapItemsMenuLayer__) */ diff --git a/Classes/RPGMapMenuLayer.cpp b/Classes/RPGMapMenuLayer.cpp index 5023978..5938833 100755 --- a/Classes/RPGMapMenuLayer.cpp +++ b/Classes/RPGMapMenuLayer.cpp @@ -8,7 +8,7 @@ #include "RPGMapMenuLayer.h" #include "RPGMapSceneLayer.h" -#include "RPGConfirmLayer.h" +#include "RPGDialogLayer.h" #include "RPGStartSceneLayer.h" #include "JsonBox.h" #include "OzgCCUtility.h" @@ -147,37 +147,13 @@ void RPGMapMenuLayer::onMenu(cocos2d::CCObject *pObject) case kRPGMapMenuLayerTagMainMenuExit: { //退出 - RPGConfirmLayer *confirm = RPGConfirmLayer::create(((CCString*)this->m_stringList->objectForKey("confirm_exit"))->getCString(), ((CCString*)this->m_stringList->objectForKey("confirm_exit_ok"))->getCString(), kRPGMapMenuLayerTagConfirmExitOK, ((CCString*)this->m_stringList->objectForKey("confirm_cancel"))->getCString(), kRPGMapMenuLayerTagConfirmCancel, this->m_width, this->m_height, this, menu_selector(RPGMapMenuLayer::onMenu)); - confirm->setTag(kRPGMapMenuLayerTagConfirm); - this->addChild(confirm); + RPGDialogLayer *dialog = RPGDialogLayer::create(((CCString*)this->m_stringList->objectForKey("confirm_exit"))->getCString(), ((CCString*)this->m_stringList->objectForKey("confirm_exit_ok"))->getCString(), kRPGMapMenuLayerTagDialogExitOK, ((CCString*)this->m_stringList->objectForKey("confirm_cancel"))->getCString(), kRPGMapMenuLayerTagDialogCancel, this->m_width, this->m_height, this, menu_selector(RPGMapMenuLayer::onDialog)); + dialog->setTag(kRPGMapMenuLayerTagDialog); + this->addChild(dialog); CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); mainMenu->setEnabled(false); - } - break; - case kRPGMapMenuLayerTagConfirmExitOK: - { - //确定退出 - RPGMapSceneLayer *mapSceneLayer = (RPGMapSceneLayer*)this->getParent(); - mapSceneLayer->m_releaseTexture = true; - - CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(mapSceneLayer); - mapSceneLayer->unscheduleUpdate(); - - SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true); - - CCScene *s = RPGStartSceneLayer::scene(); - CCTransitionFade *t = CCTransitionFade::create(GAME_SCENE, s); - CCDirector::sharedDirector()->replaceScene(t); - } - break; - case kRPGMapMenuLayerTagConfirmCancel: - { - this->removeChildByTag(kRPGMapMenuLayerTagConfirm, true); - - CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); - mainMenu->setEnabled(true); } break; case kRPGMapMenuLayerTagMainMenuItems: @@ -200,6 +176,40 @@ void RPGMapMenuLayer::onMenu(cocos2d::CCObject *pObject) } +void RPGMapMenuLayer::onDialog(cocos2d::CCObject *pObject) +{ + CCMenuItem *menuItem = (CCMenuItem*)pObject; + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + switch (menuItem->getTag()) + { + case kRPGMapMenuLayerTagDialogExitOK: + { + //确定退出 + RPGMapSceneLayer *mapSceneLayer = (RPGMapSceneLayer*)this->getParent(); + mapSceneLayer->m_releaseTexture = true; + + CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(mapSceneLayer); + mapSceneLayer->unscheduleUpdate(); + + SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true); + + CCScene *s = RPGStartSceneLayer::scene(); + CCTransitionFade *t = CCTransitionFade::create(GAME_SCENE, s); + CCDirector::sharedDirector()->replaceScene(t); + } + break; + case kRPGMapMenuLayerTagDialogCancel: + { + this->removeChildByTag(kRPGMapMenuLayerTagDialog, true); + + CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); + mainMenu->setEnabled(true); + } + break; + } +} + void RPGMapMenuLayer::createMenuItem(float x, float y, CCString *text, RPGMapMenuLayerTag tag) { CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGMapMenuLayerTagMainMenu); diff --git a/Classes/RPGMapMenuLayer.h b/Classes/RPGMapMenuLayer.h index 1bc2724..3617305 100755 --- a/Classes/RPGMapMenuLayer.h +++ b/Classes/RPGMapMenuLayer.h @@ -30,9 +30,9 @@ enum RPGMapMenuLayerTag kRPGMapMenuLayerTagMainMenuClose = 7, kRPGMapMenuLayerTagMainMenuExit = 8, kRPGMapMenuLayerTagHandCursor = 22, - kRPGMapMenuLayerTagConfirmExitOK = 9, - kRPGMapMenuLayerTagConfirmCancel = 10, - kRPGMapMenuLayerTagConfirm = 11, + kRPGMapMenuLayerTagDialogExitOK = 9, + kRPGMapMenuLayerTagDialogCancel = 10, + kRPGMapMenuLayerTagDialog = 11, kRPGMapMenuLayerTagStatusPlayerName = 13, kRPGMapMenuLayerTagStatusPlayerLevel = 14, kRPGMapMenuLayerTagStatusPlayerHP = 15, @@ -64,6 +64,8 @@ private: float m_height; void onMenu(CCObject *pObject); + void onDialog(CCObject *pObject); + void createMenuItem(float x, float y, CCString *text, RPGMapMenuLayerTag tag); void setMainMenuDefault(); //显示右边的菜单 diff --git a/Classes/RPGMapNPCRoleSprite.h b/Classes/RPGMapNPCRoleSprite.h index c394b90..077a1aa 100755 --- a/Classes/RPGMapNPCRoleSprite.h +++ b/Classes/RPGMapNPCRoleSprite.h @@ -15,7 +15,7 @@ class RPGMapNPCRoleSprite : public RPGMapRoleSprite { private: - bool m_autoMove = false; + bool m_autoMove; void autoMove(float delay); void autoMoveEnd(); diff --git a/Classes/RPGMapSceneLayer.h b/Classes/RPGMapSceneLayer.h index dbc82d8..7993263 100755 --- a/Classes/RPGMapSceneLayer.h +++ b/Classes/RPGMapSceneLayer.h @@ -19,6 +19,8 @@ enum RPGMapSceneLayerTag kRPGMapSceneLayerTagMainMenu = 3, kRPGMapSceneLayerTagMainMenuCommand = 4, kRPGMapSceneLayerTagMenuLayer = 5, + kRPGMapSceneLayerTagChoicePlayerMenuLayer = 6, + kRPGMapSceneLayerTagChoicePlayerLab = 7, kRPGMapSceneLayerTagPlayer = 1999, kRPGMapSceneLayerTagNPC = 2000 diff --git a/Classes/RPGMapSkillMenuLayer.cpp b/Classes/RPGMapSkillMenuLayer.cpp index e7812d6..af44731 100644 --- a/Classes/RPGMapSkillMenuLayer.cpp +++ b/Classes/RPGMapSkillMenuLayer.cpp @@ -47,7 +47,7 @@ bool RPGMapSkillMenuLayer::init(cocos2d::CCDictionary *stringList, CppSQLite3DB mainMenu->addChild(menuBack); } - CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu3_style1.tmx"); + CCTMXTiledMap *mainBg = CCTMXTiledMap::create("map_menu5_style1.tmx"); mainBg->setPosition(CCPointZero); mainBg->setTag(kRPGMapSkillMenuLayerTagBg); this->addChild(mainBg); diff --git a/Classes/RPGMapStatusMenuLayer.cpp b/Classes/RPGMapStatusMenuLayer.cpp index 55888b1..6a6134a 100644 --- a/Classes/RPGMapStatusMenuLayer.cpp +++ b/Classes/RPGMapStatusMenuLayer.cpp @@ -12,7 +12,7 @@ #include "OzgCCUtility.h" //获取一个player的详细数据 -#define PLAYER_QUERY_DETAIL "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 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)" @@ -185,7 +185,7 @@ void RPGMapStatusMenuLayer::setStatusPlayer(int dataId) { this->removeAllPlayerLab(); - CppSQLite3Query query = this->m_db->execQuery(CCString::createWithFormat(PLAYER_QUERY_DETAIL, dataId)->getCString()); + CppSQLite3Query query = this->m_db->execQuery(CCString::createWithFormat(PLAYER_DETAIL_QUERY, dataId)->getCString()); while(!query.eof()) { //左边 @@ -228,6 +228,7 @@ void RPGMapStatusMenuLayer::setStatusPlayer(int dataId) 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"); diff --git a/Classes/RPGResultsLogic.cpp b/Classes/RPGResultsLogic.cpp new file mode 100644 index 0000000..2bf1288 --- /dev/null +++ b/Classes/RPGResultsLogic.cpp @@ -0,0 +1,118 @@ +// +// RPGResultsLogic.cpp +// OzgGameRPG +// +// Created by ozg on 14-4-13. +// +// + +#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" + +//使用道具后现有道具的变化 +#define SAVEDATA_ITEMS_UPDATE "update save_data set items = '%s' where id = 1" + +void RPGResultsLogic::deductionsItems(CppSQLite3DB *db, int itemsId) +{ + CppSQLite3Query query = db->execQuery(SAVEDATA_QUERY); + while(!query.eof()) + { + JsonBox::Value json; + json.loadFromString(query.getStringField("items")); + + JsonBox::Array resultsJsonArr; //输出结果 + + JsonBox::Array items = json.getArray(); + for (int i = 0; i < (int)items.size(); i++) + { + JsonBox::Value item = items[i].getObject(); + + //扣减目标id + if(item["id"].getInt() == itemsId) + item["total"] = item["total"].getInt() - 1; + + //如果该道具没有用完,则加入输出结果 + if(item["total"].getInt() > 0) + resultsJsonArr.push_back(item); + } + + ostringstream s; + ((JsonBox::Value)resultsJsonArr).writeToStream(s); + string result = s.str(); +// CCLog("%s", result.c_str()); + db->execDML(CCString::createWithFormat(SAVEDATA_ITEMS_UPDATE, result.c_str())->getCString()); + + query.nextRow(); + } + query.finalize(); +} + +bool RPGResultsLogic::useItems(CppSQLite3DB* db, int playerId, int itemsId) +{ + /* + 6 草药 + 7 党参 + 8 复活药 + + */ + + string field; + string maxField; + if(itemsId == 7) + { + field = "mp"; //党参加mp + maxField = "max_mp"; + } + else + { + field = "hp"; + maxField = "max_hp"; + } + + //道具的效果值 + int results = 0; + + CppSQLite3Query query = db->execQuery(CCString::createWithFormat(PLAYER_DETAIL_QUERY, playerId)->getCString()); + while(!query.eof()) + { + //死亡状态下不能直接恢复hp的道具 + if(query.getIntField("hp") <= 0 && itemsId != 8) + return false; + else if(query.getIntField("hp") <= 0 && itemsId == 8) + results = 1; //复活后是1HP + else if(query.getIntField("hp") > 0 && itemsId == 8) + return false; //活着的人不能使用复活药 + else + { + //恢复HP或MP + results = RPGComputingResults::itemCure(itemsId); + results += query.getIntField(field.c_str()); + + //超过最大值的处理 + if(results > query.getIntField(maxField.c_str())) + results = query.getIntField(maxField.c_str()); + } + + query.nextRow(); + } + query.finalize(); + + //使用道具 + { + CCString *sql = CCString::createWithFormat(ITEMS_USE_UPDATE, field.c_str(), results, playerId); + db->execDML(sql->getCString()); + + CCLog("%s", sql->getCString()); + } + + //扣减道具数 + RPGResultsLogic::deductionsItems(db, itemsId); + + CCLog("对player%d 使用了一个道具%d", playerId, itemsId); + return true; +} diff --git a/Classes/RPGResultsLogic.h b/Classes/RPGResultsLogic.h new file mode 100644 index 0000000..861e555 --- /dev/null +++ b/Classes/RPGResultsLogic.h @@ -0,0 +1,30 @@ +// +// RPGResultsLogic.h +// OzgGameRPG +// +// Created by ozg on 14-4-13. +// +// + +#ifndef __OzgGameRPG__RPGResultsLogic__ +#define __OzgGameRPG__RPGResultsLogic__ + +#include "cocos2d.h" +#include "OzgCCUtility.h" +#include "RPGComputingResults.h" +#include "CppSQLite3.h" +#include "JsonBox.h" + +USING_NS_CC; +using namespace std; + +class RPGResultsLogic +{ + +public: + static void deductionsItems(CppSQLite3DB* db, int itemsId); //扣减道具数 + static bool useItems(CppSQLite3DB* db, int playerId, int itemsId); //使用道具,返回成功或失败 + +}; + +#endif /* defined(__OzgGameRPG__RPGResultsLogic__) */ diff --git a/Classes/RPGStartSceneLayer.cpp b/Classes/RPGStartSceneLayer.cpp index 2b4526b..8a71cc9 100755 --- a/Classes/RPGStartSceneLayer.cpp +++ b/Classes/RPGStartSceneLayer.cpp @@ -100,28 +100,12 @@ void RPGStartSceneLayer::onMenu(cocos2d::CCObject *pObject) { CCSize winSize = CCDirector::sharedDirector()->getWinSize(); - RPGConfirmLayer *confirm = RPGConfirmLayer::create(((CCString*)this->m_stringList->objectForKey("confirm_delete"))->getCString(), ((CCString*)this->m_stringList->objectForKey("confirm_ok"))->getCString(), kRPGStartSceneLayerTagMenuItemConfirmOK, ((CCString*)this->m_stringList->objectForKey("confirm_cancel"))->getCString(), kRPGStartSceneLayerTagMenuItemConfirmCancel, winSize.width, winSize.height, this, menu_selector(RPGStartSceneLayer::onMenu)); - confirm->setTag(kRPGStartSceneLayerTagConfirm); - this->addChild(confirm); + RPGDialogLayer *dialog = RPGDialogLayer::create(((CCString*)this->m_stringList->objectForKey("confirm_delete"))->getCString(), ((CCString*)this->m_stringList->objectForKey("confirm_ok"))->getCString(), kRPGStartSceneLayerTagDialogOK, ((CCString*)this->m_stringList->objectForKey("confirm_cancel"))->getCString(), kRPGStartSceneLayerTagDialogCancel, winSize.width, winSize.height, this, menu_selector(RPGStartSceneLayer::onDialog)); + dialog->setTag(kRPGStartSceneLayerTagDialog); + this->addChild(dialog); CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGStartSceneLayerTagMenu); mainMenu->setEnabled(false); - } - break; - case kRPGStartSceneLayerTagMenuItemConfirmOK: - { - this->m_db.execDML("delete from save_data; delete from player;"); - this->m_db.execDML(GAME_INIT_SQL); - - this->goToMapScene(); - } - break; - case kRPGStartSceneLayerTagMenuItemConfirmCancel: - { - this->removeChildByTag(kRPGStartSceneLayerTagConfirm, true); - - CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGStartSceneLayerTagMenu); - mainMenu->setEnabled(true); } break; default: @@ -134,6 +118,35 @@ void RPGStartSceneLayer::onMenu(cocos2d::CCObject *pObject) } +void RPGStartSceneLayer::onDialog(cocos2d::CCObject *pObject) +{ + SimpleAudioEngine::sharedEngine()->playEffect("audio_effect_btn.wav"); + + CCMenuItem *menuItem = (CCMenuItem*)pObject; + + switch (menuItem->getTag()) + { + case kRPGStartSceneLayerTagDialogCancel: + { + this->removeChildByTag(kRPGStartSceneLayerTagDialog, true); + + CCMenu *mainMenu = (CCMenu*)this->getChildByTag(kRPGStartSceneLayerTagMenu); + mainMenu->setEnabled(true); + } + break; + default: + { + //kRPGStartSceneLayerTagMenuItemDialogOK + + this->m_db.execDML("delete from save_data;"); + this->m_db.execDML(GAME_INIT_SQL); + + this->goToMapScene(); + } + break; + } +} + void RPGStartSceneLayer::goToMapScene() { CCArray *loadTextures = CCArray::create(); diff --git a/Classes/RPGStartSceneLayer.h b/Classes/RPGStartSceneLayer.h index f16c9e3..1dd3d5a 100755 --- a/Classes/RPGStartSceneLayer.h +++ b/Classes/RPGStartSceneLayer.h @@ -18,9 +18,9 @@ enum RPGStartSceneLayerTag kRPGStartSceneLayerTagMenu = 2, kRPGStartSceneLayerTagMenuItemStart = 3, kRPGStartSceneLayerTagMenuItemDelete = 4, - kRPGStartSceneLayerTagMenuItemConfirmOK = 5, - kRPGStartSceneLayerTagMenuItemConfirmCancel = 6, - kRPGStartSceneLayerTagConfirm = 7 + kRPGStartSceneLayerTagDialogOK = 5, + kRPGStartSceneLayerTagDialogCancel = 6, + kRPGStartSceneLayerTagDialog = 7 }; class RPGStartSceneLayer : public RPGBaseSceneLayer @@ -28,7 +28,8 @@ class RPGStartSceneLayer : public RPGBaseSceneLayer private: void onMenu(CCObject *pObject); - + void onDialog(CCObject *pObject); + public: RPGStartSceneLayer(); diff --git a/README.md b/README.md index 5ce0d89..4bc5bc4 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ ozg game — 单机版RPG 目前只在iOS平台下进行测试,战斗画面的攻击、技能、道具,地图界面的技能、道具均未完成。 +每次更新数据库都需要把模拟器里面的数据库删除。 + ![](https://raw.github.com/ouzhigang/OzgGameRPG/master/screenshot1.png) ![](https://raw.github.com/ouzhigang/OzgGameRPG/master/screenshot2.png) diff --git a/Resources/db.sys b/Resources/db.sys index b40050a..6c9cdce 100755 Binary files a/Resources/db.sys and b/Resources/db.sys differ diff --git a/Resources/map_menu5_style1.tmx b/Resources/map_menu5_style1.tmx new file mode 100755 index 0000000..ec7c4c8 --- /dev/null +++ b/Resources/map_menu5_style1.tmx @@ -0,0 +1,16 @@ + + + + + + + + eJztwzENAEAIBLDTwvr418eKgJ9Im7STtKqq3z5PL1VVVVVVVV0HugBaeA== + + + + + eJzt2TsKgDAABNFtojaCjWDj5/6nNIW1VTA4uwPb+5oQSZE0mGyqm+XTonjJOXrX3h/xYfGyc/TudYfJrrqiNneX8QfL/YpdvOziZRcvu3jZxcvO7X9wU7zkHL1u51W83OJlFy+7eNnFy87R2/J98HzW+x3w7X3wBg8OFYQ= + + + diff --git a/Resources/scene_map_cns.plist b/Resources/scene_map_cns.plist index f62c506..263410e 100755 --- a/Resources/scene_map_cns.plist +++ b/Resources/scene_map_cns.plist @@ -42,6 +42,10 @@ 状态 menu_items 道具 + menu_items_choice + 对谁使用[%s]呢? + menu_items_fail + 道具使用失败 menu_equip 装备 diff --git a/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj b/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj index 571f4fd..eb560f1 100644 --- a/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj +++ b/proj.ios/OzgGameRPG.xcodeproj/project.pbxproj @@ -220,7 +220,7 @@ 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 */; }; - 8960C18218E7D51C0075EF99 /* RPGConfirmLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8960C18018E7D51C0075EF99 /* RPGConfirmLayer.cpp */; }; + 8960C18218E7D51C0075EF99 /* RPGDialogLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8960C18018E7D51C0075EF99 /* RPGDialogLayer.cpp */; }; 896BAEE618EF04CF006581FD /* audio_battle_end.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 896BAEE318EF04CF006581FD /* audio_battle_end.mp3 */; }; 896BAEE718EF04CF006581FD /* audio_battle_menu.wav in Resources */ = {isa = PBXBuildFile; fileRef = 896BAEE418EF04CF006581FD /* audio_battle_menu.wav */; }; 896BAEE818EF04CF006581FD /* audio_battle_start.wav in Resources */ = {isa = PBXBuildFile; fileRef = 896BAEE518EF04CF006581FD /* audio_battle_start.wav */; }; @@ -229,6 +229,8 @@ 8988A4E318F42EDB004277ED /* RPGComputingResults.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8988A4E118F42EDB004277ED /* RPGComputingResults.cpp */; }; 8999051A18F17A3D00012A0E /* RPGBattleMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8999051818F17A3D00012A0E /* RPGBattleMenu.cpp */; }; 8999051D18F17E6C00012A0E /* battle_battlemenu_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8999051C18F17E6C00012A0E /* battle_battlemenu_style1.tmx */; }; + 89B2115B18FAAC3B0019F01C /* map_menu5_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 89B2115A18FAAC3B0019F01C /* map_menu5_style1.tmx */; }; + 89B2115E18FAC7180019F01C /* RPGResultsLogic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 89B2115C18FAC7180019F01C /* RPGResultsLogic.cpp */; }; 89CB7D7F18E9A47800A5921B /* map_menu1_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 89CB7D7C18E9A47800A5921B /* map_menu1_style1.tmx */; }; 89CB7D8018E9A47800A5921B /* map_menu2_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 89CB7D7D18E9A47800A5921B /* map_menu2_style1.tmx */; }; 89CB7D8118E9A47800A5921B /* map_menu3_style1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 89CB7D7E18E9A47800A5921B /* map_menu3_style1.tmx */; }; @@ -827,8 +829,8 @@ 895EC07118F05AE600C3814D /* RPGData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGData.cpp; path = ../Classes/RPGData.cpp; sourceTree = ""; }; 895EC07218F05AE600C3814D /* RPGData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGData.h; path = ../Classes/RPGData.h; sourceTree = ""; }; 8960C17E18E7D0BD0075EF99 /* alert_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = alert_style1.tmx; sourceTree = ""; }; - 8960C18018E7D51C0075EF99 /* RPGConfirmLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGConfirmLayer.cpp; path = ../Classes/RPGConfirmLayer.cpp; sourceTree = ""; }; - 8960C18118E7D51C0075EF99 /* RPGConfirmLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGConfirmLayer.h; path = ../Classes/RPGConfirmLayer.h; sourceTree = ""; }; + 8960C18018E7D51C0075EF99 /* RPGDialogLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGDialogLayer.cpp; path = ../Classes/RPGDialogLayer.cpp; sourceTree = ""; }; + 8960C18118E7D51C0075EF99 /* RPGDialogLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGDialogLayer.h; path = ../Classes/RPGDialogLayer.h; sourceTree = ""; }; 896BAEE318EF04CF006581FD /* audio_battle_end.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = audio_battle_end.mp3; sourceTree = ""; }; 896BAEE418EF04CF006581FD /* audio_battle_menu.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = audio_battle_menu.wav; sourceTree = ""; }; 896BAEE518EF04CF006581FD /* audio_battle_start.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = audio_battle_start.wav; sourceTree = ""; }; @@ -839,6 +841,9 @@ 8999051818F17A3D00012A0E /* RPGBattleMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGBattleMenu.cpp; path = ../Classes/RPGBattleMenu.cpp; sourceTree = ""; }; 8999051918F17A3D00012A0E /* RPGBattleMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGBattleMenu.h; path = ../Classes/RPGBattleMenu.h; sourceTree = ""; }; 8999051C18F17E6C00012A0E /* battle_battlemenu_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = battle_battlemenu_style1.tmx; sourceTree = ""; }; + 89B2115A18FAAC3B0019F01C /* map_menu5_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = map_menu5_style1.tmx; sourceTree = ""; }; + 89B2115C18FAC7180019F01C /* RPGResultsLogic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RPGResultsLogic.cpp; path = ../Classes/RPGResultsLogic.cpp; sourceTree = ""; }; + 89B2115D18FAC7180019F01C /* RPGResultsLogic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RPGResultsLogic.h; path = ../Classes/RPGResultsLogic.h; sourceTree = ""; }; 89CB7D7C18E9A47800A5921B /* map_menu1_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = map_menu1_style1.tmx; sourceTree = ""; }; 89CB7D7D18E9A47800A5921B /* map_menu2_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = map_menu2_style1.tmx; sourceTree = ""; }; 89CB7D7E18E9A47800A5921B /* map_menu3_style1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = map_menu3_style1.tmx; sourceTree = ""; }; @@ -2370,10 +2375,12 @@ 89F5D0D718E7C579009D703C /* RPGMapSceneLayer.h */, 89F5D0D818E7C579009D703C /* RPGStartSceneLayer.cpp */, 89F5D0D918E7C579009D703C /* RPGStartSceneLayer.h */, - 8960C18018E7D51C0075EF99 /* RPGConfirmLayer.cpp */, - 8960C18118E7D51C0075EF99 /* RPGConfirmLayer.h */, + 8960C18018E7D51C0075EF99 /* RPGDialogLayer.cpp */, + 8960C18118E7D51C0075EF99 /* RPGDialogLayer.h */, 8988A4E118F42EDB004277ED /* RPGComputingResults.cpp */, 8988A4E218F42EDB004277ED /* RPGComputingResults.h */, + 89B2115C18FAC7180019F01C /* RPGResultsLogic.cpp */, + 89B2115D18FAC7180019F01C /* RPGResultsLogic.h */, F293BB7E15EB831F00256477 /* AppDelegate.cpp */, F293BB7F15EB831F00256477 /* AppDelegate.h */, ); @@ -2400,6 +2407,7 @@ 89CB7D7D18E9A47800A5921B /* map_menu2_style1.tmx */, 89CB7D7E18E9A47800A5921B /* map_menu3_style1.tmx */, 9E427D0418EBBA9F00DA4E79 /* map_menu4_style1.tmx */, + 89B2115A18FAAC3B0019F01C /* map_menu5_style1.tmx */, 89F5D14E18E7C5E5009D703C /* db.sys */, 89F5D12C18E7C5DD009D703C /* joystick.plist */, 89F5D12D18E7C5DD009D703C /* joystick.png */, @@ -2568,6 +2576,7 @@ 89E63C7718ED83C900BDD04F /* actor5_2.png in Resources */, 89CB7D7F18E9A47800A5921B /* map_menu1_style1.tmx in Resources */, 89F5D12A18E7C5CC009D703C /* audio_map_03.mp3 in Resources */, + 89B2115B18FAAC3B0019F01C /* map_menu5_style1.tmx in Resources */, 89E63C7D18ED83C900BDD04F /* actor8_3.png in Resources */, 89F5D11A18E7C5C0009D703C /* actor111.png in Resources */, 89E63C7B18ED83C900BDD04F /* actor8_1.png in Resources */, @@ -2764,6 +2773,7 @@ 298B2A3618D0671400C1920F /* LoadingBarReader.cpp in Sources */, 15C1552A1683118600D239F2 /* b2PolygonShape.cpp in Sources */, 15C1552B1683118600D239F2 /* b2BlockAllocator.cpp in Sources */, + 89B2115E18FAC7180019F01C /* RPGResultsLogic.cpp in Sources */, 89F5D0DD18E7C579009D703C /* OzgJoystickLayer.cpp in Sources */, 15CA8CF618696744000032AB /* lua_cocos2dx_manual.cpp in Sources */, 15C1552C1683118600D239F2 /* b2Draw.cpp in Sources */, @@ -2843,7 +2853,7 @@ 89EA57E218EB16F100A10956 /* Escaper.cpp in Sources */, ED35C0F318323498002A0750 /* UISlider.cpp in Sources */, 46C1009116BF786A00F74D54 /* LuaCocos2d.cpp in Sources */, - 8960C18218E7D51C0075EF99 /* RPGConfirmLayer.cpp in Sources */, + 8960C18218E7D51C0075EF99 /* RPGDialogLayer.cpp in Sources */, 46C1009216BF786A00F74D54 /* CCLuaObjcBridge.mm in Sources */, 46C1009316BF786A00F74D54 /* tolua_fix.c in Sources */, 1A40E7DF1727C47E006D4861 /* Animation.cpp in Sources */, 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 01f2985..adfd520 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 5ea6bd1..a3245fd 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 diff --git a/proj.ios/OzgGameRPG.xcodeproj/xcuserdata/tpwid.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/proj.ios/OzgGameRPG.xcodeproj/xcuserdata/tpwid.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/proj.ios/OzgGameRPG.xcodeproj/xcuserdata/tpwid.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + +