You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

326 lines
8.5 KiB

  1. local MineBag = class("MineBag", cc.UIView)
  2. local BAG_TYPE = 4
  3. BAG_TYPE_NAME = {
  4. [81] = PLN.CLUB_NAME .. "背景",
  5. [82] = "大厅背景",
  6. [83] = "聊天气泡",
  7. [84] = "语音气泡",
  8. }
  9. function MineBag:ctor(selectType)
  10. MineBag.super.ctor(self);
  11. local ui = loadUI("res/ui/ui_dating/ui_minebag.ui")
  12. self.ui = ui
  13. self.selectType = selectType or STORE_TYPE.CHANGE_QYQBG
  14. self.proplist = nil
  15. self.pid = nil
  16. self.optype = 1
  17. self:addChild(ui)
  18. self.First = true
  19. if app.serverConfigs.clientConfig and app.serverConfigs.clientConfig.prop then
  20. self.proplist = app.serverConfigs.clientConfig.prop
  21. else
  22. app.serverConfigs:requestClientConfig(function()
  23. self.proplist = app.serverConfigs.clientConfig.prop
  24. end)
  25. end
  26. end
  27. function MineBag:onEnter()
  28. MineBag.super.onEnter(self);
  29. self.ui.Items.Layout_goods_items:setVisible(false)
  30. self.ui.Items.Text_noContent:setVisible(false)
  31. self.ui.Items.ImageView_noGood:setVisible(false)
  32. self.ui.Items.Button_Close:registerClick(handler(self, self.onClickClose))
  33. self.ui.Items.Button_goShop:setVisible(false)
  34. self.ui.Items.Button_goShop:registerClick(handler(self, self.onClickGoToShop))
  35. self.ui.Items.Button_Store:registerClick(handler(self, self.onClickGoToShop))
  36. self.ui.Items.ScrollView_Center:setVisible(false)
  37. self.ui.Items.ScrollView_Center:hideAllBar()
  38. self.ui.Items.ScrollView_left:hideAllBar()
  39. self.radioManager = import("luaScript.Tools.RadioManager"):new();
  40. self.radioManager:setColorSwitch(false)
  41. self.ui.Items.ScrollView_left:getInnerContainer():setAutoSize(true)
  42. self.ui.Items.ScrollView_left:removeAllChildren()
  43. for k,v in pairsByKeys(BAG_TYPE_NAME) do
  44. local ui = self.ui.Items.CheckBox_left_item:getCopied()
  45. ui.Items = getUIItems(ui)
  46. BAG_TYPE_NAME[k] = string.gsub(BAG_TYPE_NAME[k],"茶馆", "海选赛")
  47. ui.Items.Text_Nor:setText(BAG_TYPE_NAME[k])
  48. ui.Items.Text_Sel:setText(BAG_TYPE_NAME[k])
  49. ui.Items.Text_Sel:setVisible(false)
  50. self.ui.Items.ScrollView_left:addChild(ui)
  51. self.radioManager:addItem(ui, k)
  52. end
  53. self.radioManager:setCallback(handler(self, self.onClickItem))
  54. self.radioManager:setDefault(self.selectType)
  55. self.ui.Items.ScrollView_left:hideAllBar()
  56. self.ui.Items.ScrollView_left:jumpToTopOnSizeChanged()
  57. app.php:requestGetBagInfo()
  58. self:bindEvent(app , "onGetBagInfoResponse" , handler(self , self.updateView));
  59. --操作成功
  60. self:bindEvent(app , "onBagOperateResponse" , handler(self , self.onBagOperateResponse));
  61. self:bindEvent(app.phpShop , "exchangeCoinSuccess" , handler(self , self.duihuanShop));
  62. if app.php.mypropdata then
  63. for k,v in pairs(app.php.mypropdata) do
  64. if v.prop_id and v.prop_id >= 200 and v.prop_id < 300 then
  65. self.pid = v.prop_id
  66. end
  67. end
  68. end
  69. self:updateView()
  70. end
  71. function MineBag:onBagOperateResponse()
  72. app.php:requestGetBagInfo() --刷新背包数据
  73. if self.optype == 1 then
  74. showTooltip("装扮成功")
  75. else
  76. showTooltip("卸下成功")
  77. end
  78. end
  79. function MineBag:duihuanShop()
  80. app.php:requestGetBagInfo() --刷新背包数据
  81. end
  82. function MineBag:onClickItem(value,checkNode)
  83. if not self.First then
  84. playBtnEffect()
  85. end
  86. self.First = false
  87. if self.selectItem and not tolua.isnull(self.selectItem) then
  88. -- playBtnEffect()
  89. self.selectItem.Items.Text_Nor:setVisible(true)
  90. self.selectItem.Items.Text_Sel:setVisible(false)
  91. end
  92. self.selectItem = checkNode
  93. if self.selectItem then
  94. self.selectItem.Items.Text_Nor:setVisible(false)
  95. self.selectItem.Items.Text_Sel:setVisible(true)
  96. end
  97. if self.selectType ~= value then
  98. self.selectType = value
  99. self:updateView()
  100. end
  101. end
  102. function MineBag:updateView()
  103. local uiScrollView = self.ui.Items.ScrollView_Center;
  104. uiScrollView:hideAllBar();
  105. uiScrollView:removeAllChildren()
  106. uiScrollView:getInnerContainer():setAutoSize(false)
  107. if self.selectType == STORE_TYPE.CHANGE_QYQBG then
  108. self.ui.Items.Text:setVisible(true)
  109. else
  110. self.ui.Items.Text:setVisible(false)
  111. end
  112. self:onDownLoadImageByType(self.selectType)
  113. if not app.php.baginfodata or not self.proplist then
  114. return
  115. end
  116. local baginfo = {};
  117. for k,v in pairs(app.php.baginfodata) do
  118. if v.prop_type == self.selectType then
  119. table.insert(baginfo,v)
  120. end
  121. end
  122. self.ui.Items.Text_noContent:setVisible(false)
  123. self.ui.Items.ImageView_noGood:setVisible(false)
  124. self.ui.Items.Button_goShop:setVisible(false)
  125. if not baginfo or table.nums(baginfo) <= 0 then
  126. self.ui.Items.Text_noContent:setVisible(true)
  127. self.ui.Items.ImageView_noGood:setVisible(true)
  128. self.ui.Items.Button_goShop:setVisible(true)
  129. return
  130. end
  131. self.ui.Items.Layout_goods_items:setVisible(true)
  132. self.ui.Items.ScrollView_Center:setVisible(true)
  133. for i = 1, #baginfo do
  134. local item = self:createItem(baginfo[i])
  135. uiScrollView:addChild(item);
  136. end
  137. uiScrollView:jumpToTopOnSizeChanged()
  138. end
  139. function MineBag:createItem(bagdata)
  140. local uiTemplate = self.ui.Items.Layout_goods_items
  141. local uiItem = uiTemplate:getCopied()
  142. uiItem.Items = getUIItems(uiItem)
  143. local propdata = self.proplist[tostring(bagdata.prop_id)]
  144. local endtime = bagdata.endtime
  145. local difftime = endtime - os.time()
  146. local str = string.format("%d天%.2d时%.2d分", math.floor(difftime/(60*60*24)), math.floor((difftime/(60*60))%24),math.floor((difftime/60)%60))
  147. uiItem.Items.Text_time_1:setText(str)
  148. local function onUpdateImage(event)
  149. if tolua.isnull(uiItem) then
  150. return
  151. end
  152. local rechargeId = bagdata.prop_id
  153. if not event or event.id ~= rechargeId then
  154. return
  155. end
  156. uiItem.Items.ImageView_goods_icon:setVisible(false)
  157. local rechargeConfig = bagdata
  158. if not rechargeConfig then
  159. return
  160. end
  161. local iconUrl = convertIconUrl(propdata.thumb)
  162. local iconFile = getImageNameFromUrl(iconUrl)
  163. local texture = loadTextureFromFile(iconFile)
  164. if texture then
  165. local w = texture:getWidth();
  166. local sz = uiItem.Items.ImageView_goods_icon:getContentSize()
  167. uiItem.Items.ImageView_goods_icon:setVisible(true)
  168. uiItem.Items.ImageView_goods_icon:setTexture2(texture);
  169. end
  170. end
  171. -- 监听下载事件,本充值项的图片下载成功时更新图片
  172. uiItem:bindEvent(app, "downloadImageSuccessed", onUpdateImage);
  173. onUpdateImage({id = bagdata.prop_id});
  174. uiItem.Items.Text_item_title:setText(tostring(propdata.name))
  175. uiItem.Items.Button_xiexia:registerClick(function ()
  176. playBtnEffect()
  177. if self.selectType == STORE_TYPE.CHANGE_QYQBG then
  178. showConfirmDialog(string.format("请在%s【设置】-【%s背景】中使用。", PLN.CLUB_NAME, PLN.CLUB_NAME))
  179. else
  180. self.optype = 2
  181. app.php:requestBagOperate(bagdata.prop_id,2)
  182. uiItem.Items.Button_shiyong:setVisible(true)
  183. uiItem.Items.Button_xiexia:setVisible(false)
  184. end
  185. end)
  186. uiItem.Items.Button_shiyong:registerClick(function ()
  187. playBtnEffect()
  188. if self.selectType == STORE_TYPE.CHANGE_QYQBG then
  189. showConfirmDialog(string.format("请在%s【设置】-【%s背景】中使用。", PLN.CLUB_NAME, PLN.CLUB_NAME))
  190. else
  191. self.optype = 1
  192. app.php:requestBagOperate(bagdata.prop_id,1)
  193. uiItem.Items.Button_shiyong:setVisible(false)
  194. uiItem.Items.Button_xiexia:setVisible(true)
  195. end
  196. end)
  197. uiItem.Items.Button_xufei:registerClick(function()
  198. playBtnEffect()
  199. local view = import("luaScript.Views.Recharge.StoreDuiHuanView"):new(self.selectType,bagdata.prop_id,1);
  200. view:setAnchorPoint(cc.p(0.5, 0.5))
  201. app:showWaitDialog(view)
  202. end)
  203. if table.nums(bagdata.usejson) > 0 then
  204. uiItem.Items.Button_xiexia:setVisible(true)
  205. uiItem.Items.Button_shiyong:setVisible(false)
  206. uiItem.Items.ImageView_Usering:setVisible(true)
  207. else
  208. uiItem.Items.Button_xiexia:setVisible(false)
  209. uiItem.Items.Button_shiyong:setVisible(true)
  210. uiItem.Items.ImageView_Usering:setVisible(false)
  211. end
  212. return uiItem
  213. end
  214. -- 关闭设置界面
  215. function MineBag:onClickClose()
  216. playBtnCloseEffect()
  217. self:removeFromParent()
  218. end
  219. --去商城
  220. function MineBag:onClickGoToShop()
  221. playBtnEffect()
  222. local view = import("luaScript.Views.Main.RechargeView"):new(self.selectType,self.pid)
  223. view:setAnchorPoint(cc.p(0.5,0.5))
  224. app:showWaitDialog(view)
  225. self:removeFromParent()
  226. end
  227. --点击某个类型才下载某个类型的图片
  228. function MineBag:onDownLoadImageByType(selecttype)
  229. if not app.php.baginfodata or not self.proplist then
  230. return
  231. end
  232. for k,v in pairs(app.php.baginfodata) do
  233. if tonumber(selecttype) == v.prop_type then
  234. local prop = self.proplist[k]
  235. if (prop.thumb and prop.thumb ~= "") then
  236. local fileName = getImageNameFromUrl(prop.thumb)
  237. getImageFromUrlWithTime(prop.thumb, fileName, nil,function()
  238. -- 通知下载完成
  239. app:dispatchEvent({name = "downloadImageSuccessed", id = v.prop_id});
  240. end)
  241. end
  242. end
  243. end
  244. end
  245. return MineBag;