UITurnWheelTipsView.lua 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884
  1. local UITurnWheelTipsView = require("UISeason/UITurnWheelTipsView_Generate")
  2. function UITurnWheelTipsView:OnAwake(data)
  3. self.controller = require("UISeason/UITurnWheelTipsCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UITurnWheelTipsView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  9. end
  10. function UITurnWheelTipsView:FillContent(data, uiBase)
  11. self.uiBase = uiBase
  12. local gameObject = self.uiBase:GetRoot()
  13. if gameObject ~= nil then
  14. self.gameObject = gameObject
  15. self.transform = gameObject.transform
  16. end
  17. self:InitGenerate(self.transform, data)
  18. self:Init()
  19. end
  20. function UITurnWheelTipsView:Init()
  21. ManagerContainer.DataMgr.TrunWheelDataMgr:OnResetState()
  22. local bIsStartstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("StartTurn")
  23. if bIsStartstate then
  24. local IsOver = ManagerContainer.DataMgr.TrunWheelDataMgr:IsReceiverOver() --是否全部领取
  25. if IsOver then --结束本轮
  26. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("FinishedTrun")
  27. end
  28. end
  29. --指针位置 指向最后一次关闭获取
  30. local RolTrans = self.needle:GetComponent(Enum.TypeInfo.RolRectTransform)
  31. if RolTrans then
  32. local Angle = ManagerContainer.DataMgr.TrunWheelDataMgr:GetLastWhellAngle()
  33. local nCount = ManagerContainer.DataMgr.TrunWheelDataMgr:GetReceivePrizeInfoCount()
  34. if nCount <= 0 or nCount >= 8 then
  35. Angle = 0
  36. end
  37. RolTrans:SetAngle(0,0,Angle)
  38. end
  39. self.RunTimes = 0
  40. self:RefreshSeason() --积分刷新
  41. self:Refresh()
  42. self:RefreshCostGoldIcon()
  43. end
  44. function UITurnWheelTipsView:RemoveEventListener()
  45. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  46. end
  47. function UITurnWheelTipsView:AddUIEventListener()
  48. self.uiBase:AddButtonEventListener(self.btnTurnOne.button, self, self.OnClickOnceRun)
  49. self.uiBase:AddButtonEventListener(self.btnTurnAll.button, self, self.OnClickAllRun)
  50. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnClickExit)
  51. self.uiBase:AddButtonEventListener(self.scoreInfo.button, self, self.OnClickHelpBtn)
  52. self.uiBase:AddButtonEventListener(self.btnFinishTurn.button, self, self.OnEndTurn)
  53. self.uiBase:AddButtonEventListener(self.btnStartTurn.button, self, self.OnBeginTurn)
  54. self.uiBase:AddButtonEventListener(self.btnRefresh.button, self, self.OnRefreshTurn)
  55. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TRUNWHELL_EVENT_LOG_ACK, self, self.OnLogPrizeInfoAck)
  56. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TRUNWHELL_EVENT_LOG_NTF, self, self.OnAddPrizeInfoNTF)
  57. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TRUNWHELL_EVENT_REFRESH_ACK, self, self.OnRefreshAck)
  58. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TRUNWHELL_EVENT_OPEN_REWARD_ACK, self, self.OnOpenRewardAck)
  59. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TRUNWHELL_EVENT_REWARD_ACK, self, self.OnRewardAck)
  60. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TRUNWHELL_EVENT_CLOSE_REWARD, self, self.OnCloseRewardAck)
  61. --移动切换item
  62. local OnSelected = function (idx)
  63. self:OnTransSelectedItem(idx)
  64. end
  65. --结束转动
  66. local OnFinished = function (idx)
  67. self:OnTranSelectFinished(idx)
  68. end
  69. --滚动文字
  70. local OnChangeText = function (TextObj)
  71. self:ChangeLogText(TextObj)
  72. end
  73. --积分监听
  74. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_OPEN_NTF, self, self.RefreshSeason)
  75. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DIAMOND_CHANGED, self, self.RefreshGold)
  76. local RolTrans = self.needle:GetComponent(Enum.TypeInfo.RolRectTransform)
  77. if nil ~= RolTrans then
  78. RolTrans.mSelectAction = OnSelected
  79. RolTrans.mFinishAction = OnFinished
  80. end
  81. self:SendLogPrizeInfoREQ()
  82. self.NextTextIndex = 0
  83. local TextAuto = self.viewport:GetComponent(Enum.TypeInfo.UiLoopAutoMove)
  84. if nil ~= TextAuto then
  85. TextAuto:SetChangeInfoCb(OnChangeText)
  86. end
  87. end
  88. function UITurnWheelTipsView:OnHide()
  89. end
  90. function UITurnWheelTipsView:OnShow(data)
  91. self.controller:SetData(data)
  92. end
  93. function UITurnWheelTipsView:OnClose()
  94. self:StopTurn()
  95. self:RemoveTimer()
  96. end
  97. function UITurnWheelTipsView:OnDispose()
  98. self.controller:OnDispose()
  99. end
  100. -------------------------------------sever
  101. --请求刷新转盘道具
  102. function UITurnWheelTipsView:SendRefreshREQ()
  103. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_DAO_CHANG100_WHEEL_REFRESH_REQ)
  104. end
  105. --收到刷新道具
  106. function UITurnWheelTipsView:OnRefreshAck(data)
  107. --LogError("OnRefreshAck" .. Inspect(data))
  108. if data.error ~= Enum.NetErrorCode.ERROR_OK then
  109. self:PopErrorTips('397')
  110. return
  111. end
  112. --收起动画
  113. self:PlayAniRun(self.trunAnim.animator,Enum.TrunWheelAniName.TrunRefresh1)
  114. self:OnUnSelectedItem()
  115. self:OnUnPrizeitem()
  116. --结束动画
  117. self:Refresh()
  118. self:RemoveTimer()
  119. self.WaitTimerId = ManagerContainer.LuaTimerMgr:AddTimer(200, 1, self, self.OnRefreshAni, nil)
  120. end
  121. --请求开启本轮
  122. function UITurnWheelTipsView:SendOpenRewardREQ()
  123. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_DAO_CHANG100_WHEEL_OPEN_REWARD_REQ)
  124. end
  125. --收到本轮开始
  126. function UITurnWheelTipsView:OnOpenRewardAck(data)
  127. if data.error ~= Enum.NetErrorCode.ERROR_OK then
  128. self:PopErrorTips('397')
  129. return
  130. end
  131. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("StartTurn")
  132. self:PlayAniRun(self.trunAnim.animator,Enum.TrunWheelAniName.TrunStart)
  133. self:RefreshBtn()
  134. self:OnUnPrizeitem()
  135. self:RefreshCostGoldIcon()
  136. end
  137. --请求转动 1 all(获取奖励)
  138. function UITurnWheelTipsView:SendRewardREQ(Isall)
  139. --reward_all false 1次 true 获取所有
  140. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_DAO_CHANG100_WHEEL_REWARD_REQ,{reward_all = Isall})
  141. end
  142. --收到奖励
  143. function UITurnWheelTipsView:OnRewardAck(data)
  144. --LogError("OnRewardAck"..Inspect(data))
  145. if data.error ~= Enum.NetErrorCode.ERROR_OK then
  146. self:PopErrorTips('397')
  147. return
  148. end
  149. self.RunTimes = #data.reward_list
  150. if self.RunTimes > 0 then
  151. local item = data.reward_list[1]
  152. if item then
  153. local nSelectindex = ManagerContainer.DataMgr.TrunWheelDataMgr:FindItemIdx(item.item_idx)
  154. ManagerContainer.DataMgr.TrunWheelDataMgr:SetStopItem(nSelectindex -1)
  155. end
  156. if self.RunTimes > 1 then
  157. local nSelectindex = ManagerContainer.DataMgr.TrunWheelDataMgr:GetBigPreizeNextIdx()
  158. ManagerContainer.DataMgr.TrunWheelDataMgr:SetStopItem(nSelectindex -1)
  159. end
  160. self.Truning = true
  161. self:RunTurn(self.RunTimes)
  162. end
  163. end
  164. --请求关闭本轮转盘
  165. function UITurnWheelTipsView:SendCloseRewardREQ()
  166. self:OnUnReceiveItem()
  167. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_DAO_CHANG100_WHEEL_CLOSE_REWARD_REQ)
  168. end
  169. --收到关闭本轮
  170. function UITurnWheelTipsView:OnCloseRewardAck(data)
  171. if data.error ~= Enum.NetErrorCode.ERROR_OK then
  172. self:PopErrorTips('397')
  173. return
  174. end
  175. self:PlayAniRun(self.trunAnim.animator,Enum.TrunWheelAniName.TrunRefresh1)
  176. self:OnUnSelectedItem()
  177. self:OnUnPrizeitem()
  178. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("ReadyTurn")
  179. self:Refresh()
  180. self:RemoveTimer()
  181. self.WaitTimerId = ManagerContainer.LuaTimerMgr:AddTimer(200, 1, self, self.OnRefreshAni, nil)
  182. end
  183. --请求获奖日志
  184. function UITurnWheelTipsView:SendLogPrizeInfoREQ()
  185. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_DAO_CHANG100_WHEEL_LOG_REQ)
  186. end
  187. --收svr到获奖日志
  188. function UITurnWheelTipsView:OnLogPrizeInfoAck(data)
  189. self:RunAotoLoopText()
  190. end
  191. --添加获奖信息
  192. function UITurnWheelTipsView:OnAddPrizeInfoNTF(data)
  193. self:RunAotoLoopText()
  194. end
  195. ---------------------------------------------------------------------
  196. --添加文字
  197. function UITurnWheelTipsView:ChangeLogText(TextObj)
  198. self.NextTextIndex = self.NextTextIndex + 1
  199. local strInfo = ManagerContainer.DataMgr.TrunWheelDataMgr:GetLogData(self.NextTextIndex)
  200. TextObj.text = strInfo
  201. end
  202. --转动到ITEM
  203. function UITurnWheelTipsView:OnTransSelectedItem(idx)
  204. local bIsFinishedstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("RunOnceTrun")
  205. local bIsAllFinishedstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("RunAllTrun")
  206. if bIsFinishedstate or bIsAllFinishedstate then
  207. self:OnUnSelectedItem()
  208. self:OnSelectedItem(idx+1)
  209. end
  210. end
  211. --转动结束
  212. function UITurnWheelTipsView:OnTranSelectFinished(idx)
  213. local bIsFinishedstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("RunOnceTrun")
  214. local bIsAllFinishedstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("RunAllTrun")
  215. if bIsFinishedstate or bIsAllFinishedstate then
  216. ManagerContainer.DataMgr.TrunWheelDataMgr:ReceivePrizeInfo(idx+1) --标记已领取
  217. if not self:IsNil(self:GetPosItem(idx+1)) then
  218. self:PlayAniRun(self:GetPosItem(idx+1).iconLight.animator,"IconLightShow")
  219. end
  220. end
  221. if bIsAllFinishedstate then --全部获取
  222. self.RunTimes = self.RunTimes - 1
  223. if self.RunTimes < 1 then --全部显示完毕
  224. self.Truning = false
  225. self:RemoveTimer()
  226. self.FinshedTrunTimeId = ManagerContainer.LuaTimerMgr:AddTimer(600, 1, self, self.FinshedAllTrun, nil)
  227. else
  228. --继续旋转下一个
  229. local nStopIndex = ManagerContainer.DataMgr.TrunWheelDataMgr:GetAutoNextStopItem()
  230. ManagerContainer.DataMgr.TrunWheelDataMgr:SetStopItem(nStopIndex -1)
  231. self:RunTurn(8)
  232. end
  233. elseif bIsFinishedstate then--单次获取获取
  234. self.Truning = false
  235. self:RemoveTimer()
  236. self.FinshedTrunTimeId = ManagerContainer.LuaTimerMgr:AddTimer(600, 1, self, self.FinshedOnceTrun, {Index = idx})
  237. end
  238. end
  239. --滚动文字
  240. function UITurnWheelTipsView:RunAotoLoopText()
  241. if self.viewport then
  242. local TextAuto = self.viewport:GetComponent(Enum.TypeInfo.UiLoopAutoMove)
  243. if nil ~= TextAuto then
  244. local nCount = ManagerContainer.DataMgr.TrunWheelDataMgr:GetLogCount()
  245. if nCount <= 5 then
  246. for i = 1, nCount do
  247. self.NextTextIndex = self.NextTextIndex +1
  248. local strInfo = ManagerContainer.DataMgr.TrunWheelDataMgr:GetLogData(self.NextTextIndex)
  249. TextAuto:SetText(i-1,strInfo)
  250. end
  251. end
  252. if nCount > 4 then
  253. TextAuto:RunMove()
  254. end
  255. end
  256. end
  257. end
  258. --完成8连抽
  259. function UITurnWheelTipsView:FinshedAllTrun()
  260. self:OnUnPrizeitem() --关闭高光
  261. self:SetReceivedItem(true) --全部领取设置
  262. self:PoAllpGet()
  263. self:OnUnSelectedItem()
  264. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("FinishedTrun")
  265. --请求积分
  266. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_COMPETITION_REQ, {competition_id = 3})
  267. self:RefreshBtn() --刷新按钮
  268. self:RemoveTimer()
  269. end
  270. --完成1抽
  271. function UITurnWheelTipsView:FinshedOnceTrun(Timeid,params)
  272. local idx = params.Index
  273. self:OnUnPrizeitem() --关闭高光
  274. self:OnReceiveItem(idx+1,true)
  275. if not self:IsNil(self:GetPosItem(idx+1)) then
  276. self:GetPosItem(idx+1).needleLight:SetActive(false) --转动指针关闭
  277. end
  278. --1.5秒后关闭 显示道具
  279. self:PopGet(idx+1)--UIPOPGot 弹窗获取到
  280. local IsOver = ManagerContainer.DataMgr.TrunWheelDataMgr:IsReceiverOver() --是否全部领取
  281. if IsOver then --结束本轮
  282. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("FinishedTrun")
  283. else
  284. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("StartTurn")
  285. end
  286. --请求积分
  287. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_COMPETITION_REQ, {competition_id = 3})
  288. self:OnUnSelectedItem()
  289. self:RefreshBtn() --刷新按钮
  290. self:RemoveTimer()
  291. self:RefreshCostGoldIcon()
  292. end
  293. function UITurnWheelTipsView:RemoveTimer()
  294. if self.FinshedTrunTimeId ~= nil then
  295. ManagerContainer.LuaTimerMgr:RemoveTimer(self.FinshedTrunTimeId);
  296. self.FinshedTrunTimeId = nil
  297. end
  298. if self.WaitTimerId ~= nil then
  299. ManagerContainer.LuaTimerMgr:RemoveTimer(self.WaitTimerId);
  300. self.WaitTimerId = nil
  301. end
  302. end
  303. --展示获得道具
  304. function UITurnWheelTipsView:PopGet(idx)
  305. local _rewards = {}
  306. local Item = ManagerContainer.DataMgr.TrunWheelDataMgr:GetData(idx)
  307. if Item then
  308. table.insert(_rewards,
  309. {
  310. cfgId = Item.nItemId,
  311. num = Item.nItemNum,
  312. })
  313. end
  314. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot, {rewards = _rewards})
  315. end
  316. --展示全部道具
  317. function UITurnWheelTipsView:PoAllpGet()
  318. local _rewards = {}
  319. for i=1,8 do
  320. local Item = ManagerContainer.DataMgr.TrunWheelDataMgr:GetData(i)
  321. if Item then
  322. table.insert(_rewards,
  323. {
  324. cfgId = Item.nItemId,
  325. num = Item.nItemNum,
  326. })
  327. end
  328. end
  329. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot, {rewards = _rewards})
  330. end
  331. --Error弹窗
  332. function UITurnWheelTipsView:PopErrorTips(Key)
  333. if not ManagerContainer.LuaUIMgr:GetPage(Enum.UIPageName.UIErrorTips) then
  334. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIErrorTips, {errorId=Key}, nil, nil, nil, Enum.UISibling[Enum.UIType.Top + 1] + 11)
  335. else
  336. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ERROR_DESC_DISPLAY, {errorId=Key})
  337. end
  338. end
  339. --设置奖项
  340. function UITurnWheelTipsView:SetItem(idx,ItemInfo)
  341. local Item = self:GetPosItem(idx)
  342. if Item then
  343. CommonUtil.SetRewardItemData(self,ItemInfo.nItemId,Item.iconItem,ItemInfo.nItemNum, self.OnClickItem)
  344. self:SetGrandPrizeItem(idx,ItemInfo.bIsGrandPrize)
  345. self:OnReceiveItem(idx,ItemInfo.hasReceive)
  346. end
  347. end
  348. --全部领取ITEM
  349. function UITurnWheelTipsView:SetReceivedItem(IsShow)
  350. for i=1,8 do
  351. if not self:IsNil(self:GetPosItem(i)) then
  352. self:GetPosItem(i).received:SetActive(IsShow)
  353. self:GetPosItem(i).available:SetActive(not IsShow)
  354. end
  355. end
  356. end
  357. --设置tips
  358. function UITurnWheelTipsView:OnClickItem(btn,params)
  359. local logicData = params[0]
  360. ManagerContainer.LuaUIMgr:OpenTips(logicData)
  361. end
  362. function UITurnWheelTipsView:StopTurn()
  363. local RolTrans = self.needle:GetComponent(Enum.TypeInfo.RolRectTransform)
  364. if RolTrans then
  365. RolTrans:Stop()
  366. end
  367. end
  368. --退出
  369. function UITurnWheelTipsView:OnClickExit()
  370. self:UIClose()
  371. end
  372. --刷新奖励
  373. function UITurnWheelTipsView:OnRefreshTurn()
  374. local IsOver = ManagerContainer.DataMgr.CompetitionData:IsOveerCurSeason()
  375. if IsOver then
  376. self:PopErrorTips('LabelOver')
  377. return
  378. end
  379. --是否金币足够刷新
  380. local bIsCanRefresh = ManagerContainer.DataMgr.TrunWheelDataMgr:IsRefreshCostGold()
  381. if bIsCanRefresh then
  382. --请求新数据
  383. self:SendRefreshREQ()
  384. else
  385. self:PopErrorTips('SeasonLackGold')
  386. end
  387. end
  388. function UITurnWheelTipsView:OnRefreshAni()
  389. self:PlayAniRun(self.trunAnim.animator,Enum.TrunWheelAniName.TrunRefresh2)
  390. if self.WaitTimerId ~= nil then
  391. ManagerContainer.LuaTimerMgr:RemoveTimer(self.WaitTimerId);
  392. self.WaitTimerId = nil
  393. end
  394. local RolTrans = self.needle:GetComponent(Enum.TypeInfo.RolRectTransform)
  395. if RolTrans then
  396. local Angle = ManagerContainer.DataMgr.TrunWheelDataMgr:GetLastWhellAngle()
  397. RolTrans:SetAngle(0,0,0)
  398. ManagerContainer.DataMgr.TrunWheelDataMgr:SetStopItem(0)
  399. self:RunTurn(0)
  400. end
  401. end
  402. --开始本轮
  403. function UITurnWheelTipsView:OnBeginTurn()
  404. local IsOver = ManagerContainer.DataMgr.CompetitionData:IsOveerCurSeason()
  405. if IsOver then
  406. self:PopErrorTips('LabelOver')
  407. return
  408. end
  409. self:SendOpenRewardREQ()
  410. end
  411. --结束本轮
  412. function UITurnWheelTipsView:OnEndTurn()
  413. local IsOver = ManagerContainer.DataMgr.CompetitionData:IsOveerCurSeason()
  414. if IsOver then
  415. self:PopErrorTips('LabelOver')
  416. return
  417. end
  418. local SureEvent = function ()
  419. self:SendCloseRewardREQ()
  420. end
  421. --二次确认
  422. local data = {"TurningCanOver", nil, nil, self, SureEvent}
  423. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  424. end
  425. --刷新积分
  426. function UITurnWheelTipsView:RefreshSeason()
  427. local curCompetitionData = ManagerContainer.DataMgr.CompetitionData:GetCurCompetitionData()
  428. self.scoreInfo.num1.text.text = tostring(curCompetitionData.comParam)
  429. local delta = curCompetitionData.nextComScore - curCompetitionData.comParam
  430. local percent = ManagerContainer.DataMgr.CompetitionData:GetRankPercent()
  431. self.scoreInfo.num2:SetActive(percent > 0 and delta > 0)
  432. self.scoreInfo.text2:SetActive(percent > 0 and delta > 0)
  433. self.scoreInfo.num2.text.text = delta
  434. end
  435. --点击帮助
  436. function UITurnWheelTipsView:OnClickHelpBtn()
  437. --第三赛季
  438. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', "SeasonHelp"})
  439. end
  440. --转八次
  441. function UITurnWheelTipsView:OnClickAllRun()
  442. local IsOver = ManagerContainer.DataMgr.CompetitionData:IsOveerCurSeason()
  443. if IsOver then
  444. self:PopErrorTips('LabelOver')
  445. return
  446. end
  447. --是否可以转8次 判断
  448. local costAllInfo = ManagerContainer.DataMgr.TrunWheelDataMgr:CalNeedAllGold() --多次消耗
  449. local Goldcount = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Diamond)--当前金币
  450. local IsCanRun = true
  451. if costAllInfo.CosGoldmNum >0 then --显示金币
  452. if Goldcount <= costAllInfo.CosGoldmNum then
  453. IsCanRun = false
  454. end
  455. end
  456. if IsCanRun then
  457. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("RunAllTrun")
  458. self:Refresh()
  459. self:SendRewardREQ(true)
  460. else
  461. self:PopErrorTips('SeasonLackGold')
  462. end
  463. end
  464. --转一次
  465. function UITurnWheelTipsView:OnClickOnceRun()
  466. local IsOver = ManagerContainer.DataMgr.CompetitionData:IsOveerCurSeason()
  467. if IsOver then
  468. self:PopErrorTips('LabelOver')
  469. return
  470. end
  471. --是否可以转1次 判断
  472. local costInfo = ManagerContainer.DataMgr.TrunWheelDataMgr:CalNeedGold() --单次消耗
  473. local Goldcount = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Diamond) --当前金币
  474. local IsCanRun = true
  475. if costInfo.CostItemNum <= 0 then
  476. if Goldcount < costInfo.CosGoldmNum or Goldcount == 0 then--金币是否够消耗
  477. IsCanRun = false
  478. end
  479. elseif costInfo.CosGoldmNum > 0 and costInfo.CostItemNum >0 then
  480. if IsCanRun then
  481. --需要补额外金币弹框
  482. local NeedItem = ManagerContainer.DataMgr.TrunWheelDataMgr:GoldToItem(costInfo.CosGoldmNum)
  483. local paramData = {}
  484. paramData[1] = ManagerContainer.DataMgr.TrunWheelDataMgr:GetCostItemName()
  485. paramData[2] = string.formatbykey('Supplementary', tostring(costInfo.CosGoldmNum), I18N.T("GoldCoin") ,tostring(NeedItem),paramData[1])
  486. local data = {"CantUseGold", paramData, nil, self, self.SureOpenTipsWnd}
  487. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  488. IsCanRun = false
  489. return
  490. end
  491. end
  492. if IsCanRun then
  493. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("RunOnceTrun")
  494. self:Refresh()
  495. self:SendRewardREQ(false)
  496. else
  497. self:PopErrorTips('SeasonLackGold')
  498. end
  499. end
  500. --提示 道具不足金币转换确定
  501. function UITurnWheelTipsView:SureOpenTipsWnd()
  502. local costInfo = ManagerContainer.DataMgr.TrunWheelDataMgr:CalNeedGold() --单次消耗
  503. local Goldcount = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Diamond) --当前金币
  504. local IsCanRun = true
  505. if Goldcount < costInfo.CosGoldmNum and Goldcount ~= 0 then--金币是否够消耗
  506. IsCanRun = false
  507. end
  508. if IsCanRun then
  509. ManagerContainer.DataMgr.TrunWheelDataMgr:SetState("RunOnceTrun")
  510. self:Refresh()
  511. self:SendRewardREQ(false)
  512. else
  513. self:PopErrorTips('SeasonLackGold')
  514. end
  515. end
  516. function UITurnWheelTipsView:RunTurn(Count)
  517. if self:IsNil(self.needle) then
  518. return
  519. end
  520. local RolTrans = self.needle:GetComponent(Enum.TypeInfo.RolRectTransform)
  521. if nil ~= RolTrans then
  522. self:StopTurn()
  523. local nNextStopIndex = ManagerContainer.DataMgr.TrunWheelDataMgr:GetNextStopItem()
  524. if nNextStopIndex then
  525. RolTrans:SetStopIndex(nNextStopIndex)
  526. else
  527. RolTrans:SetStopIndex(0)
  528. end
  529. RolTrans:ClearNewRangeSpeed()
  530. if Count == 1 then--转一次设置
  531. RolTrans:AddNewRangeSpeed(0, 500,0, 1)
  532. RolTrans:AddNewRangeSpeed(500, 2400, 1, 2)
  533. RolTrans:AddNewRangeSpeed(2400, 500,2, 3)
  534. RolTrans:AddNewRangeSpeed(500, 0,3, 4)
  535. self:RefreshBtn()
  536. --停止选中奖项特效
  537. self:OnUnPrizeitem()
  538. elseif Count > 1 then--转八次设置
  539. local Speed = 1.8
  540. RolTrans:AddNewRangeSpeed(0, 2400*Speed, 0, 0.3 * 1/Speed)
  541. RolTrans:AddNewRangeSpeed(2400*Speed, 600*Speed, 0.3* 1/Speed, 0.8*1/Speed)
  542. RolTrans:AddNewRangeSpeed(600*Speed, 0, 0.8*1/Speed, 1.0*1/Speed)
  543. elseif Count == 0 then
  544. --空转一圈
  545. local fSpped = 1.3
  546. RolTrans:AddNewRangeSpeed(360 * fSpped, 360 * fSpped,0, 1/fSpped)
  547. end
  548. RolTrans:Run(Count)
  549. end
  550. end
  551. --刷新奖品
  552. function UITurnWheelTipsView:Refresh()
  553. for i = 1,8 do
  554. local ItemInfo = ManagerContainer.DataMgr.TrunWheelDataMgr:GetData(i)
  555. if ItemInfo then
  556. self:SetItem(i,ItemInfo)
  557. end
  558. end
  559. self:OnUnSelectedItem()
  560. self:OnUnPrizeitem()
  561. self:RefreshBtn()
  562. self:RefreshGold()
  563. end
  564. --刷新金币(金币改变时 注册通知)
  565. function UITurnWheelTipsView:RefreshGold()
  566. local count = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.LootingPrizeItem)
  567. self.currency1.number.text.text = count > 0 and count or "0"
  568. count = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Diamond)
  569. self.currency2.number.text.text = CommonUtil.FormatNumber(count)
  570. end
  571. function UITurnWheelTipsView:ShowOnceGoldItem(Once,IsGold)
  572. if Once then
  573. self.btnTurnOne.content.imageGold:SetActive(IsGold)
  574. self.btnTurnOne.content.imageItem:SetActive(not IsGold)
  575. else
  576. self.btnTurnAll.content.imageGold:SetActive(IsGold)
  577. self.btnTurnAll.content.imageItem:SetActive(not IsGold)
  578. end
  579. end
  580. --设置金币格式
  581. function UITurnWheelTipsView:RefreshCostGoldIcon()
  582. local costInfo = ManagerContainer.DataMgr.TrunWheelDataMgr:CalNeedGold() --单次消耗
  583. local costAllInfo = ManagerContainer.DataMgr.TrunWheelDataMgr:CalNeedAllGold() --多次消耗
  584. if costInfo.CostItemNum == 0 then--单次道具0
  585. local costGold = ManagerContainer.DataMgr.TrunWheelDataMgr:GetUseGoldTrun(true)
  586. self.btnTurnOne.num.text.text = tostring(costGold)
  587. self:ShowOnceGoldItem(true,true)
  588. else
  589. local costItem = ManagerContainer.DataMgr.TrunWheelDataMgr:GetUseItemTrun(true)
  590. self.btnTurnOne.num.text.text = tostring(costItem)
  591. self:ShowOnceGoldItem(true,false)
  592. end
  593. if costAllInfo.CostItemNum >0 then --显示道具
  594. local costItem = ManagerContainer.DataMgr.TrunWheelDataMgr:GetUseItemTrun(false)
  595. self.btnTurnAll.num.text.text = tostring(costItem)
  596. self:ShowOnceGoldItem(false,false)
  597. end
  598. if costAllInfo.CosGoldmNum >0 then --显示金币
  599. local costGold = ManagerContainer.DataMgr.TrunWheelDataMgr:GetUseGoldTrun(false)
  600. self.btnTurnAll.num.text.text = tostring(costGold)
  601. self:ShowOnceGoldItem(false,true)
  602. end
  603. end
  604. --设置刷新次数
  605. function UITurnWheelTipsView:RefreshCountBtn()
  606. local CostRefreshGold = ManagerContainer.DataMgr.TrunWheelDataMgr:GetRefreshCostGold()
  607. if nil == CostRefreshGold then
  608. self.btnRefresh.num.text.text = "-/-"
  609. elseif CostRefreshGold == 0 then
  610. self.btnRefresh.num.text.text = I18N.T("Free")
  611. else
  612. self.btnRefresh.num.text.text = tostring(CostRefreshGold)
  613. end
  614. end
  615. --刷新按钮
  616. function UITurnWheelTipsView:RefreshBtn()
  617. self:HideAllBtn()
  618. self:RefreshCountBtn()
  619. --self:RefreshCostGoldIcon()
  620. self:RefreshGold()
  621. local bIsRedaystate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("ReadyTurn")
  622. if bIsRedaystate then
  623. self.btnStartTurn:SetActive(true)
  624. local nCount = ManagerContainer.DataMgr.TrunWheelDataMgr:GetOverRefreshCount()
  625. self.refreshBox:SetActive(true)
  626. self.btnRefresh:SetActive(true)
  627. self.refreshBox.text.text.text = I18N.SetLanguageValue("RestRefreshTimes",tostring(nCount))
  628. if nCount > 0 then
  629. self.btnRefresh.button.interactable = true
  630. else
  631. self.btnRefresh.button.interactable = false
  632. end
  633. end
  634. local bIsStartstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("StartTurn")
  635. if bIsStartstate then
  636. self.btnTurnOne:SetActive(true)
  637. local IsOver = ManagerContainer.DataMgr.TrunWheelDataMgr:IsReceiverOver()
  638. if IsOver or self.Truning then
  639. self.btnTurnOne.button.interactable = false
  640. else
  641. self.btnTurnOne.button.interactable = true
  642. end
  643. --次数是否够
  644. local nCount = ManagerContainer.DataMgr.TrunWheelDataMgr:GetReceivePrizeInfoCount()
  645. if nCount and nCount < 1 then
  646. self.btnTurnAll:SetActive(true)
  647. if self.Truning then
  648. self.btnTurnAll.button.interactable = false
  649. else
  650. self.btnTurnAll.button.interactable = true
  651. end
  652. else
  653. self.btnFinishTurn:SetActive(true)
  654. local nOverCount = ManagerContainer.DataMgr.TrunWheelDataMgr:GetOverTrunCount()
  655. if nOverCount > 0 then
  656. self.finishBox:SetActive(true)
  657. self.finishBox.text.text.text =I18N.SetLanguageValue("NTimesFinishTurn",tostring(nOverCount))
  658. end
  659. if self.Truning or nOverCount > 0 then
  660. self.btnFinishTurn.button.interactable = false
  661. else
  662. self.btnFinishTurn.button.interactable = true
  663. end
  664. end
  665. end
  666. local bIsFinishedstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("FinishedTrun")
  667. if bIsFinishedstate then
  668. self.btnFinishTurn:SetActive(true)
  669. if self.Truning then
  670. self.btnFinishTurn.button.interactable = false
  671. else
  672. self.btnFinishTurn.button.interactable = true
  673. end
  674. end
  675. local bIsRunstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("RunOnceTrun")
  676. if bIsRunstate then
  677. self.btnTurnOne:SetActive(true) --置灰
  678. self.btnTurnOne.button.interactable = false;
  679. self.btnFinishTurn:SetActive(true) --置灰
  680. self.btnFinishTurn.button.interactable = false;
  681. end
  682. local bIsRunstate = ManagerContainer.DataMgr.TrunWheelDataMgr:IsState("RunAllTrun")
  683. if bIsRunstate then
  684. self.btnFinishTurn:SetActive(true) --置灰
  685. self.btnFinishTurn.button.interactable = false;
  686. end
  687. end
  688. --隐藏所有按钮
  689. function UITurnWheelTipsView:HideAllBtn()
  690. self.btnTurnOne:SetActive(false)
  691. self.btnTurnAll:SetActive(false)
  692. self.btnFinishTurn:SetActive(false)
  693. self.btnStartTurn:SetActive(false)
  694. self.btnRefresh:SetActive(false)
  695. self.refreshBox:SetActive(false)
  696. self.finishBox:SetActive(false)
  697. end
  698. --隐藏所有选中
  699. function UITurnWheelTipsView:OnUnSelectedItem()
  700. for i= 1,8 do
  701. if not self:IsNil(self:GetPosItem(i)) then
  702. self:GetPosItem(i).needleLight:SetActive(false)
  703. end
  704. end
  705. end
  706. --选中道具
  707. function UITurnWheelTipsView:OnSelectedItem(nIndex)
  708. if not self:IsNil(self:GetPosItem(nIndex)) then
  709. self:GetPosItem(nIndex).needleLight:SetActive(true)
  710. end
  711. end
  712. --设置大奖
  713. function UITurnWheelTipsView:SetGrandPrizeItem(nIndex,bIsGrandPrize)
  714. if not self:IsNil(self:GetPosItem(nIndex)) then
  715. self:GetPosItem(nIndex).bonusBg:SetActive(bIsGrandPrize) --大奖底板
  716. self:GetPosItem(nIndex).bonusLabel:SetActive(bIsGrandPrize) --大奖条
  717. end
  718. end
  719. --隐藏所有领取
  720. function UITurnWheelTipsView:OnUnReceiveItem()
  721. for i= 1,8 do
  722. if not self:IsNil(self:GetPosItem(i)) then
  723. self:GetPosItem(i).received:SetActive(false)
  724. end
  725. end
  726. end
  727. --显示获得领取
  728. function UITurnWheelTipsView:OnReceiveItem(nIndex,IsShow)
  729. if not self:IsNil(self:GetPosItem(nIndex)) then
  730. self:GetPosItem(nIndex).received:SetActive(IsShow)
  731. self:GetPosItem(nIndex).available:SetActive(not IsShow)
  732. end
  733. end
  734. --关闭大奖特效
  735. function UITurnWheelTipsView:OnUnPrizeitem()
  736. for i=1,8 do
  737. if not self:IsNil(self:GetPosItem(i)) then
  738. self:PlayAniRun(self:GetPosItem(i).iconLight.animator,"IconLightHide")
  739. end
  740. end
  741. end
  742. --设置icon
  743. function UITurnWheelTipsView:SetIcon(nIndex,strIcon)
  744. --self:GetPosItem(nIndex).iconItem.icon.image.sprite = nil
  745. CommonUtil.LoadIcon(self, strIcon, function (sprite)
  746. if not self:IsNil(self:GetPosItem(nIndex)) then
  747. self:GetPosItem(nIndex).iconItem.icon.image.sprite = sprite
  748. end
  749. end,self:GetPosItem(nIndex).iconItem, 'IconIcon')
  750. end
  751. --设置数量
  752. function UITurnWheelTipsView:SetNum(nIndex,nItemNum)
  753. if not self:IsNil(self:GetPosItem(nIndex)) then
  754. self:GetPosItem(nIndex).iconItem.num.text.text = tostring(nItemNum)
  755. end
  756. end
  757. --getPos
  758. function UITurnWheelTipsView:GetPosItem(nIndex)
  759. if 1 == nIndex then
  760. return self.pos1
  761. elseif 2 == nIndex then
  762. return self.pos2
  763. elseif 3 == nIndex then
  764. return self.pos3
  765. elseif 4 == nIndex then
  766. return self.pos4
  767. elseif 5 == nIndex then
  768. return self.pos5
  769. elseif 6 == nIndex then
  770. return self.pos6
  771. elseif 7 == nIndex then
  772. return self.pos7
  773. elseif 8 == nIndex then
  774. return self.pos8
  775. end
  776. return nil
  777. end
  778. function UITurnWheelTipsView:PlayAniRun(Animator,AniName)
  779. if Animator then
  780. Animator:Play(AniName)
  781. end
  782. end
  783. function UITurnWheelTipsView:IsNil(obj)
  784. if nil ~= obj then
  785. return false
  786. end
  787. return true
  788. end
  789. return UITurnWheelTipsView