源战役客户端
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

923 righe
35 KiB

4 settimane fa
  1. EmpowerTreasureView = EmpowerTreasureView or BaseClass(BaseView)
  2. local EmpowerTreasureView = EmpowerTreasureView
  3. function EmpowerTreasureView:__init()
  4. self.base_file = "empower"
  5. self.layout_file = "EmpowerTreasureView"
  6. self.layer_name = "UI"
  7. self.use_background = G_USING_BG
  8. self.hide_maincancas = true
  9. --self.close_mode = CloseMode.CloseDestroy
  10. --self.destroy_imm = true
  11. --self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
  12. self.is_set_zdepth = true
  13. self.append_to_ctl_queue = true --是否要添加进界面堆栈
  14. self.model = EmpowerModel:GetInstance()
  15. self.goods_model = GoodsModel:getInstance()
  16. self.mainVo = RoleManager.Instance.mainRoleInfo
  17. self.powerSign_objs ={}
  18. self.finalPos_tranfs ={}
  19. self.img_qualitys_img = {}
  20. self.img_qualitys_btn = {}
  21. self.awardItems = {}
  22. self.probAwardItems = {} -- 展示可能活动性
  23. self.emT_loadSign_objs = {}
  24. self.gift_icon_objs = {}
  25. self.gift_icon_img = {}
  26. self.gift_red_dot_objs = {}
  27. self.loading_txts = {}
  28. self.isStuckTimesNum = 0
  29. self.powerNum = 0
  30. self.eachPowerUpTime = 0.4
  31. self.isPosCanFire = false
  32. self.isTimeCanFire = false
  33. self.isGaming = false
  34. self.ifCanKeyUp = false -- 按循序keydown-蓄力-发射才给发射,防止玩家一直按住蓄力等待下回合发射
  35. self.config_free_count = self.model:GetConfigMarbleKvVal("free_count")
  36. self.load_callback = function ()
  37. self:LoadSuccess()
  38. self:AddEvent()
  39. end
  40. self.open_callback = function ( )
  41. self:OpenSuccess()
  42. end
  43. self.destroy_callback = function ( )
  44. self:DestroySuccess()
  45. end
  46. end
  47. function EmpowerTreasureView:Open( )
  48. BaseView.Open(self)
  49. end
  50. function EmpowerTreasureView:LoadSuccess()
  51. self.nodes = {
  52. "downInfo/rightDown/juan_icon:img",
  53. }
  54. self:GetChildren(self.nodes)
  55. self.coupon_id = self.model:GetCouponId() or 270012--代金券ID
  56. self.coupon_exchange_num = self.model:GetCouponExchangeNum()--代金券兑换数量
  57. lua_resM:setOutsideImageSprite(self,self.juan_icon_img,GameResPath.GetGoodsIcon(self.coupon_id))
  58. self.closeBtn_obj = self:GetChild("closeBtn").gameObject
  59. self.closeBtn_img = self:GetChild("closeBtn"):GetComponent("Image")
  60. self.bg_img = self:GetChild("bg/bg"):GetComponent("Image")
  61. self.powerFireBtn_obj = self:GetChild("powerFireBtn_mask/powerFireBtn").gameObject
  62. self.powerFireBtn_img = self:GetChild("powerFireBtn_mask/powerFireBtn"):GetComponent("Image")
  63. self.powerFireBtn_redDot = self:GetChild("powerFireBtn_mask/powerFireBtnRedDot").gameObject
  64. self.resetBtn_obj = self:GetChild("resetBtn_mask/resetBtn").gameObject
  65. self.resetBtn_img = self:GetChild("resetBtn_mask/resetBtn"):GetComponent("Image")
  66. self.powerFireBtn_transf = self:GetChild("powerFireBtn_mask/powerFireBtn")
  67. self.powerFireBtnDark_obj = self:GetChild("powerFireBtn_mask/powerFireBtn_dark").gameObject
  68. self.powerFireBtnDark_obj:GetComponent("Image").gray = true
  69. self.spring = self:GetChild("spring")
  70. self.spring_img = self:GetChild("spring"):GetComponent("Image")
  71. self.ball_tranf = self:GetChild("ball")
  72. self.ball_Riridbody = self:GetChild("ball"):GetComponent("Rigidbody2D")
  73. self.shopIcon_obj = self:GetChild("shopIcon").gameObject
  74. self.shopRedDot_obj = self:GetChild("shopIcon/redDot").gameObject
  75. self.loading = self:GetChild("loadingReword/loading")
  76. self.loading_obj = self:GetChild("loadingReword/loading").gameObject
  77. self.cue_bg_obj = self:GetChild("loadingReword/loading/cue_bg").gameObject
  78. self.cue_loading_txt = self:GetChild("loadingReword/loading/cue_bg/loading_txt"):GetComponent("Text")
  79. self.rewardItemCon = self:GetChild("loadingReword/rewardItemCon/item_show")
  80. self.moneyShow_txt = self:GetChild("downInfo/moneyShow/text"):GetComponent("Text")
  81. self.cueTimeTxt_txt = self:GetChild("downInfo/cueTimeTxt"):GetComponent("Text")
  82. self.btnReset_txt = self:GetChild("downInfo/moneyShowReset/text"):GetComponent("Text")
  83. self.cardNum_txt = self:GetChild("downInfo/rightDown/num_txt"):GetComponent("Text")
  84. self.useCard_toggle = self:GetChild("downInfo/rightDown/toggle"):GetComponent("Toggle")
  85. self.Content_item = self:GetChild("bg/ScrollView_item/Viewport/Content_item")
  86. self.Content_reward = self:GetChild("showDifRewardCon/bg/ScrollView_difReward/Viewport/Content_reward")
  87. self.showDifRewardCon_obj = self:GetChild("showDifRewardCon").gameObject
  88. self.showDifRewardCon_bg = self:GetChild("showDifRewardCon/bg")
  89. self.resetBtn_redDot_obj = self:GetChild("resetBtn_mask/resetBtn_redDot").gameObject
  90. self.light_img = self:GetChild("bg/lights/light_img"):GetComponent("Image")
  91. self.light_img_big = self:GetChild("bg/lights/light_img_big"):GetComponent("Image")
  92. for i = 1, 7 do
  93. self.powerSign_objs[i] = self:GetChild("powerSigns/powerSign"..i).gameObject
  94. end
  95. --self.awardItemCon = self:GetChild("awardItemCon")
  96. for i = 1, 5 do
  97. self.finalPos_tranfs[i] = self:GetChild("getPositions/pos"..i)
  98. self.img_qualitys_img[i] = self:GetChild("getPositions/pos"..i.."/quality_img"):GetComponent("Image")
  99. self.img_qualitys_btn[i] = self.img_qualitys_img[i].gameObject
  100. end
  101. for i = 1, 4 do
  102. self.loading_txts[i] = self:GetChild("loadingReword/loadingTxts/loading_txt"..i):GetComponent("Text")
  103. self.emT_loadSign_objs[i] = self:GetChild("loadingReword/emT_loadSigns/emT_loadSign"..i).gameObject
  104. self.gift_icon_objs[i] = self:GetChild("loadingReword/rewardItemCon/gift_icon"..i).gameObject
  105. self.gift_icon_img[i] = self.gift_icon_objs[i]:GetComponent("ImageExtend")
  106. self.gift_red_dot_objs[i] = self:GetChild("loadingReword/rewardItemCon/redDot"..i).gameObject
  107. self.loading_txts[i].text = self.model.Config_Marble_Count_Reward[i].count
  108. end
  109. self.topRwardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.rewardItemCon)
  110. self.topRwardItem:SetItemSize(48, 48)
  111. SetLocalPosition(self.topRwardItem.transform,GetLocalPositionX(self.topRwardItem.transform)-40, GetLocalPositionY(self.topRwardItem.transform)+40 , 0)
  112. self.topRwardItem:SetVisible(false)
  113. --self.topRwardItem:SetData(270012)
  114. local showAwardList = stringtotable(self.model:GetConfigMarbleKvVal("AwardShow"))
  115. if showAwardList then --目前为空,未知
  116. for k,v in pairs(showAwardList) do
  117. self.awardItems[k] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.Content_item)
  118. self.awardItems[k]:SetItemSize(50, 50)
  119. print("============>>> YiRan:EmpowerTreasureView [start:120] #self.awardItems :",#self.awardItems)
  120. self.awardItems[k]:SetData(v[2],v[3])
  121. end
  122. end
  123. self.springDeltaY = GetSizeDeltaY(self.spring)
  124. self.springStartDeltaY = GetSizeDeltaY(self.spring)
  125. self.fireBtnPosYMoveNum = -5 --按钮下压高度
  126. --self.fireBtnDeltaY = GetSizeDeltaY(self.powerFireBtn_transf)
  127. --self.fireBtnStartDeltaY = GetSizeDeltaY(self.powerFireBtn_transf)
  128. self.springColiderPosX = GetLocalPositionX(self.spring)
  129. self.springColiderPosY = GetLocalPositionY(self.spring) + GetSizeDeltaY(self:GetChild("spring"))
  130. self.loadingMaxY = 359.69--GetSizeDeltaY(self.loading)
  131. lua_resM:setOutsideImageSprite(self,self.bg_img,GameResPath.GetViewBigBg("empower_treasure_bg"),false)
  132. self:SetPowerSignsActive(false)
  133. self:ResetGame()
  134. self:ResetQualitys( ) -- 之后拿的可能不是在这了,如需什么时候刷新记得改这个
  135. self:ShineLight(EmpowerConst.EmpowerShineTimeSpan_s_normal)
  136. self:ShineLight2(EmpowerConst.EmpowerShineTimeSpan_l_normal)
  137. end
  138. function EmpowerTreasureView:AddEvent()
  139. local function clickHandler(target)
  140. if target == self.closeBtn_obj then
  141. self:Close()
  142. elseif target == self.resetBtn_obj then
  143. --self:ResetGame()
  144. local reset_count = self.model:GetVo41400().reset_count--重置次数
  145. local reset_limit,reset_next_vip,reset_next_limit = self.model:GetResetLimitNum()--重置上限
  146. if reset_count == reset_limit then
  147. if not reset_next_vip then
  148. Message.show("重置次数已达上限!","fault")
  149. else
  150. local function ok()
  151. OpenFun.Open(450,1)
  152. end
  153. local str = HtmlColorTxt("VIP"..reset_next_vip, ColorUtil.RED_DARK)
  154. local add_reset_num = HtmlColorTxt(reset_next_limit - reset_limit, ColorUtil.GREEN_DARK) --增加的充值次数
  155. Alert.show("重置次数不足,需提升至"..str.."增加"..add_reset_num.."次重置\n是否前往充值?",Alert.Type.Two,ok)
  156. end
  157. return
  158. end
  159. local reset_cost = self.model:GetConfigMarbleKvVal("reset_cost")
  160. local list = stringtotable(reset_cost)
  161. local txt = "是否自动补齐?"
  162. local use_list = {}
  163. local reset_count = self.model:GetVo41400().reset_count + 1
  164. if reset_count > #list then
  165. use_list = list[#list][2]
  166. else
  167. use_list = list[reset_count][2]
  168. end
  169. if use_list[1] == "1" then -- 钻石 今天第"..reset_count.."次,
  170. txt = "需要"..use_list[3].."彩钻重置,是否重置?"
  171. elseif use_list[1] == "100" then -- 道具
  172. txt = "需要"..use_list[3]..""..GoodsModel:getInstance():getGoodsName(use_list[2], false).."道具重置,是否自动补齐?"
  173. end
  174. if self.model.isAutoReset41404 then
  175. self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41404) -- 重置升品寻宝
  176. else
  177. function ok_function( flag )
  178. self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41404) -- 重置升品寻宝
  179. end
  180. function toggle_function( flag )
  181. self.model.isAutoReset41404 = flag
  182. end
  183. --需要显示购买提示界面
  184. if not self.model.not_tip_quick_circle_refresh then
  185. -- local gold_ab_res,res_name = WordManager:GetCommonMoneyIcon(tonumber(self.cost_data[1]))
  186. local data = {
  187. titleText = "温馨提示",
  188. nameText = "",
  189. price = use_list[3],
  190. okText = "确定",
  191. -- gold_ab_res = gold_ab_res,
  192. -- gold_res = res_name,
  193. hide_money_icon = false,
  194. priceText = HtmlColorTxt(use_list[3], ColorUtil.YELLOW_DARK) .. " 重置刷新", --.. HtmlColorTxt("1彩钻", "#d322ff"),
  195. ok_callback = ok_function,
  196. toggle_function = toggle_function,
  197. nameText = "是否使用",
  198. insufficientText = "",-- .. HtmlColorTxt(use_list[3]..WordManager:GetCommonMoneyStr(use_list[1]), "#d322ff") .. "弹射一次
  199. }
  200. GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, data)
  201. else
  202. ok_function()
  203. end
  204. end
  205. elseif target == self.shopIcon_obj then
  206. self.model:Fire(EmpowerConst.OPEN_SHOP_BASE_VIEW,true,1)
  207. elseif target == self.powerFireBtnDark_obj then
  208. Message.show("请先投币重置","fault")
  209. elseif target == self.showDifRewardCon_obj then
  210. self.showDifRewardCon_obj:SetActive(false)
  211. end
  212. for i=1,#self.gift_icon_objs do
  213. if target == self.gift_icon_objs[i] then
  214. --self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41403,self.model.Config_Marble_Count_Reward[i].index)
  215. end
  216. end
  217. for i=1,#self.img_qualitys_btn do
  218. if target == self.img_qualitys_btn[i] then
  219. SetLocalPositionX(self.showDifRewardCon_bg, GetLocalPositionX(self.finalPos_tranfs[i]) + 39)
  220. SetLocalPositionX(self.Content_reward,0)
  221. local quailtyNum = tonumber(self.qualitysList[i])
  222. self.showDifRewardCon_obj:SetActive(true)
  223. local rewardsList = stringtotable(DeepCopy(Config.Marblequalreward)[quailtyNum].rewards)
  224. local config_good = DeepCopy(Config.Goods)
  225. for k,v in pairs(rewardsList) do
  226. v.color = self.goods_model:GetGoodsBasicByTypeId(v[2][2]).color --按品质排序
  227. end
  228. local sort_func = function ( a, b )
  229. return a.color > b.color
  230. end
  231. table.sort(rewardsList, sort_func)
  232. for k,v in pairs(rewardsList) do
  233. if self.probAwardItems[k] == nil then
  234. self.probAwardItems[k] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.Content_reward)--AwardItem.New(self.Content_reward)--
  235. self.probAwardItems[k]:SetItemSize(49, 49)
  236. end
  237. self.probAwardItems[k]:SetData(v[2][2],v[2][3])
  238. self.probAwardItems[k].transform.pivot = Vector2(0, 1)
  239. self.probAwardItems[k].gameObject:SetActive(true)
  240. end
  241. for i=#rewardsList,#self.probAwardItems do
  242. self.probAwardItems[i].gameObject:SetActive(false)
  243. end
  244. end
  245. end
  246. end
  247. AddClickEvent(self.closeBtn_obj, clickHandler)
  248. AddClickEvent(self.resetBtn_obj, clickHandler)
  249. AddClickEvent(self.shopIcon_obj, clickHandler)
  250. AddClickEvent(self.showDifRewardCon_obj, clickHandler)
  251. AddClickEvent(self.powerFireBtnDark_obj, clickHandler)
  252. for i=1,#self.img_qualitys_btn do
  253. AddClickEvent(self.img_qualitys_btn[i], clickHandler, 1)
  254. end
  255. for i=1,#self.gift_icon_objs do
  256. AddClickEvent(self.gift_icon_objs[i], clickHandler, 1)
  257. end
  258. local function clickFireHandlerDown(target)
  259. SetLocalPositionY(self.powerFireBtn_transf, self.fireBtnPosYMoveNum) --按钮下压
  260. if not self.isPosCanFire then return end
  261. self.isUsingCard = self.useCard_toggle.isOn
  262. local count = self.model:GetVo41400().count + 1 -- 告知下一次,当前次数得加1
  263. if count and count > self.config_free_count then
  264. --Message.show("今日免费次数已用尽")
  265. local marble_cost = self.model:GetConfigMarbleKvVal("marble_cost")
  266. local coupon_cost = stringtotable(self.model:GetConfigMarbleKvVal("coupon_cost"))
  267. local good_value = coupon_cost[1][3]/coupon_cost[1][1]
  268. local list = stringtotable(marble_cost)
  269. local txt = "是否自动补齐?"
  270. local use_list = {}
  271. local good_type = list[1][2][2]
  272. local need_goods_num = list[1][2][3]
  273. local need_money = list[2][2][3]
  274. local money_num = self.mainVo.jin
  275. local good_num = GoodsModel:getInstance():GetTypeGoodsNum(good_type)
  276. local lack_money = (need_goods_num-good_num)*good_value
  277. print("============>>> YiRan:EmpowerTreasureView [start:180] money_num :",money_num)
  278. print("============>>> YiRan:EmpowerTreasureView [start:181] need_goods_num:",need_goods_num)
  279. print("============>>> YiRan:EmpowerTreasureView [start:182] good_num :",good_num)
  280. print("============>>> YiRan:EmpowerTreasureView [start:183] good_value :",good_value)
  281. local function ShowTipsViewAutoBuy( )
  282. if (self.model.isOnceBuy41401 == true and self.model.isAutoBuy41401 == false) or self.model.isAutoBuy41401 == true then --自动勾选时通道
  283. self.isTimeCanFire = true
  284. else --物品或金钱足够且没勾选时
  285. function ok_function( flag )
  286. --print("============>>> YiRan:EmpowerTreasureView [start:307] flag :",flag)
  287. --print("============>>> YiRan:EmpowerTreasureView [start:308] self.temp_isAutoBuy41401 :",self.temp_isAutoBuy41401)
  288. if self.temp_isAutoBuy41401 then
  289. self.model.isAutoBuy41401 = true
  290. else
  291. self.model.isAutoBuy41401 = false
  292. self.model.isOnceBuy41401 = true
  293. end
  294. end
  295. function toggle_function( flag )
  296. self.temp_isAutoBuy41401 = flag
  297. --if flag then
  298. -- self.model.isAutoBuy41401 = true
  299. --else
  300. -- self.model.isAutoBuy41401 = false
  301. -- self.model.isOnceBuy41401 = true
  302. --end
  303. end
  304. local coupon_num = GoodsModel:getInstance():GetTypeGoodsNum(self.coupon_id)
  305. local cost_money = (need_goods_num*good_value - coupon_num * self.coupon_exchange_num) > 0 and (need_goods_num*good_value - coupon_num * self.coupon_exchange_num) or 0
  306. if not self.useCard_toggle.isOn then--不勾选
  307. cost_money = need_goods_num*good_value
  308. end
  309. --需要显示购买提示界面
  310. if not self.model.not_tip_quick_circle_refresh then
  311. -- local gold_ab_res,res_name = WordManager:GetCommonMoneyIcon(tonumber(self.cost_data[1]))
  312. local data = {
  313. titleText = "温馨提示",
  314. nameText = "",
  315. price = cost_money,
  316. okText = "确定",
  317. -- gold_ab_res = gold_ab_res,
  318. -- gold_res = res_name,
  319. hide_money_icon = false,
  320. priceText = HtmlColorTxt(cost_money, ColorUtil.YELLOW_DARK) .. " 弹射一次?", --.. HtmlColorTxt("1彩钻", "#d322ff"),
  321. ok_callback = ok_function,
  322. toggle_function = toggle_function,
  323. nameText = "是否使用",
  324. insufficientText = "",-- .. HtmlColorTxt(use_list[3]..WordManager:GetCommonMoneyStr(use_list[1]), "#d322ff") .. "弹射一次
  325. }
  326. GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, data)
  327. else
  328. ok_function()
  329. end
  330. self.isTimeCanFire = false
  331. end
  332. end
  333. if money_num < (need_goods_num-good_num)*good_value then --金钱加卷不足以抵扣时
  334. local lack_good_num = need_goods_num-good_num
  335. --if self.isUsingCard then
  336. -- Message.show("缺少"..lack_good_num.."个"..GoodsModel:getInstance():getGoodsName(good_type, false).."开启")
  337. --else
  338. --Message.show("缺少"..need_money-money_num.."彩钻开启")
  339. Message.show("彩钻不足")
  340. --end
  341. self.isTimeCanFire = false
  342. elseif good_num >= need_goods_num then --物品足够时
  343. if self.isUsingCard then
  344. self.isTimeCanFire = true
  345. else
  346. if money_num < need_goods_num*good_value then
  347. --Message.show("缺少"..need_goods_num*good_value-money_num.."彩钻开启")
  348. Message.show("彩钻不足","fault")
  349. self.isTimeCanFire = false
  350. else
  351. ShowTipsViewAutoBuy()
  352. end
  353. end
  354. elseif self.isUsingCard == false then --金钱加卷足以抵扣但没选用代金券 且物品不足 -- money_num >= (need_goods_num-good_num)*good_value and
  355. if money_num < need_goods_num*good_value then
  356. --Message.show("缺少"..need_money-money_num.."彩钻开启")
  357. Message.show("彩钻不足","fault")
  358. self.isTimeCanFire = false
  359. else
  360. ShowTipsViewAutoBuy()
  361. end
  362. else
  363. ShowTipsViewAutoBuy()
  364. end
  365. else
  366. self.isTimeCanFire = true
  367. end
  368. self:StartPowerUpTimer(self.eachPowerUpTime)
  369. end
  370. local function clickFireHandlerUp(target)
  371. -- Message.show("clickFireHandlerUp")
  372. SetLocalPositionY(self.powerFireBtn_transf, 0) -- 按钮回升
  373. self:FireFun()
  374. end
  375. AddDownEvent(self.powerFireBtn_obj,clickFireHandlerDown,1)
  376. AddUpEvent(self.powerFireBtn_obj,clickFireHandlerUp,2)
  377. local function UPDATA_EMTREASURE_VIEW_INFO_fun(vo)--vo = self.model:GetVo41400() 目前寻宝红点直接在刷界面的时候一起刷了
  378. self:SetLoadingReward(vo.progress,true)
  379. self:UpdateGiftCon(vo.reward)
  380. self:SetDownInfoValue()
  381. self:UpdateFireBtnTxtAndRedDot()
  382. end
  383. self.updata_emtreasure_view_info = self.model:Bind(EmpowerConst.UPDATA_EMTREASURE_VIEW_INFO, UPDATA_EMTREASURE_VIEW_INFO_fun)
  384. local function UPDATA_EMTREASURE_QUALITYS_INFO_fun(vo)
  385. self:ResetQualitys()
  386. end
  387. self.updata_emtreasure_qualitys_info = self.model:Bind(EmpowerConst.UPDATA_EMTREASURE_QUALITYS_INFO, UPDATA_EMTREASURE_QUALITYS_INFO_fun) --41404成功后返回
  388. local function on_ans_update_red_dot( )
  389. self:UpdateEmpowerShopRedDot()
  390. end
  391. self.on_ans_update_red_dot_id = self.model:Bind(EmpowerConst.EMPOWER_SHOP_RED_DOT, on_ans_update_red_dot)
  392. local function onOrientationChange()
  393. self.transform.anchoredPosition = Vector2(ClientConfig.iphone_x_offset_left, 0)
  394. end
  395. self.orientation_change_id = GlobalEventSystem:Bind(EventName.ORIENTATION_DID_CHANGE, onOrientationChange)
  396. --local function onChangeJinHandler()
  397. --self:SetDownInfoValue()
  398. -- end
  399. -- self.change_jin_id = self.mainVo:BindOne("jin",onChangeJinHandler)
  400. end
  401. function EmpowerTreasureView:OpenSuccess()
  402. local select_callback = function(index)
  403. end
  404. self:UpdateView()
  405. end
  406. function EmpowerTreasureView:UpdateView()
  407. self:SetLoadingReward(self.model:GetVo41400().progress,true)
  408. self:SetDownInfoValue()
  409. self:UpdateGiftCon(self.model:GetVo41400().reward)
  410. self:UpdateFireBtnTxtAndRedDot()
  411. --for i = 1, 3 do -- 怕影响美观加载出来后再显示,最后一个不加载
  412. -- self.gift_icon_objs[i]:SetActive(true)
  413. --end
  414. self:UpdateEmpowerShopRedDot()
  415. end
  416. function EmpowerTreasureView:UpdateGiftCon(vo_reward)
  417. local config_Marble_Count_Reward = self.model.Config_Marble_Count_Reward
  418. for k1,v1 in pairs(config_Marble_Count_Reward) do
  419. for k,v in pairs(vo_reward) do
  420. if v1.index == v.id then
  421. if v.state == 2 then
  422. --self.gift_red_dot_objs[k1]:SetActive(true)
  423. --self.gift_icon_img[k1].gray = true
  424. lua_resM:setImageSprite(self, self.gift_icon_objs[k1]:GetComponent("Image"), "empower_asset","emT_rewordGift2",true)
  425. else
  426. --self.gift_red_dot_objs[k1]:SetActive(false)
  427. --self.gift_icon_img[k1].gray = false
  428. lua_resM:setImageSprite(self, self.gift_icon_objs[k1]:GetComponent("Image"), "empower_asset","emT_rewordGift",true)
  429. end
  430. end
  431. end
  432. end
  433. end
  434. function EmpowerTreasureView:SetDownInfoValue()
  435. local good_num = GoodsModel:getInstance():GetTypeGoodsNum(self.coupon_id)
  436. local marble_cost = stringtotable(self.model:GetConfigMarbleKvVal("marble_cost"))
  437. local list = marble_cost
  438. local need_money = list[2][2][3]
  439. local need_goods_num = list[1][2][3]
  440. self.moneyShow_txt.fontSize = 24
  441. local cost_money = (need_money - good_num * self.coupon_exchange_num) > 0 and (need_money - good_num * self.coupon_exchange_num) or 0
  442. if not self.useCard_toggle.isOn then--不勾选
  443. cost_money = need_money
  444. end
  445. self.moneyShow_txt.text = HtmlColorTxt(cost_money, ColorUtil.WHITE_DARK)
  446. local good_type = list[1][2][2]
  447. local good_num = GoodsModel:getInstance():GetTypeGoodsNum(good_type)
  448. if good_num >= need_goods_num then
  449. self.cardNum_txt.text = string.format("<color=%s>%s</color>/%s",ColorUtil.GREEN_DARK,good_num,need_goods_num)
  450. else
  451. self.cardNum_txt.text = string.format("<color=%s>%s</color>/%s",ColorUtil.RED_DARK,good_num,need_goods_num)
  452. end
  453. local reset_cost = stringtotable(self.model:GetConfigMarbleKvVal("reset_cost"))
  454. local reset_count = self.model:GetVo41400().reset_count + 1
  455. if reset_count > #reset_cost then
  456. use_list = reset_cost[#reset_cost][2]
  457. else
  458. use_list = reset_cost[reset_count][2]
  459. end
  460. self.btnReset_txt.text = use_list[3]
  461. end
  462. function EmpowerTreasureView:UpdateEmpowerShopRedDot( )
  463. local bool = self.model:GetEmpowerRedDotList()[EmpowerConst.EmpowerViewType.EmpowerShop]
  464. self.shopRedDot_obj:SetActive(bool)
  465. end
  466. function EmpowerTreasureView:UpdateFireBtnTxtAndRedDot( )
  467. local num = self.config_free_count - self.model:GetVo41400().count
  468. if num >= 1 then
  469. self.cueTimeTxt_txt.text = "当日前免费次数剩余:"..num
  470. self.powerFireBtn_redDot:SetActive(true)
  471. self.moneyShow_txt.text = "免费"..HtmlColorTxt(num, ColorUtil.GREEN_DARK).."/"..self.config_free_count
  472. self.moneyShow_txt.fontSize = 20
  473. else
  474. self.cueTimeTxt_txt.text = "当日前免费次数已用光"
  475. self.powerFireBtn_redDot:SetActive(false)
  476. end
  477. end
  478. function EmpowerTreasureView:ResetGame()
  479. self.isGaming = false
  480. self.closeBtn_img.raycastTarget = true
  481. self.resetBtn_img.raycastTarget = true
  482. self.ball_Riridbody.velocity = Vector2(0, 0)
  483. SetLocalPosition(self.ball_tranf, 329, -185, 0)
  484. self:StartTreasureTimer(9999)
  485. self:ShineLight(EmpowerConst.EmpowerShineTimeSpan_s_normal)
  486. self:ShineLight2(EmpowerConst.EmpowerShineTimeSpan_l_normal)
  487. end
  488. function EmpowerTreasureView:ResetQualitys( )
  489. local box_index = self.model:GetVo41400().box_index
  490. --self.qualitysList = box_index --or self.model:GetFreshTreasureQualitys() -- 拿不到就拿前端自己生成的
  491. self.qualitysList = {} -- 修改成原来格式
  492. for i=1,#box_index do
  493. for _i,v in ipairs(box_index) do
  494. if v.index == i then
  495. self.qualitysList[i] = v.qua
  496. end
  497. end
  498. end
  499. for k,v in pairs(self.qualitysList) do
  500. lua_resM:setImageSprite(self, self.img_qualitys_img[k], "empower_asset","empower_show_quality_"..v,true)
  501. end
  502. end
  503. function EmpowerTreasureView:IsBallInStuckPos( )
  504. local ballPosX = GetLocalPositionX(self.ball_tranf)
  505. local ballPosY = GetLocalPositionY(self.ball_tranf)
  506. local bool1 = (ballPosY >=self.springColiderPosY -40) and (ballPosY <=self.springColiderPosY + 40)
  507. and (ballPosX >=self.springColiderPosX-40) and (ballPosX <=self.springColiderPosX + 40)
  508. local bool2 = GetLocalPositionY(self.ball_tranf) < GetLocalPositionY(self.finalPos_tranfs[1])
  509. if not bool1 and not bool2 then
  510. return true
  511. else
  512. return false
  513. end
  514. end
  515. function EmpowerTreasureView:IsBallStuck( ) -- Updata中判断的
  516. local waitTime = 8
  517. if self:IsBallInStuckPos( ) then
  518. self.isStuckTimesNum = self.isStuckTimesNum + 1
  519. if self.isStuckTimesNum == waitTime then
  520. Message.show("球好像卡住了,重新开始吧","fault")
  521. return true
  522. end
  523. else
  524. self.isStuckTimesNum = 0
  525. return false
  526. end
  527. end
  528. function EmpowerTreasureView:StartTreasureTimer(stime)
  529. local time = stime
  530. local onUpdate = function ()
  531. if self:IsBallStuck( ) then
  532. self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41402,0,0,"0")
  533. self:CancelTimer(self.start_timer_id)
  534. self:ResetGame()
  535. return
  536. end
  537. local ballPosX = GetLocalPositionX(self.ball_tranf)
  538. local ballPosY = GetLocalPositionY(self.ball_tranf)
  539. time = time - 1
  540. if (ballPosY >=self.springColiderPosY -40) and (ballPosY <=self.springColiderPosY + 40)
  541. and (ballPosX >=self.springColiderPosX-40) and (ballPosX <=self.springColiderPosX + 40) then
  542. self.isPosCanFire = true
  543. else
  544. self.isPosCanFire = false
  545. end
  546. if GetLocalPositionY(self.ball_tranf) < GetLocalPositionY(self.finalPos_tranfs[1]) then -- 不用触发器了-160
  547. for i = 1, 5 do
  548. local rangeNum = 60
  549. local pointPosX = GetLocalPositionX(self.finalPos_tranfs[i])
  550. if (ballPosX >= pointPosX - rangeNum) and (ballPosX <= pointPosX + rangeNum ) then
  551. self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41402,1,self.qualitysList[i],self:GetTokens( ))
  552. --Message.show("游戏结束,此时落在框",i,"品质为:",self.qualitysList[i])
  553. self:CancelTimer(self.start_timer_id)
  554. local function delay( ) -- 让弹跳的球缓一下
  555. self:ResetGame()
  556. end
  557. self.resetGame_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,2)
  558. end
  559. end
  560. end
  561. if time < 0 then
  562. Message.show("游戏结束,时间到","fault")
  563. self:CancelTimer(self.start_timer_id)
  564. end
  565. end
  566. if not self.start_timer_id then
  567. self.start_timer_id = GlobalTimerQuest:AddPeriodQuest(onUpdate, 1, -1)
  568. onUpdate()
  569. end
  570. end
  571. function EmpowerTreasureView:StartPowerUpTimer(time)
  572. if not self.isPosCanFire or not self.isTimeCanFire then return end
  573. self.isGaming = true
  574. self.ifCanKeyUp = true
  575. self.closeBtn_img.raycastTarget = false
  576. self.resetBtn_img.raycastTarget = false
  577. self.powerNum = 0
  578. local onUpdate = function ()
  579. self.powerNum = self.powerNum + 1
  580. self.springDeltaY = self.springDeltaY - 8
  581. --self.fireBtnDeltaY = self.fireBtnDeltaY - 1
  582. self:ActionDeltaYBack(time,self.springDeltaY,self.spring)
  583. --self:ActionDeltaYBack(time,self.fireBtnDeltaY,self.powerFireBtn_transf)
  584. self:SetPowerSignsActive(true,self.powerNum)
  585. if self.powerNum >= 7 then
  586. self:CancelTimer(self.powerUp_timer_id)
  587. end
  588. end
  589. if not self.powerUp_timer_id then
  590. self.powerUp_timer_id = GlobalTimerQuest:AddPeriodQuest(onUpdate, time, -time)
  591. onUpdate()
  592. end
  593. end
  594. function EmpowerTreasureView:FireFun( )
  595. if self.ifCanKeyUp == false then return end
  596. if not self.isPosCanFire or not self.isTimeCanFire then return end
  597. self.ifCanKeyUp = false
  598. self:CancelTimer(self.powerUp_timer_id)
  599. --Message.show(" GetSizeDeltaY(self.spring):", GetSizeDeltaY(self.spring)/self.springStartDeltaY)
  600. print("============>>> YiRan:EmpowerTreasureView [start:497] self.springDeltaY :",self.springDeltaY)
  601. local num = 1 - (GetSizeDeltaY(self.spring)/self.springStartDeltaY) --系数
  602. self.ball_Riridbody:AddForce(Vector2(0,520 + (820*num)))
  603. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
  604. self:ActionDeltaYBack(0.1,self.springStartDeltaY,self.spring)
  605. self.startTime = tonumber(TimeUtil:getServerTime())
  606. local cost_opt = 2 -- 目前写死,1 是用代金券 2 是用钻石
  607. if self.isUsingCard then
  608. cost_opt = 1
  609. end
  610. if (self.model.isOnceBuy41401 == true and self.model.isAutoBuy41401 == false) or self.model.isAutoBuy41401 == true then
  611. self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41401,1,cost_opt,self.startTime) -- 开始
  612. self.model.isOnceBuy41401 = false
  613. else
  614. self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41401,0,cost_opt,self.startTime) -- 开始
  615. end
  616. local function delay( ) -- 弹簧不能瞬移恢复球还在移动
  617. self.powerNum = 0
  618. self:SetPowerSignsActive(false)
  619. self.springDeltaY = self.springStartDeltaY--self.spring_img:SetNativeSize()
  620. end
  621. self:ShineLight(EmpowerConst.EmpowerShineTimeSpan_s_rush)
  622. self:ShineLight2(EmpowerConst.EmpowerShineTimeSpan_l_rush)
  623. self.spring_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,0.1)
  624. self.isPosCanFire = false
  625. end
  626. function EmpowerTreasureView:ActionDeltaYBack( time ,deltaY,transf)
  627. local action_1 = cc.SizeTo.New( time, GetSizeDeltaX(transf), deltaY)
  628. local function action_call_back( )
  629. end
  630. local action_call = cc.CallFunc.New( action_call_back )
  631. local final_action = cc.Sequence.New( action_1,action_call )
  632. self:AddAction(final_action, transf)
  633. end
  634. function EmpowerTreasureView:LoadindActionDeltaY(time ,deltaY,transf)
  635. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.loading)
  636. local action_1 = cc.SizeTo.New( time, GetSizeDeltaX(transf), deltaY)
  637. local function action_call_back( )
  638. --local function delay( ) -- cue_bg_obj延迟隐藏
  639. -- self.cue_bg_obj:SetActive(false)
  640. --end
  641. --self.loadingTxt_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,0.4)
  642. end
  643. local action_call = cc.CallFunc.New( action_call_back )
  644. local final_action = cc.Sequence.New( action_1,action_call )
  645. self:AddAction(final_action, transf)
  646. end
  647. function EmpowerTreasureView:SetPowerSignsActive( bool,num )
  648. if bool then
  649. self.powerSign_objs[num]:SetActive(true)
  650. else
  651. for i = 1, #self.powerSign_objs do
  652. self.powerSign_objs[i]:SetActive(false)
  653. end
  654. end
  655. end
  656. function EmpowerTreasureView:SetLoadingReward( countNum,isShowLoading )
  657. local max = 0
  658. for k,v in pairs(self.model.Config_Marble_Count_Reward) do
  659. if max < v.count then
  660. max = v.count
  661. end
  662. if countNum >= v.count then -- 这一行够格
  663. self.emT_loadSign_objs[k]:SetActive(true)
  664. else
  665. self.emT_loadSign_objs[k]:SetActive(false)
  666. end
  667. end
  668. local percentNum = countNum/max
  669. if percentNum >= 1 then
  670. percentNum = 1
  671. end
  672. local reset_count = self.model:GetVo41400().reset_count
  673. local reset_limit = self.model:GetResetLimitNum()
  674. ------重置红点
  675. self.resetBtn_redDot_obj:SetActive(percentNum >= 1 and reset_count < reset_limit)
  676. ------按键置灰
  677. self.powerFireBtnDark_obj:SetActive(percentNum >= 1) --是否置灰处理
  678. self.powerFireBtn_img.raycastTarget = not (percentNum >= 1)
  679. self.loading_obj:SetActive(true)
  680. if isShowLoading then
  681. --self.cue_bg_obj:SetActive(true)
  682. self:LoadindActionDeltaY(1,percentNum * self.loadingMaxY,self.loading)
  683. self.cue_loading_txt.text = countNum
  684. else
  685. SetSizeDeltaY(self.loading, percentNum * self.loadingMaxY)
  686. end
  687. local goodId = 0
  688. local num = 0
  689. for k,v in pairs(self.model:GetVo41400().reward) do
  690. if v.fixed_reward and v.fixed_reward[1]then
  691. for k,v in pairs(v.fixed_reward) do
  692. if v.goodsid then
  693. goodId = v.goodsid
  694. num = v.num
  695. --print("============>>> YiRan:EmpowerTreasureView [start:319] goodsid:",goodsid,"num:",num)
  696. end
  697. end
  698. end
  699. end
  700. if goodId == 0 then
  701. self.topRwardItem:SetVisible(false)
  702. else
  703. self.topRwardItem:SetVisible(true)
  704. self.topRwardItem:SetData(goodId,num)
  705. end
  706. end
  707. function EmpowerTreasureView:CancelTimer( timer )
  708. if timer == self.start_timer_id then
  709. GlobalTimerQuest:CancelQuest(self.start_timer_id)
  710. self.start_timer_id = nil
  711. elseif timer == self.powerUp_timer_id then
  712. GlobalTimerQuest:CancelQuest(self.powerUp_timer_id)
  713. self.powerUp_timer_id = nil
  714. elseif timer == self.spring_delay_timer then
  715. GlobalTimerQuest:CancelQuest(self.spring_delay_timer)
  716. self.powerUp_timer_id = nil
  717. elseif timer == self.resetGame_delay_timer then
  718. GlobalTimerQuest:CancelQuest(self.resetGame_delay_timer)
  719. self.resetGame_delay_timer = nil
  720. elseif timer == self.loadingTxt_delay_timer then
  721. GlobalTimerQuest:CancelQuest(self.loadingTxt_delay_timer)
  722. self.loadingTxt_delay_timer = nil
  723. end
  724. end
  725. function EmpowerTreasureView:GetTokens( )
  726. local pid = tonumber(self.mainVo.role_id) or 1
  727. local time_stamp = self.startTime or TimeUtil:getServerTime()--os.time()
  728. local account = self.model:GetVo41400().count + 1
  729. local subfix = Trim(self.model:GetConfigMarbleKvVal("rand_string"))
  730. print("============>>> YiRan:EmpowerTreasureView [start:442] pid:",pid)
  731. print("============>>> YiRan:EmpowerTreasureView [start:442] time_stamp:",time_stamp)
  732. print("============>>> YiRan:EmpowerTreasureView [start:442] account:",account)
  733. print("============>>> YiRan:EmpowerTreasureView [start:442] subfix:",subfix)
  734. local ticket = pid .. time_stamp .. account .. subfix
  735. ticket = string.gsub(ticket, '"', '')
  736. print("============>>> YiRan:EmpowerTreasureView [start:447] ticket :",ticket)
  737. ticket = string.lower(Util.md5(ticket))
  738. print("============>>> YiRan:EmpowerTreasureView [start:447] ticket.md5:",ticket)
  739. return ticket
  740. -- self:SendFmtToGame(10000, "iiss", pid, time_stamp, account_id,ticket)
  741. end
  742. function EmpowerTreasureView:ShineLight(setTimeSpace)
  743. self:ClearHideTimer()
  744. self.light_img_num = 0
  745. local function hide_timer()
  746. if self.light_img_num >= 3 then
  747. self.light_img_num = 1
  748. else
  749. self.light_img_num = self.light_img_num + 1
  750. end
  751. lua_resM:setImageSprite(self, self.light_img, "empower_asset","ept_light"..self.light_img_num,false)
  752. end
  753. hide_timer()
  754. self.hide_timer_id = GlobalTimerQuest:AddPeriodQuest(hide_timer, setTimeSpace, -1)
  755. end
  756. function EmpowerTreasureView:ShineLight2(setTimeSpace)
  757. self:ClearHideTimer2()
  758. self.light_img_num2 = 0
  759. local function hide_timer()
  760. if self.light_img_num2 >= 3 then
  761. self.light_img_num2 = 1
  762. else
  763. self.light_img_num2 = self.light_img_num2 + 1
  764. end
  765. lua_resM:setOutsideImageSprite(self, self.light_img_big, GameResPath.GetEmpowerIcon("ept_light_big_"..self.light_img_num2), false)
  766. end
  767. hide_timer()
  768. self.hide_timer_id2 = GlobalTimerQuest:AddPeriodQuest(hide_timer, setTimeSpace, -1)
  769. end
  770. function EmpowerTreasureView:ClearHideTimer()
  771. if self.hide_timer_id then
  772. GlobalTimerQuest:CancelQuest(self.hide_timer_id)
  773. self.hide_timer_id = nil
  774. end
  775. end
  776. function EmpowerTreasureView:ClearHideTimer2()
  777. if self.hide_timer_id2 then
  778. GlobalTimerQuest:CancelQuest(self.hide_timer_id2)
  779. self.hide_timer_id2 = nil
  780. end
  781. end
  782. function EmpowerTreasureView:DestroySuccess( )
  783. self:ClearHideTimer()
  784. self:ClearHideTimer2()
  785. if self.on_ans_update_red_dot_id then
  786. self.model:UnBind(self.on_ans_update_red_dot_id)
  787. self.on_ans_update_red_dot_id = nil
  788. end
  789. if self.updata_emtreasure_view_info then
  790. self.model:UnBind(self.updata_emtreasure_view_info)
  791. self.updata_emtreasure_view_info = nil
  792. end
  793. if self.updata_emtreasure_qualitys_info then
  794. self.model:UnBind(self.updata_emtreasure_qualitys_info)
  795. self.updata_emtreasure_qualitys_info = nil
  796. end
  797. self:CancelTimer(self.start_timer_id)
  798. self:CancelTimer(self.powerUp_timer_id)
  799. self:CancelTimer(self.spring_delay_timer)
  800. self:CancelTimer(self.resetGame_delay_timer)
  801. self:CancelTimer(self.loadingTxt_delay_timer)
  802. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
  803. --cc.ActionManager:getInstance():removeAllActionsFromTarget(self.powerFireBtn_transf)
  804. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.loading)
  805. for i=1,#self.awardItems do
  806. if self.awardItems[i] then
  807. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItems[i])
  808. self.awardItems[i] = nil
  809. end
  810. end
  811. for i=1,#self.probAwardItems do
  812. if self.probAwardItems[i] then
  813. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.probAwardItems[i])
  814. self.probAwardItems[i] = nil
  815. end
  816. end
  817. if self.topRwardItem then
  818. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.topRwardItem)
  819. self.topRwardItem = nil
  820. end
  821. --if self.change_jin_id then
  822. -- self.mainVo:UnBind(self.change_jin_id)
  823. -- self.change_jin_id = nil
  824. -- end
  825. if self.isGaming == true then
  826. -- Message.show("中途强制退出")
  827. self.closeBtn_img.raycastTarget = true
  828. self.resetBtn_img.raycastTarget = false
  829. self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41402,0,0,"0") -- 告诉后端玩家取消发射了
  830. end
  831. if self.orientation_change_id then
  832. GlobalEventSystem:UnBind(self.orientation_change_id)
  833. self.orientation_change_id = nil
  834. end
  835. end