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 -- 商店的数据管理类的更多相关文章

  1. cocos进阶教程(1)Lua调用自定义C++类和函数的最佳实践

    第一层:纯C环境下,把C函数注册进Lua环境 a.lua 文件 )) a.c 文件 #include <lua.h> #include <lualib.h> #include ...

  2. Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]

    Cocos2d-x下Lua调用C++这事之所以看起来这么复杂.网上所有的文档都没讲清楚,是因为存在5个层面的知识点: 1.在纯C环境下,把C函数注册进Lua环境,理解Lua和C之间可以互相调用的本质 ...

  3. 【转】Cocos2d-x下Lua调用自定义C++类和函数的最佳实践

    转自:http://segmentfault.com/blog/hongliang/1190000000631630 关于cocos2d-x下Lua调用C++的文档看了不少,但没有一篇真正把这事给讲明 ...

  4. Lua调用自定义C++类

    弄了一天终于会Lua调用自定义C++类.不容易啊. 我的电脑是64位的,装了64的Python不行,装了32位的就可以了,靠!下面是报错信息 python pyyaml Cheetah全都是装32位的 ...

  5. cocos2d-x 3.0 在lua中调用自定义类

    环境 windows8, cocos2d-x 3.0, 现在开始安装需要的一些其它包 1. 按README.mdown文档上面要求的, 下载在windows下要安装的东东, 主要就是python2.7 ...

  6. Cocos2d-x Lua中Sprite精灵类

    精灵类是Sprite,它的类图如下图所示. Sprite类图 Sprite类直接继承了Node类,具有Node基本特征.此外,我们还可以看到Sprite类的子类有:PhysicsSprite和Skin ...

  7. 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之四】使用绑定C++至Lua的自己定义类

    续[Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三]动手绑定自己定义类至Lua 之后.我们已经完毕了自己定义类至Lua的绑定.在接下来的环节,我们将使用它. 首先,我们须要确定 ...

  8. ulua c#调用lua中模拟的类成员函数

    项目使用ulua,我神烦这个东西.lua单纯在lua环境使用还好,一旦要跟外界交互,各种月经不调就来了.要记住贼多的细节,你才能稍微处理好.一个破栈,pop来push去,位置一会在-1,一会在-3,2 ...

  9. lua的table元类

    Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加.假设a和b都是table,通过元表可以定义如何计算表达式a+b.当Lua试图将两个table相加时, ...

随机推荐

  1. jenkins+maven+junit构建自动化测试,整合junit xml生成直观的测试报告[留存]

    在自动化测试过程中,测试报告最能直观的体现测试的价值,之前一直使用maven+junit来构建我的自动化测试,但这样有几个缺点,一是,不能定时构建自动化任务(也许是我没有找到maven有没有提供这样的 ...

  2. Citrix Port(常用端口)

    组件 类型 端口 描述 CitrixLicenseServer       许可管理器守护程序 TCP 27000 处理初始接触点的许可证要求(Lmadmin.exe) 思杰供应商守护程序 TCP 7 ...

  3. ACE的源码划分

    前几篇文章也提到过,ACE的所有源文件和头文件都杂乱堆在了ACE_wrappers/ace目录下.这样的代码组织方式给学习ACE带来了很大的困难,很多朋友在看到ace目录下庞大的代码的时候,几乎就失去 ...

  4. LUA pcall 多个返回值

    You call lua_pcall with the number of arguments you are passing and the number of results you want. ...

  5. keras embeding设置初始值的两种方式

    随机初始化Embedding from keras.models import Sequential from keras.layers import Embedding import numpy a ...

  6. 新系统基础优化--Centos6.6

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  7. 进阶之路(基础篇) - 021 arduino基础知识

    什么是arduino(翻译自arduino官方介绍)Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).她适用于艺术家. ...

  8. [企业化NET]Window Server 2008 R2[2]-SVN 服务端 和 客户端 安装

    1.  服务器基本安装即问题解决记录      √ 2.  SVN环境搭建和客户端使用 2.1  服务端 和 客户端 安装    √ 2.2  项目建立与基本使用     √ 2.3  基本冲突解决, ...

  9. C++的字符串格式化库

    这里向大家介绍一个C++的字符串格式化库,叫cpptempl,这个库支持对字符串格式的条件,循环,变量插入.看上去很不错,只不过其是基于boost库的. 下面是一个例子: 1 2 3 4 5 6 7 ...

  10. Database Vault Administrator的使用

    第一次安装Database Vault的时候,先安装好了Database Vault.然后才安装的EM.发现,根本无法訪问<span><span>Database Vault ...