SUIEndPanel.lua.txt 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. local SUIEndPanel = {}
  2. local function SetExerciseTime()
  3. local rootPanel = SUIEndPanel.rootPanel
  4. local dataRelay = require("Base/DataRelay.lua")
  5. local PERCENT_CORRECT = dataRelay:GetCache(dataRelay.KEY_TYPE.PERCENT_CORRECT)
  6. local REACTION_LEVEL = dataRelay:GetCache(dataRelay.KEY_TYPE.REACTION_LEVEL)
  7. local EXERCISE_LEVEL = dataRelay:GetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL)
  8. local FOCUS_LEVEL = dataRelay:GetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL)
  9. local REMAINING_TIME = require("Config/SConfigManager.lua"):GetConfig("configLinkGame").remaingTime
  10. local nExercoseTotalTime = CS.WebRequestBackgroundData.GetFlowData(PERCENT_CORRECT .. "%", REMAINING_TIME, REACTION_LEVEL, EXERCISE_LEVEL, FOCUS_LEVEL)
  11. local sTextInfo;
  12. if nExercoseTotalTime > 0 then
  13. sTextInfo = "锻炼总时长达" + "<color=#e3ffa7><size=100>" + nExercoseTotalTime + "</size></color>" + " 分钟"
  14. end
  15. require("Base/UIHelper.lua"):SetTextInfo(rootPanel, "Panel_Evaluate/Text_Time", sTextInfo)
  16. end
  17. local function SetFocusObj()
  18. local rootPanel = SUIEndPanel.rootPanel
  19. local uiHelper = require("Base/UIHelper.lua")
  20. local dataRelay = require("Base/DataRelay.lua")
  21. local FOCUS = dataRelay:GetCache(dataRelay.KEY_TYPE.FOCUS)
  22. local nFocusS = 1.5
  23. local nFocusA = 1.2
  24. local nFocusB = 0.8
  25. local imageFocus = rootPanel.transform:Find("Panel_Evaluate/Panel_Focus/Image_Focus").gameObject
  26. if FOCUS > nFocusS then
  27. uiHelper:LoadSprite(imageFocus, "Textures/GameEnd/S.png", "S")
  28. dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, "S")
  29. return
  30. end
  31. if FOCUS > nFocusA then
  32. uiHelper:LoadSprite(imageFocus, "Textures/GameEnd/A.png", "A")
  33. dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, "A")
  34. return
  35. end
  36. if FOCUS > nFocusB then
  37. uiHelper:LoadSprite(imageFocus, "Textures/GameEnd/B.png", "B")
  38. dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, "B")
  39. return
  40. end
  41. uiHelper:LoadSprite(imageFocus, "Textures/GameEnd/C.png", "C")
  42. dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, "C")
  43. end
  44. local function SetExerciseObj()
  45. local rootPanel = SUIEndPanel.rootPanel
  46. local uiHelper = require("Base/UIHelper.lua")
  47. local dataRelay = require("Base/DataRelay.lua")
  48. local EXERISE = dataRelay:GetCache(dataRelay.KEY_TYPE.EXERISE)
  49. local nExerciseS = 1.8
  50. local nExerciseA = 1.5
  51. local nExerciseB = 1
  52. local imageExercise = rootPanel.transform:Find("Panel_Evaluate/Panel_Exercise/Image_Exercise").gameObject
  53. if EXERISE > nExerciseS then
  54. uiHelper:LoadSprite(imageExercise, "Textures/GameEnd/S.png", "S")
  55. dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, "S")
  56. return
  57. end
  58. if EXERISE > nExerciseA then
  59. uiHelper:LoadSprite(imageExercise, "Textures/GameEnd/A.png", "A")
  60. dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, "A")
  61. return
  62. end
  63. if EXERISE > nExerciseB then
  64. uiHelper:LoadSprite(imageExercise, "Textures/GameEnd/B.png", "B")
  65. dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, "B")
  66. return
  67. end
  68. uiHelper:LoadSprite(imageExercise, "Textures/GameEnd/C.png", "C")
  69. dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, "C")
  70. end
  71. local function SetReactionObj()
  72. local rootPanel = SUIEndPanel.rootPanel
  73. local uiHelper = require("Base/UIHelper.lua")
  74. local dataRelay = require("Base/DataRelay.lua")
  75. local REACTION = dataRelay:GetCache(dataRelay.KEY_TYPE.REACTION)
  76. local nReactionS = 1.5
  77. local nReactionA = 1.3
  78. local nReactionB = 1
  79. local imageReaction = rootPanel.transform:Find("Panel_Evaluate/Panel_Reaction/Image_Reaction").gameObject
  80. if REACTION > nReactionS then
  81. uiHelper:LoadSprite(imageReaction, "Textures/GameEnd/S.png", "S")
  82. dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, "S")
  83. return
  84. end
  85. if REACTION > nReactionA then
  86. uiHelper:LoadSprite(imageReaction, "Textures/GameEnd/A.png", "A")
  87. dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, "A")
  88. return
  89. end
  90. if REACTION > nReactionB then
  91. uiHelper:LoadSprite(imageReaction, "Textures/GameEnd/B.png", "B")
  92. dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, "B")
  93. return
  94. end
  95. uiHelper:LoadSprite(imageReaction, "Textures/GameEnd/C.png", "C")
  96. dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, "C")
  97. end
  98. local function SetPercentCorrent()
  99. local rootPanel = SUIEndPanel.rootPanel
  100. local uiHelper = require("Base/UIHelper.lua")
  101. local dataRelay = require("Base/DataRelay.lua")
  102. local PERCENT_CORRECT = dataRelay:GetCache(dataRelay.KEY_TYPE.PERCENT_CORRECT)
  103. uiHelper:SetTextInfo(rootPanel, "Panel_Evaluate/Panel_Right_Percent/Text", math.floor(PERCENT_CORRECT * 100))
  104. end
  105. local function SetButtonActive()
  106. local rootPanel = SUIEndPanel.rootPanel
  107. local buttonRestart = rootPanel.transform:Find("Button_Restart").gameObject
  108. local buttonNext = rootPanel.transform:Find("Button_Next").gameObject
  109. local buttonNextLastLevel = rootPanel.transform:Find("Button_Restart_Last_Level").gameObject
  110. buttonNext:SetActive(false)
  111. buttonRestart:SetActive(false)
  112. buttonNextLastLevel:SetActive(false)
  113. end
  114. local function HighScore(nScore)
  115. local rootPanel = SUIEndPanel.rootPanel
  116. local imageBreakHistory = rootPanel.transform:Find("Image_Break_History").gameObject
  117. local panelHistoryScore = rootPanel.transform:Find("Panel_History_Score").gameObject
  118. local dataRelay = require("Base/DataRelay.lua")
  119. local HIGH_SCORE = dataRelay:GetFloat(dataRelay.KEY_TYPE.HIGH_SCORE, 0)
  120. if HIGH_SCORE == 0 then
  121. imageBreakHistory:SetActive(true)
  122. dataRelay:SetFloat(dataRelay.KEY_TYPE.HIGH_SCORE, nScore)
  123. return
  124. end
  125. if nScore > HIGH_SCORE then
  126. imageBreakHistory:SetActive(true)
  127. panelHistoryScore:SetActive(false)
  128. dataRelay:SetFloat(dataRelay.KEY_TYPE.HIGH_SCORE, nScore)
  129. return
  130. end
  131. imageBreakHistory:SetActive(false)
  132. panelHistoryScore:SetActive(true)
  133. require("Base/UIHelper.lua"):SetTextInfo(panelHistoryScore, "Text", math.floor(HIGH_SCORE))
  134. end
  135. local function JumpToAlignPage()
  136. local SUIAlignPanel = require("UI/SUIAlignPanel.lua")
  137. SUIAlignPanel.SetRootPanelActive(true)
  138. SUIEndPanel.SetRootPanelActive(false)
  139. -- require("Base/UIHelper.lua"):SwitchUI("UI/SUIAlignPanel.lua", "UI/SUIEndPanel.lua")
  140. end
  141. local function OnClickButtonRestart()
  142. JumpToAlignPage()
  143. end
  144. local function OnClickButtonNext()
  145. local uiHelper = require("Base/UIHelper.lua")
  146. local dataRelay = require("Base/DataRelay.lua")
  147. local GAME_TYPE = dataRelay:GetCache(dataRelay.KEY_TYPE.GAME_TYPE)
  148. local gameType = require("Config/SConfigManager.lua"):GetConfig("configLinkGame").gameType
  149. if GAME_TYPE == gameType.easy then
  150. GAME_TYPE = gameType.normal
  151. dataRelay:SetCache(dataRelay.KEY_TYPE.GAME_TYPE, GAME_TYPE)
  152. JumpToAlignPage()
  153. return
  154. end
  155. if GAME_TYPE == gameType.normal then
  156. GAME_TYPE = gameType.hard
  157. dataRelay:SetCache(dataRelay.KEY_TYPE.GAME_TYPE, GAME_TYPE)
  158. JumpToAlignPage()
  159. end
  160. end
  161. local function RegisterTouchEvent()
  162. local uiHelper = require("Base/UIHelper.lua")
  163. local rootPanel = SUIEndPanel.rootPanel
  164. uiHelper:AddClickEvent(rootPanel, "Button_Next", OnClickButtonNext)
  165. uiHelper:AddClickEvent(rootPanel, "Button_Restart_Last_Level", OnClickButtonRestart)
  166. uiHelper:AddClickEvent(rootPanel, "Button_Restart", OnClickButtonRestart)
  167. end
  168. local function DOTweenScoreRoll()
  169. local rootPanel = SUIEndPanel.rootPanel
  170. local textScore = rootPanel.transform:Find("Text_Score").gameObject
  171. local panelEvaluation = rootPanel.transform:Find("Panel_Evaluate").gameObject
  172. local panelHistoryScore = rootPanel.transform:Find("Panel_History_Score").gameObject
  173. local imageBreakHistory = rootPanel.transform:Find("Image_Break_History").gameObject
  174. local panelRightPercent = panelEvaluation.transform:Find("Panel_Right_Percent").gameObject
  175. local panelReaction = panelEvaluation.transform:Find("Panel_Reaction").gameObject
  176. local panelFouce = panelEvaluation.transform:Find("Panel_Focus").gameObject
  177. local panelExercise = panelEvaluation.transform:Find("Panel_Exercise").gameObject
  178. local textTime = panelEvaluation.transform:Find("Text_Time").gameObject
  179. local buttonRestart = rootPanel.transform:Find("Button_Restart").gameObject
  180. local buttonNext = rootPanel.transform:Find("Button_Next").gameObject
  181. local buttonNextLastLevel = rootPanel.transform:Find("Button_Restart_Last_Level").gameObject
  182. local uiHelper = require("Base/UIHelper.lua")
  183. local SMusicManager = require("Base/SMusicManager.lua")
  184. local dataRelay = require("Base/DataRelay.lua")
  185. local GAME_TYPE = dataRelay:GetCache(dataRelay.KEY_TYPE.GAME_TYPE)
  186. local CURRENT_SCORE = dataRelay:GetCache(dataRelay.KEY_TYPE.CURRENT_SCORE)
  187. local gameType = require("Config/SConfigManager.lua"):GetConfig("configLinkGame").gameType
  188. panelHistoryScore:SetActive(false)
  189. local actionSequence = CS.DG.Tweening.DOTween.Sequence()
  190. local nFrom = 0
  191. local nEnd = CURRENT_SCORE
  192. actionSequence:Append(CS.DG.Tweening.DOTween.To(
  193. function ()
  194. return nFrom
  195. end,
  196. function (value)
  197. local temp = math.floor(value)
  198. uiHelper:SetTextInfo(rootPanel, "Text_Score", temp)
  199. end, nEnd, 1))
  200. actionSequence:AppendInterval(1)
  201. actionSequence:AppendCallback(function ()
  202. HighScore(CURRENT_SCORE)
  203. local nScoreMoveX = -455
  204. textScore.transform:DOLocalMoveX(nScoreMoveX, 0.5)
  205. panelHistoryScore.transform:DOLocalMoveX(nScoreMoveX, 0.5)
  206. imageBreakHistory.transform:DOLocalMoveX(nScoreMoveX, 0.5)
  207. end)
  208. actionSequence:AppendInterval(0.5)
  209. actionSequence:AppendCallback(function ()
  210. SMusicManager:PlaySound("Audios/End/Evaluate.mp3")
  211. panelEvaluation:SetActive(true)
  212. panelRightPercent:SetActive(true)
  213. panelReaction:SetActive(false)
  214. panelFouce:SetActive(false)
  215. panelExercise:SetActive(false)
  216. textTime:SetActive(false)
  217. end)
  218. actionSequence:AppendInterval(0.5)
  219. actionSequence:AppendCallback(function ()
  220. SMusicManager:PlaySound("Audios/End/Evaluate.mp3")
  221. panelReaction:SetActive(true)
  222. end)
  223. actionSequence:AppendInterval(0.5)
  224. actionSequence:AppendCallback(function ()
  225. SMusicManager:PlaySound("Audios/End/Evaluate.mp3")
  226. panelFouce:SetActive(true)
  227. end)
  228. actionSequence:AppendInterval(0.5)
  229. actionSequence:AppendCallback(function ()
  230. SMusicManager:PlaySound("Audios/End/Evaluate.mp3")
  231. panelExercise:SetActive(true)
  232. end)
  233. -- actionSequence:AppendInterval(0.5)
  234. -- actionSequence:AppendCallback(function ()
  235. -- SMusicManager:PlaySound("Audios/End/Evaluate.mp3")
  236. -- textTime:SetActive(true)
  237. -- end)
  238. actionSequence:AppendInterval(0.5)
  239. actionSequence:AppendCallback(function ()
  240. if GAME_TYPE == gameType.hard then
  241. buttonNextLastLevel:SetActive(true)
  242. return
  243. end
  244. buttonRestart:SetActive(true)
  245. buttonNext:SetActive(true)
  246. end)
  247. end
  248. local function RegisterButtonQuit()
  249. local panelQuit = SUIEndPanel.rootPanel.transform:Find("Panel_Quit").gameObject
  250. require("Base/UIHelper.lua"):RegisterButtonQuit(panelQuit, false, "UI/SUITeachPanel.lua", "UI/SUIEndPanel.lua")
  251. end
  252. local function RefreshUI()
  253. RegisterButtonQuit()
  254. SetButtonActive()
  255. SetPercentCorrent()
  256. SetReactionObj()
  257. SetExerciseObj()
  258. SetFocusObj()
  259. -- SetExerciseTime()
  260. end
  261. local function InitData()
  262. local dataRelay = require("Base/DataRelay.lua")
  263. dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, nil)
  264. dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, nil)
  265. dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, nil)
  266. end
  267. local function UnInitData()
  268. local dataRelay = require("Base/DataRelay.lua")
  269. dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, nil)
  270. dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, nil)
  271. dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, nil)
  272. dataRelay:SetCache(dataRelay.KEY_TYPE.CURRENT_SCORE, 0)
  273. end
  274. local function UnInitUI()
  275. local rootPanel = SUIEndPanel.rootPanel
  276. local textScore = rootPanel.transform:Find("Text_Score").gameObject
  277. local panelHistoryScore = rootPanel.transform:Find("Panel_History_Score").gameObject
  278. local imageBreakHistory = rootPanel.transform:Find("Image_Break_History").gameObject
  279. local panelEvaluation = rootPanel.transform:Find("Panel_Evaluate").gameObject
  280. local panelRightPercent = panelEvaluation.transform:Find("Panel_Right_Percent").gameObject
  281. local panelReaction = panelEvaluation.transform:Find("Panel_Reaction").gameObject
  282. local panelFouce = panelEvaluation.transform:Find("Panel_Focus").gameObject
  283. local panelExercise = panelEvaluation.transform:Find("Panel_Exercise").gameObject
  284. local textTime = panelEvaluation.transform:Find("Text_Time").gameObject
  285. local buttonRestart = rootPanel.transform:Find("Button_Restart").gameObject
  286. local buttonNext = rootPanel.transform:Find("Button_Next").gameObject
  287. local buttonNextLastLevel = rootPanel.transform:Find("Button_Restart_Last_Level").gameObject
  288. local textScorePos = textScore.transform.localPosition
  289. local panelHistoryScorePos = panelHistoryScore.transform.localPosition
  290. local imageBreakHistoryPos = imageBreakHistory.transform.localPosition
  291. local uiHelper = require("Base/UIHelper.lua")
  292. uiHelper:SetTextInfo(rootPanel, "Text_Score", "")
  293. textScore.transform.localPosition = CS.UnityEngine.Vector3(0, textScorePos.y, textScorePos.z)
  294. panelHistoryScore.transform.localPosition = CS.UnityEngine.Vector3(0, panelHistoryScorePos.y, panelHistoryScorePos.z)
  295. imageBreakHistory.transform.localPosition = CS.UnityEngine.Vector3(0, imageBreakHistoryPos.y, imageBreakHistoryPos.z)
  296. panelHistoryScore:SetActive(true)
  297. imageBreakHistory:SetActive(false)
  298. panelEvaluation:SetActive(false)
  299. panelRightPercent:SetActive(false)
  300. panelReaction:SetActive(false)
  301. panelFouce:SetActive(false)
  302. panelExercise:SetActive(false)
  303. textTime:SetActive(false)
  304. buttonRestart:SetActive(false)
  305. buttonNext:SetActive(false)
  306. buttonNextLastLevel:SetActive(false)
  307. end
  308. local function InitAllData()
  309. InitData()
  310. RefreshUI()
  311. DOTweenScoreRoll()
  312. end
  313. local function UnInitAllData()
  314. UnInitUI()
  315. UnInitData()
  316. CS.DG.Tweening.DOTween.KillAll()
  317. end
  318. function SUIEndPanel.SetRootPanelActive(bShow)
  319. SUIEndPanel.rootPanel:SetActive(bShow)
  320. if bShow then
  321. InitAllData()
  322. return
  323. end
  324. UnInitAllData()
  325. end
  326. function SUIEndPanel.Awake(luaRoot)
  327. SUIEndPanel.luaRoot = luaRoot
  328. local canvas = CS.UnityEngine.GameObject.Find("Canvas").gameObject
  329. SUIEndPanel._rootCanvas = canvas
  330. local prefabPanelEnd = LoadResource("Prefabs/UI/SUIEndPanel.prefab")
  331. local rootPanel = CS.UnityEngine.GameObject.Instantiate(prefabPanelEnd, SUIEndPanel._rootCanvas.transform)
  332. SUIEndPanel.rootPanel = rootPanel
  333. end
  334. function SUIEndPanel.Start(luaRoot)
  335. RegisterTouchEvent()
  336. end
  337. function SUIEndPanel.OnDestroy()
  338. CS.UnityEngine.GameObject.Destroy(SUIEndPanel.rootPanel)
  339. end
  340. return SUIEndPanel