local SUIEndPanel = {} local function SetExerciseTime() local rootPanel = SUIEndPanel.rootPanel local dataRelay = require("Base/DataRelay.lua") local PERCENT_CORRECT = dataRelay:GetCache(dataRelay.KEY_TYPE.PERCENT_CORRECT) local REACTION_LEVEL = dataRelay:GetCache(dataRelay.KEY_TYPE.REACTION_LEVEL) local EXERCISE_LEVEL = dataRelay:GetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL) local FOCUS_LEVEL = dataRelay:GetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL) local REMAINING_TIME = require("Config/SConfigManager.lua"):GetConfig("configLinkGame").remaingTime local nExercoseTotalTime = CS.WebRequestBackgroundData.GetFlowData(PERCENT_CORRECT .. "%", REMAINING_TIME, REACTION_LEVEL, EXERCISE_LEVEL, FOCUS_LEVEL) local sTextInfo; if nExercoseTotalTime > 0 then sTextInfo = "锻炼总时长达" + "" + nExercoseTotalTime + "" + " 分钟" end require("Base/UIHelper.lua"):SetTextInfo(rootPanel, "Panel_Evaluate/Text_Time", sTextInfo) end local function SetFocusObj() local rootPanel = SUIEndPanel.rootPanel local uiHelper = require("Base/UIHelper.lua") local dataRelay = require("Base/DataRelay.lua") local FOCUS = dataRelay:GetCache(dataRelay.KEY_TYPE.FOCUS) local nFocusS = 1.5 local nFocusA = 1.2 local nFocusB = 0.8 local imageFocus = rootPanel.transform:Find("Panel_Evaluate/Panel_Focus/Image_Focus").gameObject if FOCUS > nFocusS then uiHelper:LoadSprite(imageFocus, "Textures/GameEnd/S.png", "S") dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, "S") return end if FOCUS > nFocusA then uiHelper:LoadSprite(imageFocus, "Textures/GameEnd/A.png", "A") dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, "A") return end if FOCUS > nFocusB then uiHelper:LoadSprite(imageFocus, "Textures/GameEnd/B.png", "B") dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, "B") return end uiHelper:LoadSprite(imageFocus, "Textures/GameEnd/C.png", "C") dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, "C") end local function SetExerciseObj() local rootPanel = SUIEndPanel.rootPanel local uiHelper = require("Base/UIHelper.lua") local dataRelay = require("Base/DataRelay.lua") local EXERISE = dataRelay:GetCache(dataRelay.KEY_TYPE.EXERISE) local nExerciseS = 1.8 local nExerciseA = 1.5 local nExerciseB = 1 local imageExercise = rootPanel.transform:Find("Panel_Evaluate/Panel_Exercise/Image_Exercise").gameObject if EXERISE > nExerciseS then uiHelper:LoadSprite(imageExercise, "Textures/GameEnd/S.png", "S") dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, "S") return end if EXERISE > nExerciseA then uiHelper:LoadSprite(imageExercise, "Textures/GameEnd/A.png", "A") dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, "A") return end if EXERISE > nExerciseB then uiHelper:LoadSprite(imageExercise, "Textures/GameEnd/B.png", "B") dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, "B") return end uiHelper:LoadSprite(imageExercise, "Textures/GameEnd/C.png", "C") dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, "C") end local function SetReactionObj() local rootPanel = SUIEndPanel.rootPanel local uiHelper = require("Base/UIHelper.lua") local dataRelay = require("Base/DataRelay.lua") local REACTION = dataRelay:GetCache(dataRelay.KEY_TYPE.REACTION) local nReactionS = 1.5 local nReactionA = 1.3 local nReactionB = 1 local imageReaction = rootPanel.transform:Find("Panel_Evaluate/Panel_Reaction/Image_Reaction").gameObject if REACTION > nReactionS then uiHelper:LoadSprite(imageReaction, "Textures/GameEnd/S.png", "S") dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, "S") return end if REACTION > nReactionA then uiHelper:LoadSprite(imageReaction, "Textures/GameEnd/A.png", "A") dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, "A") return end if REACTION > nReactionB then uiHelper:LoadSprite(imageReaction, "Textures/GameEnd/B.png", "B") dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, "B") return end uiHelper:LoadSprite(imageReaction, "Textures/GameEnd/C.png", "C") dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, "C") end local function SetPercentCorrent() local rootPanel = SUIEndPanel.rootPanel local uiHelper = require("Base/UIHelper.lua") local dataRelay = require("Base/DataRelay.lua") local PERCENT_CORRECT = dataRelay:GetCache(dataRelay.KEY_TYPE.PERCENT_CORRECT) uiHelper:SetTextInfo(rootPanel, "Panel_Evaluate/Panel_Right_Percent/Text", math.floor(PERCENT_CORRECT * 100)) end local function SetButtonActive() local rootPanel = SUIEndPanel.rootPanel local buttonRestart = rootPanel.transform:Find("Button_Restart").gameObject local buttonNext = rootPanel.transform:Find("Button_Next").gameObject local buttonNextLastLevel = rootPanel.transform:Find("Button_Restart_Last_Level").gameObject buttonNext:SetActive(false) buttonRestart:SetActive(false) buttonNextLastLevel:SetActive(false) end local function HighScore(nScore) local rootPanel = SUIEndPanel.rootPanel local imageBreakHistory = rootPanel.transform:Find("Image_Break_History").gameObject local panelHistoryScore = rootPanel.transform:Find("Panel_History_Score").gameObject local dataRelay = require("Base/DataRelay.lua") local HIGH_SCORE = dataRelay:GetFloat(dataRelay.KEY_TYPE.HIGH_SCORE, 0) if HIGH_SCORE == 0 then imageBreakHistory:SetActive(true) dataRelay:SetFloat(dataRelay.KEY_TYPE.HIGH_SCORE, nScore) return end if nScore > HIGH_SCORE then imageBreakHistory:SetActive(true) panelHistoryScore:SetActive(false) dataRelay:SetFloat(dataRelay.KEY_TYPE.HIGH_SCORE, nScore) return end imageBreakHistory:SetActive(false) panelHistoryScore:SetActive(true) require("Base/UIHelper.lua"):SetTextInfo(panelHistoryScore, "Text", math.floor(HIGH_SCORE)) end local function JumpToAlignPage() local SUIAlignPanel = require("UI/SUIAlignPanel.lua") SUIAlignPanel.SetRootPanelActive(true) SUIEndPanel.SetRootPanelActive(false) -- require("Base/UIHelper.lua"):SwitchUI("UI/SUIAlignPanel.lua", "UI/SUIEndPanel.lua") end local function OnClickButtonRestart() JumpToAlignPage() end local function OnClickButtonNext() local uiHelper = require("Base/UIHelper.lua") local dataRelay = require("Base/DataRelay.lua") local GAME_TYPE = dataRelay:GetCache(dataRelay.KEY_TYPE.GAME_TYPE) local gameType = require("Config/SConfigManager.lua"):GetConfig("configLinkGame").gameType if GAME_TYPE == gameType.easy then GAME_TYPE = gameType.normal dataRelay:SetCache(dataRelay.KEY_TYPE.GAME_TYPE, GAME_TYPE) JumpToAlignPage() return end if GAME_TYPE == gameType.normal then GAME_TYPE = gameType.hard dataRelay:SetCache(dataRelay.KEY_TYPE.GAME_TYPE, GAME_TYPE) JumpToAlignPage() end end local function RegisterTouchEvent() local uiHelper = require("Base/UIHelper.lua") local rootPanel = SUIEndPanel.rootPanel uiHelper:AddClickEvent(rootPanel, "Button_Next", OnClickButtonNext) uiHelper:AddClickEvent(rootPanel, "Button_Restart_Last_Level", OnClickButtonRestart) uiHelper:AddClickEvent(rootPanel, "Button_Restart", OnClickButtonRestart) end local function DOTweenScoreRoll() local rootPanel = SUIEndPanel.rootPanel local textScore = rootPanel.transform:Find("Text_Score").gameObject local panelEvaluation = rootPanel.transform:Find("Panel_Evaluate").gameObject local panelHistoryScore = rootPanel.transform:Find("Panel_History_Score").gameObject local imageBreakHistory = rootPanel.transform:Find("Image_Break_History").gameObject local panelRightPercent = panelEvaluation.transform:Find("Panel_Right_Percent").gameObject local panelReaction = panelEvaluation.transform:Find("Panel_Reaction").gameObject local panelFouce = panelEvaluation.transform:Find("Panel_Focus").gameObject local panelExercise = panelEvaluation.transform:Find("Panel_Exercise").gameObject local textTime = panelEvaluation.transform:Find("Text_Time").gameObject local buttonRestart = rootPanel.transform:Find("Button_Restart").gameObject local buttonNext = rootPanel.transform:Find("Button_Next").gameObject local buttonNextLastLevel = rootPanel.transform:Find("Button_Restart_Last_Level").gameObject local uiHelper = require("Base/UIHelper.lua") local SMusicManager = require("Base/SMusicManager.lua") local dataRelay = require("Base/DataRelay.lua") local GAME_TYPE = dataRelay:GetCache(dataRelay.KEY_TYPE.GAME_TYPE) local CURRENT_SCORE = dataRelay:GetCache(dataRelay.KEY_TYPE.CURRENT_SCORE) local gameType = require("Config/SConfigManager.lua"):GetConfig("configLinkGame").gameType panelHistoryScore:SetActive(false) local actionSequence = CS.DG.Tweening.DOTween.Sequence() local nFrom = 0 local nEnd = CURRENT_SCORE actionSequence:Append(CS.DG.Tweening.DOTween.To( function () return nFrom end, function (value) local temp = math.floor(value) uiHelper:SetTextInfo(rootPanel, "Text_Score", temp) end, nEnd, 1)) actionSequence:AppendInterval(1) actionSequence:AppendCallback(function () HighScore(CURRENT_SCORE) local nScoreMoveX = -455 textScore.transform:DOLocalMoveX(nScoreMoveX, 0.5) panelHistoryScore.transform:DOLocalMoveX(nScoreMoveX, 0.5) imageBreakHistory.transform:DOLocalMoveX(nScoreMoveX, 0.5) end) actionSequence:AppendInterval(0.5) actionSequence:AppendCallback(function () SMusicManager:PlaySound("Audios/End/Evaluate.mp3") panelEvaluation:SetActive(true) panelRightPercent:SetActive(true) panelReaction:SetActive(false) panelFouce:SetActive(false) panelExercise:SetActive(false) textTime:SetActive(false) end) actionSequence:AppendInterval(0.5) actionSequence:AppendCallback(function () SMusicManager:PlaySound("Audios/End/Evaluate.mp3") panelReaction:SetActive(true) end) actionSequence:AppendInterval(0.5) actionSequence:AppendCallback(function () SMusicManager:PlaySound("Audios/End/Evaluate.mp3") panelFouce:SetActive(true) end) actionSequence:AppendInterval(0.5) actionSequence:AppendCallback(function () SMusicManager:PlaySound("Audios/End/Evaluate.mp3") panelExercise:SetActive(true) end) -- actionSequence:AppendInterval(0.5) -- actionSequence:AppendCallback(function () -- SMusicManager:PlaySound("Audios/End/Evaluate.mp3") -- textTime:SetActive(true) -- end) actionSequence:AppendInterval(0.5) actionSequence:AppendCallback(function () if GAME_TYPE == gameType.hard then buttonNextLastLevel:SetActive(true) return end buttonRestart:SetActive(true) buttonNext:SetActive(true) end) end local function RegisterButtonQuit() local panelQuit = SUIEndPanel.rootPanel.transform:Find("Panel_Quit").gameObject require("Base/UIHelper.lua"):RegisterButtonQuit(panelQuit, false, "UI/SUITeachPanel.lua", "UI/SUIEndPanel.lua") end local function RefreshUI() RegisterButtonQuit() SetButtonActive() SetPercentCorrent() SetReactionObj() SetExerciseObj() SetFocusObj() -- SetExerciseTime() end local function InitData() local dataRelay = require("Base/DataRelay.lua") dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, nil) dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, nil) dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, nil) end local function UnInitData() local dataRelay = require("Base/DataRelay.lua") dataRelay:SetCache(dataRelay.KEY_TYPE.REACTION_LEVEL, nil) dataRelay:SetCache(dataRelay.KEY_TYPE.EXERCISE_LEVEL, nil) dataRelay:SetCache(dataRelay.KEY_TYPE.FOCUS_LEVEL, nil) dataRelay:SetCache(dataRelay.KEY_TYPE.CURRENT_SCORE, 0) end local function UnInitUI() local rootPanel = SUIEndPanel.rootPanel local textScore = rootPanel.transform:Find("Text_Score").gameObject local panelHistoryScore = rootPanel.transform:Find("Panel_History_Score").gameObject local imageBreakHistory = rootPanel.transform:Find("Image_Break_History").gameObject local panelEvaluation = rootPanel.transform:Find("Panel_Evaluate").gameObject local panelRightPercent = panelEvaluation.transform:Find("Panel_Right_Percent").gameObject local panelReaction = panelEvaluation.transform:Find("Panel_Reaction").gameObject local panelFouce = panelEvaluation.transform:Find("Panel_Focus").gameObject local panelExercise = panelEvaluation.transform:Find("Panel_Exercise").gameObject local textTime = panelEvaluation.transform:Find("Text_Time").gameObject local buttonRestart = rootPanel.transform:Find("Button_Restart").gameObject local buttonNext = rootPanel.transform:Find("Button_Next").gameObject local buttonNextLastLevel = rootPanel.transform:Find("Button_Restart_Last_Level").gameObject local textScorePos = textScore.transform.localPosition local panelHistoryScorePos = panelHistoryScore.transform.localPosition local imageBreakHistoryPos = imageBreakHistory.transform.localPosition local uiHelper = require("Base/UIHelper.lua") uiHelper:SetTextInfo(rootPanel, "Text_Score", "") textScore.transform.localPosition = CS.UnityEngine.Vector3(0, textScorePos.y, textScorePos.z) panelHistoryScore.transform.localPosition = CS.UnityEngine.Vector3(0, panelHistoryScorePos.y, panelHistoryScorePos.z) imageBreakHistory.transform.localPosition = CS.UnityEngine.Vector3(0, imageBreakHistoryPos.y, imageBreakHistoryPos.z) panelHistoryScore:SetActive(true) imageBreakHistory:SetActive(false) panelEvaluation:SetActive(false) panelRightPercent:SetActive(false) panelReaction:SetActive(false) panelFouce:SetActive(false) panelExercise:SetActive(false) textTime:SetActive(false) buttonRestart:SetActive(false) buttonNext:SetActive(false) buttonNextLastLevel:SetActive(false) end local function InitAllData() InitData() RefreshUI() DOTweenScoreRoll() end local function UnInitAllData() UnInitUI() UnInitData() CS.DG.Tweening.DOTween.KillAll() end function SUIEndPanel.SetRootPanelActive(bShow) SUIEndPanel.rootPanel:SetActive(bShow) if bShow then InitAllData() return end UnInitAllData() end function SUIEndPanel.Awake(luaRoot) SUIEndPanel.luaRoot = luaRoot local canvas = CS.UnityEngine.GameObject.Find("Canvas").gameObject SUIEndPanel._rootCanvas = canvas local prefabPanelEnd = LoadResource("Prefabs/UI/SUIEndPanel.prefab") local rootPanel = CS.UnityEngine.GameObject.Instantiate(prefabPanelEnd, SUIEndPanel._rootCanvas.transform) SUIEndPanel.rootPanel = rootPanel end function SUIEndPanel.Start(luaRoot) RegisterTouchEvent() end function SUIEndPanel.OnDestroy() CS.UnityEngine.GameObject.Destroy(SUIEndPanel.rootPanel) end return SUIEndPanel