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.

157 lines
4.8 KiB

  1. local CoinData = import("luaScript.Views.Coin.Data.CoinData");
  2. local CoinFunctions = import("core.luaScript.Views.Coin.Util.CoinFunctions")
  3. local CoinGameLogic = import("core.luaScript.Views.Coin.CoinGameLogic")
  4. local CoinEvents = import("luaScript.Views.Coin.Constant.CoinEvents");
  5. --- 金币兑换界面
  6. local CoinDuiHuan = class("CoinDuiHuan", cc.UIView)
  7. function CoinDuiHuan:ctor(gameID, level)
  8. CoinDuiHuan.super.ctor(self)
  9. self.gameID = gameID
  10. self.level = level;
  11. end
  12. function CoinDuiHuan:onEnter()
  13. CoinDuiHuan.super.onEnter(self)
  14. local ui = loadUI("res/ui/ui_coin/ui_exchange.ui")
  15. self.ui = ui
  16. self:addChild(ui)
  17. self.ui.Items.Button_close:registerClick(handler(self, self.onBtnCloseClicked));
  18. self.ui.Items.Button_DuiHuan:registerClick(handler(self, self.onBtnDuiHuanClicked));
  19. self:updateView()
  20. self:bindEvent(app.phpShop , "getShopInfoSuccessed" , handler(self , self.updateView));
  21. self:bindEvent(app.phpShop , "exchangeCoinSuccess" , handler(self , self.onDuiHuanCoin));
  22. end
  23. --- CoinDuiHuan:onBtnCloseClicked 点击关闭按钮
  24. function CoinDuiHuan:onBtnCloseClicked ()
  25. playBtnEffect()
  26. self:removeFromParent()
  27. end
  28. --- CoinDuiHuan:onBtnDuiHuanClicked 点击兑换按钮
  29. function CoinDuiHuan:onBtnDuiHuanClicked ()
  30. playBtnEffect()
  31. if self.id and self.price and self.number then
  32. CoinFunctions.exchangeCoinFromDiamond(self.id,self.price,self.number,true)
  33. else
  34. logD("self.id:",self.id)
  35. logD("self.price:",self.price)
  36. logD("self.number:",self.number)
  37. showTooltip("此次兑换失败!请在商店购买!")
  38. end
  39. end
  40. function CoinDuiHuan:updateView()
  41. if app.phpShop.shopData then
  42. local tt = {}
  43. for k,v in pairs(app.phpShop.shopData) do
  44. if tonumber(v.type) == STORE_TYPE.CHANGE_COIN then
  45. tt[v.order] = v;
  46. end
  47. end
  48. local gameData = CoinData.getInstance():getGameData();
  49. if not gameData then
  50. logD("CoinDuiHuan:updateView", "金币场数据不存在");
  51. return;
  52. end
  53. local gameCoinInfo = gameData.ruleList[tonumber(self.gameID)]
  54. if not gameCoinInfo then
  55. logD("CoinDuiHuan:updateView", "游戏金币场数据不存在");
  56. return ;
  57. end
  58. local coin = nil;
  59. if gameCoinInfo[tostring(self.level)] then
  60. --当前场次最低金币数
  61. coin = gameCoinInfo[tostring(self.level)].min_money
  62. end
  63. if not coin then
  64. return ;
  65. end
  66. for k,v in pairs(tt) do
  67. if coin <= v.number then
  68. local fileName = "ddStore_"..v.id..".png"
  69. local fullPath = cc.FileUtils:getInstance():getWritablePath()..fileName
  70. if cc.FileSystem:fileExists(fullPath) then
  71. local texture = loadTextureFromFile(fileName,false)
  72. self.ui.Items.ImageView_Coin:setTexture2(texture);
  73. end
  74. self.ui.Items.TextBMFont:setText("x"..v.number)
  75. self.ui.Items.Text_1:setText(v.price..PLN.CURRENCY_UNIT..PLN.CURRENCY)
  76. self.id = v.id;
  77. self.price = v.price;
  78. self.number = v.number;
  79. break
  80. end
  81. end
  82. else
  83. app.phpShop:getShopInfo();
  84. end
  85. end
  86. function CoinDuiHuan:onDuiHuanCoin(data)
  87. if not data then
  88. return;
  89. end
  90. local response = data.response;
  91. local id = response.id
  92. local gold = response.gold --金币
  93. local card = response.card --钻石
  94. local coupons = response.coupons --礼券
  95. local fileName = "res/ui/zy_dating/chongzhi/chongzhi_img_icon.png"
  96. local info = {}
  97. if gold and not coupons then
  98. --只有金币变化,说明是用钻石兑换金币
  99. logD("CoinDuiHuan:onDuiHuanCoin zuanshi curJingbiNum = "..table.tostring(app.user.loginInfo.curJingbiNum))
  100. if tonumber(response.lastCoinNum) > tonumber(gold) then
  101. info.coin = response.lastCoinNum - gold;
  102. else
  103. info.coin = gold - response.lastCoinNum;
  104. end
  105. app.user.loginInfo.curJingbiNum = gold
  106. elseif gold and coupons then
  107. --礼券和金币同时变化,说明是用礼券兑换了金币
  108. logD("CoinDuiHuan:onDuiHuanCoin liquan curJingbiNum = "..table.tostring(app.user.loginInfo.curJingbiNum))
  109. if tonumber(response.lastCoinNum) > tonumber(gold) then
  110. info.coin = response.lastCoinNum - gold;
  111. else
  112. info.coin = gold - response.lastCoinNum;
  113. end
  114. app.user.loginInfo.curJingbiNum = gold
  115. app.user.loginInfo.curLiquanNum = coupons
  116. elseif not gold and coupons then
  117. --礼券变化,但金币没变化,表示兑换的是钻石
  118. logD("CoinDuiHuan:onDuiHuanCoin curCardNum = "..table.tostring(app.user.loginInfo.curCardNum))
  119. fileName = "res/ui/zy_tongyong/zy_icon/icon_zuanshi.png"
  120. info.coupons = app.user.loginInfo.curLiquanNum - coupons;
  121. app.user.loginInfo.curLiquanNum = coupons
  122. info.card = card - response.lastCardNum
  123. end
  124. info.fileName = fileName
  125. local view = import("luaScript.Views.Coin.RoomJiangLi"):new(info);
  126. view:setAnchorPoint(cc.p(0.5, 0.5))
  127. app:showWaitDialog(view)
  128. -- 刷新钻石和金币数量
  129. app.user.loginInfo.curCardNum = card
  130. --如果是房间内,更新房间内数据
  131. if app.room then
  132. app.coinProtocolPhp:requestCoinGameActivity()
  133. end
  134. self:removeFromParent()
  135. end
  136. return CoinDuiHuan