| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- 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 = "锻炼总时长达" + "<color=#e3ffa7><size=100>" + nExercoseTotalTime + "</size></color>" + " 分钟"
- 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
|