zoukankan      html  css  js  c++  java
  • 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 = 0
        self.CurrentItem = {};
        self.NowItem = nil;
        -- 从配置表中获取配置数据,这里是以json的形式
        self.shopprop = DB.getTable("shopprop")[1]
        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 0 ~= 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 0 ~= 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 0 ~= 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 = 1;
        local itemInfo = data.ItemInfo
        for i = 1, #itemInfo do
            print("========ShopM:setData========" .. itemInfo[i].KindID);
            local kindID = itemInfo[i].KindID
            local num = itemInfo[i].Num
            local itemType = math.modf(kindID/10000);
            local itemData={ID=kindID, Idx=0, Level=0, Num=num}
            self.itemList[pos] = Item.new(itemType, pos, itemData)    
            if kindID == 0 then
                self.itemList[pos].sell = -1;
            end    
            pos = pos+1
        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 = -1;
        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 12 -- todo
    end
    
    function ShopM:getRefeshCountDown( )
        return self.refeshCountDown
    end
    
    function ShopM:getRefeshGold(  )    
        if self.shopprop == nil then
            return 65535
        end
        return self.shopprop.NoCDGold
    end
    function ShopM:getRefeshCoin(  )
        printf("getRefeshCoin")
        if self.shopprop == nil then
            printf("getRefeshCoin2")
            return 65535
        end
        printf("getRefeshCoin3")
        return self.shopprop.RefreshCoin
    end
    
    function ShopM:getBuyGold( gridIdx )
        printf("getBuyGold:" .. gridIdx)
        if self.shopitemprop == nil then
            printf("getBuyGold2")
            return 65535
        end
    
        local gridProp = self.shopitemprop[gridIdx]
        if gridProp == nil then
            printf("getBuyGold3")
            return 65535
        end
        printf("======gridProp.BuyGold=======" .. gridProp.BuyGold);
        return gridProp.BuyGold
    end
    
    function ShopM:getBuyCoin( gridIdx )
        if self.shopitemprop == nil then
            return 65535
        end
    
        local gridProp = self.shopitemprop[gridIdx]
        if gridProp == nil then
            return 65535
        end
        return gridProp.BuyCoin
    end
    
    -- 这里要有一个return
    return ShopM;
  • 相关阅读:
    用Keytool和OpenSSL生成和签发数字证书
    Maven 的插件和生命周期的绑定
    MySQL 存储过程基本函数
    MySQL 存储过程游标
    MySQL 存储过程控制语句
    MySQL 存储过程
    Shell 编程基础之 && 与 ||
    Shell 编程基础之 [ 与 [[ 的异同
    Linux 任务控制
    《深入理解Java虚拟机》笔记3
  • 原文地址:https://www.cnblogs.com/newlist/p/3667210.html
Copyright © 2011-2022 走看看