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平台下进行测试,战斗画面的攻击、技能、道具,地图界面的技能、道具均未完成。
+每次更新数据库都需要把模拟器里面的数据库删除。
+


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 @@
+
+
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 @@
+
+
+