autoImport("ExchangeShopItemData") autoImport("ExchangeItemData") ExchangeShopProxy = class('ExchangeShopProxy', pm.Proxy) ExchangeShopProxy.Instance = nil; ExchangeShopProxy.NAME = "ExchangeShopProxy" -- 商品型別 ExchangeShopProxy.GoodsTYPE= { OK = SessionShop_pb.EEXCHANGESTATUSTYPE_OK, --可兌換 EMPTY = SessionShop_pb.EEXCHANGESTATUSTYPE_EMPTY, -- 售空 } -- 貨幣型別 ExchangeShopProxy.EnchangeType = { COINS = 1, -- 貨幣兌換 FRESS = 2, -- 免費兌換 PROGRESS =3, -- 帶進度條兌換 NO_PROGRESS =4, -- 不帶進度條兌換 Limited_PROGRESS = 5,-- 判定上限 } -------------------for test --------------------- function ExchangeShopProxy:Test() -- test Server Data local data = { items = { {id=1,status=1,progress=0,exchange_count=0,left_time=5432}, {id=2,status=1,progress=0,exchange_count=0,left_time=31214}, {id=3,status=1,progress=1,exchange_count=20,left_time=4352332}, {id=4,status=1,progress=1,exchange_count=10,left_time=232}, {id=5,status=1,progress=0,exchange_count=0,left_time=32145}, }, del_items = { }, menu_open=true, } self:UpdateExchange(data) end -------------------for test end ------------------ local _ArrayPushBack = TableUtility.ArrayPushBack local _ClearArray = TableUtility.ArrayClear local tempArray = {} function ExchangeShopProxy:ctor(proxyName, data) self.proxyName = proxyName or ExchangeShopProxy.NAME if(ExchangeShopProxy.Instance == nil) then ExchangeShopProxy.Instance = self end if data ~= nil then self:setData(data) end self:Init() self:InitStaticData() end function ExchangeShopProxy:InitStaticData() if(not Table_ExchangeWorth)then return end local checkCfgMap = {} for k,v in pairs(Table_ExchangeWorth) do if(v.ItemID and v.Worth and #v.Worth>1)then self.goodsWorth[v.ItemID]=v.Worth end if(not v.GoodsID)then return end for i=1,#v.GoodsID do local goodID = v.GoodsID[i] if(nil==self.goodsMap[goodID])then self.goodsMap[goodID]={} end local itemData = ExchangeItemData.new(v) _ArrayPushBack(self.goodsMap[goodID],itemData) -- 容錯檢測: 一個商店裡只能對應一種兌換物品 for i=1,#self.goodsMap[goodID] do local goods = self.goodsMap[goodID][i] if(nil==checkCfgMap[goodID])then checkCfgMap[goodID]=goods.config.Worth[1] end if(checkCfgMap[goodID]~=goods.config.Worth[1])then redlog("Table_ExchangeWorth ID:",goodID,"配置了不同的獎勵",goods.config.Worth[1]) return end end end end end function ExchangeShopProxy:Init() self.shopDataMap={} self.chooseMap={} -- ExchangeShop對應的訂單商品集合 self.goodsMap={} self.goodsWorth ={} end function ExchangeShopProxy:UpdateExchange(server_data) for i=1,#server_data.items do self.shopDataMap[server_data.items[i].id] = ExchangeShopItemData.new(server_data.items[i]) end for i=1,#server_data.del_items do self.shopDataMap[server_data.del_items[i]]=nil end --------------------- for test ------------------------ -- if(self.openFlag)then -- GameFacade.Instance:sendNotification(UIEvent.JumpPanel,{view = PanelConfig.ExchangeShopView}); -- end --------------------- for test end -------------------- end function ExchangeShopProxy:CanOpen() for k,v in pairs(self.shopDataMap) do if v.staticData and v.staticData.Source==1 and v.status ~= ExchangeShopProxy.GoodsTYPE.EMPTY then return true end end return false end function ExchangeShopProxy:HandleResetData(server_data) self:ClearData() for i=1,#server_data.items do self.shopDataMap[server_data.items[i].id] = ExchangeShopItemData.new(server_data.items[i]) end end function ExchangeShopProxy:ClearData() TableUtility.TableClear(self.shopDataMap) self:ResetChoose() end function ExchangeShopProxy:GetRewardByGoods(id) local array = self.goodsMap[id] if(not array or 0==#array or not array[1].config)then return nil end return array[1].config.Worth[1] end function ExchangeShopProxy:ResetChoose() TableUtility.TableClear(self.chooseMap) end function ExchangeShopProxy:AddChooseItems(id) if(self.chooseMap[id])then if(self.chooseMap[id] < BagProxy.Instance:GetItemNumByStaticID(id))then self.chooseMap[id]=self.chooseMap[id]+1 end else self.chooseMap[id]=1 end end function ExchangeShopProxy:MinusChooseItem(id) if(not self.chooseMap[id])then return end if(10 then for i=1,#chooseItem do local worth_cfg = self.goodsWorth[chooseItem[i].id] local worthNum = worth_cfg and worth_cfg[2] or 1 previewNum = chooseItem[i].num * worthNum + previewNum end end return previewNum end function ExchangeShopProxy:GetChooseNum() local chooseCount,RewardCount = 0,0 for k,v in pairs(self.chooseMap) do chooseCount = chooseCount+v if(self.goodsWorth[k])then RewardCount = RewardCount + self.goodsWorth[k][2] * v end end return chooseCount,RewardCount end function ExchangeShopProxy:CallExchange(id) ServiceSessionShopProxy.Instance:CallExchangeShopItemCmd(id,self:_getChooseItem()) end function ExchangeShopProxy:GetShopDataByExchangeId(id) return self.shopDataMap[id] end