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. Retrofit使用指南

    Retrofit is a type-safe HTTP client for Android and Java. Retrofit是面向Android和Java平台的一个类型安全的HTTP客户端. ...

  2. ajax, jQuery, jQueryeasyUI

    1.ajax与jQueryajax是jquery库里面的一个被封装好的函数,可以拿来直接使用.没有jquery的话,ajax的使用就得用原生的javascript去写,比较麻烦. 2.jQuery E ...

  3. windows修改环境变量

    windows的环境变量有两套: 系统的 当前用户的 不同的用户可以拥有不同的环境变量,当前用户的环境变量优先级比系统的环境变量优先级高,PATH环境变量比较特殊,它不是替换而是拼接. 在命令行下也可 ...

  4. mysql5.7忘记密码时,修改root密码

    (1).由于MySQL5.7在安装完后,第一次启动时,会在root目录下生产一个随机的密码,文件名为 .mysql_secret 所以,登录时需要用随机密码登录,然后通过以下命令修改密码 “SET P ...

  5. openstack网络基础

    一.概述 网络虚拟化是云计算的最重要部分,本文详细讲述 Linux 抽象出来的各种网络设备的原理.用法.数据流向.您通过此文,能够知道如何使用 Linux 的基础网络设备进行配置以达到特定的目的,分析 ...

  6. WebService出错 Maximum message size quota for incoming messages (65536) has been exceeded.已超过传入消息(65536)的最大消息大小配额

    WebService应用中如果收到的信息非常大时出错. 1:Maximum message size quota for incoming messages (65536) has been exce ...

  7. 【JQuery】事件冒泡及使用jQuery阻止

    (1)什么是事件起泡 首先你要明白一点,当一个事件发生的时候,该事件总是有一个事件源,即引发这个事件的对象,一个事件不能凭空产生,这就是事件的发生. 当事件发生后,这个事件就要开始传播.为什么要传播呢 ...

  8. java导出txt文件

    1:vm模板页面的代码片段 <div class="col-sm-1"> <button type="button" class=" ...

  9. 【Algorithm】快速排序

    一. 算法描述 快速排序:快速排序采用分治法进行排序,首先是分割,选取数组中的任意一个元素value(默认选用第一个),将数组划分为两段,前一段小于value,后一段大于value:然后再分别对前半段 ...

  10. ural 1091. Tmutarakan Exams(容斥)

    http://acm.timus.ru/problem.aspx? space=1&num=1091 从1~s中选出k个数,使得k个数的最大公约数大于1,问这种取法有多少种. (2<=k ...