lua -- 商店的数据管理类
module (..., package.seeall)
local ShopM = {}
local SystemPrompt = require(__APP_PACKAGE_NAME__ .. ".scenes.common.SystemPrompt")
local Item = require("res.scripts.data.model.Item"); function ShopM:init()
-- 每个数据类都有一个对应的id
self.mid = getNextID();
self.refeshCountDown =
self.CurrentItem = {};
self.NowItem = nil;
-- 从配置表中获取配置数据,这里是以json的形式
self.shopprop = DB.getTable("shopprop")[]
self.shopitemprop = DB.getTable("shopitemprop")
if self.shopprop == nil then
printf("shopprop is nil");
end
if self.shopitemprop == nil then
printf("shopitemprop is nil");
end
-- 注册网络消息,用于接收服务器返回的数据,并对数据进行处理
NetController:registerMsg(MsgID.msgid_P_OPSHOP_ACK, self.mid, function ( dwSessionID, wMsgSID, wMsgID, pszMsg )
print("==============打开背包界面==============")
-- 将json数据转成表的格式
self.openNetData = CJson.decode(pszMsg);
if ~= self.openNetData.ErrCode then
SystemPrompt.new(Errdef.ERR_ALL[self.openNetData.ErrCode]);
SceneM.destroyNetLayer();
return
end
-- 处理数据
self:setData(self.openNetData);
-- 发送本地的事件消息
NotificationCenter:postEvent(MsgID.msgid_P_OPSHOP_ACK, {});
end, MAXPRIORITY); NetController:registerMsg(MsgID.msgid_P_BITEM_ACK, self.mid, function ( dwSessionID, wMsgSID, wMsgID, pszMsg )
print("==============购买道具==============")
self.openNetData = CJson.decode(pszMsg);
if ~= self.openNetData.ErrCode then
UISystemTips:SystemTips(self.openNetData.ErrCode);
return
end
self:setDataAfterBuy(self.openNetData);
NotificationCenter:postEvent(MsgID.msgid_P_BITEM_ACK, {});
end, MAXPRIORITY); NetController:registerMsg(MsgID.msgid_P_RITEM_ACK, self.mid, function ( dwSessionID, wMsgSID, wMsgID, pszMsg )
print("==============刷新道具==============")
self.openNetData = CJson.decode(pszMsg);
if ~= self.openNetData.ErrCode then
SystemPrompt.new(Errdef.ERR_ALL[self.openNetData.ErrCode]);
SceneM.destroyNetLayer();
return
end
self:setData(self.openNetData);
NotificationCenter:postEvent(MsgID.msgid_P_RITEM_ACK, {});
end, MAXPRIORITY); end function ShopM:cleanup( ) end function ShopM:setData( data )
self.itemList = {};
self.gridList = {};
local pos = ;
local itemInfo = data.ItemInfo
for i = , #itemInfo do
print("========ShopM:setData========" .. itemInfo[i].KindID);
local kindID = itemInfo[i].KindID
local num = itemInfo[i].Num
local itemType = math.modf(kindID/);
local itemData={ID=kindID, Idx=, Level=, Num=num}
self.itemList[pos] = Item.new(itemType, pos, itemData)
if kindID == then
self.itemList[pos].sell = -;
end
pos = pos+
end printf("ShopM:setData RCD:" .. data.RCD)
self.refeshCountDown = data.RCD
PlayerM:getBaseData().coin = data.CurCoin;
PlayerM:getBaseData().gold = data.CurGold;
end function ShopM:setDataAfterBuy( data )
printf(" before buy num:" .. #self.itemList)
if self.itemList[data.GridIdx] == nil then
printf(" item[" .. data.GridIdx .. "] is nil")
end
self.itemList[data.GridIdx].sell = -;
printf(" after buy num:" .. #self.itemList)
PlayerM:getBaseData().coin = data.CurCoin;
PlayerM:getBaseData().gold = data.CurGold;
end function ShopM:getItemLst( )
return self.itemList
end function ShopM:getShowGridNum( )
return -- todo
end function ShopM:getRefeshCountDown( )
return self.refeshCountDown
end function ShopM:getRefeshGold( )
if self.shopprop == nil then
return
end
return self.shopprop.NoCDGold
end
function ShopM:getRefeshCoin( )
printf("getRefeshCoin")
if self.shopprop == nil then
printf("getRefeshCoin2")
return
end
printf("getRefeshCoin3")
return self.shopprop.RefreshCoin
end function ShopM:getBuyGold( gridIdx )
printf("getBuyGold:" .. gridIdx)
if self.shopitemprop == nil then
printf("getBuyGold2")
return
end local gridProp = self.shopitemprop[gridIdx]
if gridProp == nil then
printf("getBuyGold3")
return
end
printf("======gridProp.BuyGold=======" .. gridProp.BuyGold);
return gridProp.BuyGold
end function ShopM:getBuyCoin( gridIdx )
if self.shopitemprop == nil then
return
end local gridProp = self.shopitemprop[gridIdx]
if gridProp == nil then
return
end
return gridProp.BuyCoin
end -- 这里要有一个return
return ShopM;
lua -- 商店的数据管理类的更多相关文章
- cocos进阶教程(1)Lua调用自定义C++类和函数的最佳实践
第一层:纯C环境下,把C函数注册进Lua环境 a.lua 文件 )) a.c 文件 #include <lua.h> #include <lualib.h> #include ...
- Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]
Cocos2d-x下Lua调用C++这事之所以看起来这么复杂.网上所有的文档都没讲清楚,是因为存在5个层面的知识点: 1.在纯C环境下,把C函数注册进Lua环境,理解Lua和C之间可以互相调用的本质 ...
- 【转】Cocos2d-x下Lua调用自定义C++类和函数的最佳实践
转自:http://segmentfault.com/blog/hongliang/1190000000631630 关于cocos2d-x下Lua调用C++的文档看了不少,但没有一篇真正把这事给讲明 ...
- Lua调用自定义C++类
弄了一天终于会Lua调用自定义C++类.不容易啊. 我的电脑是64位的,装了64的Python不行,装了32位的就可以了,靠!下面是报错信息 python pyyaml Cheetah全都是装32位的 ...
- cocos2d-x 3.0 在lua中调用自定义类
环境 windows8, cocos2d-x 3.0, 现在开始安装需要的一些其它包 1. 按README.mdown文档上面要求的, 下载在windows下要安装的东东, 主要就是python2.7 ...
- Cocos2d-x Lua中Sprite精灵类
精灵类是Sprite,它的类图如下图所示. Sprite类图 Sprite类直接继承了Node类,具有Node基本特征.此外,我们还可以看到Sprite类的子类有:PhysicsSprite和Skin ...
- 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之四】使用绑定C++至Lua的自己定义类
续[Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三]动手绑定自己定义类至Lua 之后.我们已经完毕了自己定义类至Lua的绑定.在接下来的环节,我们将使用它. 首先,我们须要确定 ...
- ulua c#调用lua中模拟的类成员函数
项目使用ulua,我神烦这个东西.lua单纯在lua环境使用还好,一旦要跟外界交互,各种月经不调就来了.要记住贼多的细节,你才能稍微处理好.一个破栈,pop来push去,位置一会在-1,一会在-3,2 ...
- lua的table元类
Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加.假设a和b都是table,通过元表可以定义如何计算表达式a+b.当Lua试图将两个table相加时, ...
随机推荐
- centos7下安装nginx(转)
一.下载nginx安装包 访问地址:https://nginx.org 根据自己的需求下载合适的安装包 二.安装gcc gcc是用来编译下载下来的nginx源码 yum install gcc-c++ ...
- Spring MVC测试框架详解——服务端测试
随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...
- 【CAS单点登录视频教程】 第04集 -- tomcat下配置https环境
目录 ----------------------------------------- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthenticati ...
- Git: fatal: Pathspec is in submodule
出现是问题: git提交代码是出现fatal: Path 'directory/file' is in submodule 'directory''错误 Removing the directory ...
- ubuntu设置自动关机
windows可以设置自动关机时间.那么ubuntu的命令是什么呢? 首先要能拿到sudo权限,还好我是在home下编译的,一路上都不用sudo,因此可以把sudo给shutdown了.呵呵 ...
- iOS获取真机沙盒文件、获取真机本地数据
有时我们需要对真机内的数据进行分析,那么如何获取沙盒所有数据文件呢? 1.设备连接到电脑,打开xcode 2.打开window-devices 3.打开后,选择设备名,选择app,导出数据 4.最后拿 ...
- tf.gfile
一.功能和目的 tf.gfile模块定义在tensorflow/python/platform/gfile.py,但其源代码实现主要位于tensorflow/tensorflow/python/lib ...
- libgdx游戏引擎教程
第一讲:libgdx游戏引擎教程(一)性能优良的游戏引擎—libgdx http://www.apkbus.com/android-57355-1-1.html 第二讲: libgdx游戏引擎教程(二 ...
- windows下安装phpredis模块 (转)
1.下载: http://pecl.php.net/package/redis/2.2.7/windows 2.下载后 由于里面有两个模块分别是vc6,vc9编译的,我们需要知道我们的Php是vc6还 ...
- ML之监督学习算法之分类算法一 ——— 决策树算法
一.概述 决策树(decision tree)的一个重要任务是为了数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,在这些机器根据数据创建规则时,就是机器学习的过程. ...