From 4626e98717b7cd704a5533e8bb35071b8b74b44a Mon Sep 17 00:00:00 2001 From: yangwen Date: Thu, 22 May 2025 19:12:00 +0800 Subject: [PATCH] game pause --- assets/Scene.ls | 2 +- assets/atlas/comp/btn_pause.png | Bin 0 -> 2055 bytes assets/atlas/comp/btn_pause.png.meta | 6 + assets/resources/GamePause.lh | 299 +++++++++++++++++++++ assets/resources/GamePause.lh.meta | 3 + assets/resources/Stage.lh | 26 +- src/constants/respath.ts | 1 + src/controllers/GameController.ts | 7 - src/controllers/GameController.ts.meta | 3 - src/models/EventManager.ts | 1 + src/models/LevelManager.ts | 1 + src/models/StorageManager.ts | 21 +- src/models/UIManager.ts | 7 +- src/views/Block.ts | 2 +- src/views/DailyChallenge.ts | 8 +- src/views/Difficulty.ts | 2 +- src/views/GameDone.ts | 8 +- src/views/GameOver.ts | 11 +- src/views/GamePause.ts | 52 ++++ src/views/GamePause.ts.meta | 3 + src/views/Home.ts | 16 +- src/views/Loading.ts | 7 - src/views/Loading.ts.meta | 3 - src/views/Stage.ts | 18 +- src/views/{ => common}/AutoDestroy.ts | 0 src/views/{ => common}/AutoDestroy.ts.meta | 0 src/views/{ => common}/CommonData.ts | 0 src/views/{ => common}/CommonData.ts.meta | 0 src/views/{ => common}/GUITips.ts | 2 +- src/views/{ => common}/GUITips.ts.meta | 0 30 files changed, 439 insertions(+), 70 deletions(-) create mode 100644 assets/atlas/comp/btn_pause.png create mode 100644 assets/atlas/comp/btn_pause.png.meta create mode 100644 assets/resources/GamePause.lh create mode 100644 assets/resources/GamePause.lh.meta delete mode 100644 src/controllers/GameController.ts delete mode 100644 src/controllers/GameController.ts.meta create mode 100644 src/views/GamePause.ts create mode 100644 src/views/GamePause.ts.meta delete mode 100644 src/views/Loading.ts delete mode 100644 src/views/Loading.ts.meta rename src/views/{ => common}/AutoDestroy.ts (100%) rename src/views/{ => common}/AutoDestroy.ts.meta (100%) rename src/views/{ => common}/CommonData.ts (100%) rename src/views/{ => common}/CommonData.ts.meta (100%) rename src/views/{ => common}/GUITips.ts (86%) rename src/views/{ => common}/GUITips.ts.meta (100%) diff --git a/assets/Scene.ls b/assets/Scene.ls index 111bb48..ef581e6 100644 --- a/assets/Scene.ls +++ b/assets/Scene.ls @@ -13,7 +13,7 @@ { "_$type": "7bad1742-6eed-4d8d-81c0-501dc5bf03d6", "scriptPath": "../src/Main.ts", - "debug": true + "debug": false }, { "_$type": "cd70cd5e-b4cd-4277-ac0a-2224cfbe89ac", diff --git a/assets/atlas/comp/btn_pause.png b/assets/atlas/comp/btn_pause.png new file mode 100644 index 0000000000000000000000000000000000000000..fe89f930985f67285546b0f17606d885c91d62c2 GIT binary patch literal 2055 zcmV+i2>ADjP)002t}1^@s6I8J)%00009a7bBm001F4 z001F40Y#QEU;qFB0drDELIAGL9O(c600d`2O+f$vv5yP-;iTbCAdW3q$)S#CqSH1IT=o=RAM7vKsK_GpTOeg zo1x-xwekk?$w@3tr+f8*v^)DD?XEx)zbb>gAH(inJv}`$Jp*vX6>)%Y!K|$On1)0v zO#n9ta88c#L(L6bgwOz>IuJBSX1jfwR#meP>$bixrAY1~ZGz*Y|Q6a4H z5B{f)E9F0G5Hn*D%Mu9nGXJ$gC~-Vs%dB(xHT5a68<*9^Dpp%0+TvHqz&K%xBZSh6 zgU3%HLShk1L_*YiWcNK|#6wr_+ zRO|;y8jE0lkYKw~eo}-H2`yGWUzls6I^vK1-#Af?Eu?sOuy+g*l3QC}MvYmL2E^|X z*lJs(Z;xVSp~UKh0Y{!KoK!JQJI#M!w^}VVAV%biYk}GlYwN~rCPXkKyCI5Ok{E&&HGNn^^ffEYxps$vFG- zE9vF* z1BuoCBkHv&BA*nYy7&mz;NW%9?OhZEU|NI{%KWSeerA**A1A3K;*s0EzG8_(pBACI zbOmdVli9&^F27-Hz&xvACpv#`zL7FfN8;lqmoKm%Rz^RJO}%({I2ihPT2@mjvq_RJ zPP$M+$C(?0Qc9pB;C8jFmHbA5Bj7zpAzb}l9PHhMDI&MJ&enw)#|c~O=x$kP4m`zA z!IXhW#vqzUH3p2uD3)baCZ|qNnnZ{0N2gonsE#smV)?ZWMzIL-d&e)qtPh7Pxk$O6wCIZlvtHf@KZ@KvOGgM{J> zC~1ywF0#zFb;&%WgM$1R5KB7CCdbZWQ&k9o1hN0}BxrW%xzs%Wz; zy=1tsQQ6;n1v7#bR~a3>S{f7!4S|`48q64|!BCUPZduM&kV00$iA15Zkw8rM#A=5O zhWnay3NuDRw@hv))e}o66LY2;!#3}ehz#MF{8mpaBwBFZMl&Z=A9eeIbDxEViBgS@ z8)gRb63f(aHa4NN0g^{GG))nq!4zi&0&mN@!iOudhTux9A?Obs>h_Zto#uFvpyAy; zEem7HES?0&5K8sLGI@VclEXQppoe9#*%|UWaSmn`a;ANrSHqSzb#1~ArcEHOg9_ab zR)^UTu_s!Pg;^t^yv4F0XUAE~`kEPoo%^!$Al2+6r8WCCh%;ze=$y3SgEq0WHYIzc z`e$XQoqMbIv!+yap5h-A%YCpOgRPu!!8DjAGu*?jtcbfzK_NM+pp+|FL#BDdlH(Xp zWMs32Pys4}KF_v8YVbqdg^)yDrZv4rhTM5-yC>(2H0f77QMhS8oV>;})c_;UN_Ubk zZb~Tfa{o!FZ$GXwTS{%2X5&>$@5*muewItVQlt4%-yHX9iE-hYWX!E#rMzdQS(*EW zF0-=9FI6btb(s;XBJ*f*sr%VI^KW(iy(#_KlxsQZxaH2;vm9MV9f)Y%c-)X{Iq9^} zHKC-~{~uSe+PRd5j1tLLTHTl$!Q4{UWg3vJ>S_NG@9`{`TuWwi8Uj^oiH*ymttL6c z5KpnJrWprKu?MQ7EZ23IP{dEkqIcs-(nV7~TA;N%xwZAT+$=ac)M1v;UL<~Nk=#<( z15H>YHJhZN8zke@3I3y#WMM%TZMoeWNGz)#rnRvvF-d}X2_>)?1+Q8XcyZ?0yOa9- zHwzzFo;&t)ELaK=vtQp@IF;+*5+crAE07T3E7N(@dh@VcdgfKeP%Bwkh&S`!O0tbJ zLr?_c=Cd$=YZ1@hy{*9|;@;Z&4nN+(k=vKWU&MZOxaiM z`E58MTQ!YCG!ZFz-5Oqc;I}acPatQ9T?QCREFsX|2_38+d=p>2c>Xxjq~77So}v?p z&d0vJN>9CuF$y%My)Td>wA&rW%5H!tT2>)avGO+|}s6*kA zDcTRf$@!L0gGnl4wY@E&WLkaL9E^x|Fo{&GE-U#$fy0QcAXPI?BqEnUGpZ%Zv53`0 zL~E~IG_2f+lbE)iidC#G?aje>!oz2)rclV%Q!OmXqO7{ + var prefab = go.create() + this.getUIRoot().addChild(prefab) + }) + } public loadGameOverUI(): void { Laya.loader.load(respath.gameover_ui_res).then((go)=>{ var prefab = go.create() diff --git a/src/views/Block.ts b/src/views/Block.ts index 2f02855..cd46b08 100644 --- a/src/views/Block.ts +++ b/src/views/Block.ts @@ -1,4 +1,4 @@ -import { G_ShowScoreTips } from "../views/GUITips"; +import { G_ShowScoreTips } from "../views/common/GUITips"; import { DOBlock } from "../models/DOBlock"; const { regClass, property } = Laya; diff --git a/src/views/DailyChallenge.ts b/src/views/DailyChallenge.ts index b0ae586..2a6fb29 100644 --- a/src/views/DailyChallenge.ts +++ b/src/views/DailyChallenge.ts @@ -84,14 +84,8 @@ export class DailyChallenge extends Laya.Script { var doStage = StorageManager.getInstance().loadStage(stageID) console.log("play >>>>>>>>>>>>>>>>>>>>>>>", stageID, doStage) if (!doStage) { - var random = Math.random() - var value = config.DIFFICULTY_LIST[Math.floor(random*config.DIFFICULTY_LIST.length)] - var list = LevelManager.getInstance().getLevelList(value) - random = Math.random() - var index = Math.floor(random*list.length) var stageName = `${config.MONTH_ABBRS[month-1]} ${dayNow}` - console.log("随机一个关卡", value, index) - StorageManager.getInstance().newStage(stageID, config.STAGE_TYPE.DC, stageName, value, index) + StorageManager.getInstance().newStage(stageID, config.STAGE_TYPE.DC, stageName) } UIManager.getInstance().loadStageUI(stageID); this.owner.destroy() diff --git a/src/views/Difficulty.ts b/src/views/Difficulty.ts index 8812a4d..78617a9 100644 --- a/src/views/Difficulty.ts +++ b/src/views/Difficulty.ts @@ -1,5 +1,5 @@ import { config } from "../constants/config"; -import { CommonData } from "./CommonData"; +import { CommonData } from "./common/CommonData"; const { regClass, property } = Laya; diff --git a/src/views/GameDone.ts b/src/views/GameDone.ts index 8298be1..6f8002a 100644 --- a/src/views/GameDone.ts +++ b/src/views/GameDone.ts @@ -64,13 +64,7 @@ export class GameDone extends Laya.Script { d.onInit((value: string)=> { console.log("选择难度", value) StorageManager.getInstance().cleanStage() - var user = StorageManager.getInstance().getUser() - var index = user.get_progress(value) - var levelStr = LevelManager.getInstance().getLevelStr(value, index) - if (!levelStr || levelStr.length <= 0) {//说明当前难度已经打通了,所以给他从头开始 - user.update_progress(value, 0) - } - StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value, user.get_progress(value)) + StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); this.owner.destroy() }) diff --git a/src/views/GameOver.ts b/src/views/GameOver.ts index 9d2832d..f8727be 100644 --- a/src/views/GameOver.ts +++ b/src/views/GameOver.ts @@ -40,8 +40,7 @@ export class GameOver extends Laya.Script { var type = doStage.get_stageType() var difficulty = doStage.get_difficulty() StorageManager.getInstance().cleanStage() - var user = StorageManager.getInstance().getUser() - StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty, user.get_progress(difficulty)) + StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty) UIManager.getInstance().loadStageUI(stageID); this.owner.destroy() }) @@ -58,13 +57,7 @@ export class GameOver extends Laya.Script { d.onInit((value: string)=> { console.log("选择难度", value) StorageManager.getInstance().cleanStage() - var user = StorageManager.getInstance().getUser() - var index = user.get_progress(value) - var levelStr = LevelManager.getInstance().getLevelStr(value, index) - if (!levelStr || levelStr.length <= 0) {//说明当前难度已经打通了,所以给他从头开始 - user.update_progress(value, 0) - } - StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value, user.get_progress(value)) + StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); this.owner.destroy() }) diff --git a/src/views/GamePause.ts b/src/views/GamePause.ts new file mode 100644 index 0000000..10467aa --- /dev/null +++ b/src/views/GamePause.ts @@ -0,0 +1,52 @@ + + +import { UIManager } from "../models/UIManager"; +import { StorageManager } from "../models/StorageManager"; +import { Utility_ConvertSecondToString } from "../utils/utility"; +import { EVENT_TYPES, EventManager } from "../models/EventManager"; + + + +const { regClass, property } = Laya; + +@regClass() +export class GamePause extends Laya.Script { + declare owner : Laya.Box; + + @property(Laya.Label) + public label_time: Laya.Label + @property(Laya.Label) + public label_diffucuty: Laya.Label + + @property(Laya.Sprite) + public btn_continue: Laya.Sprite + @property(Laya.Sprite) + public btn_restart: Laya.Sprite + + + //组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次 + onAwake(): void { + + var doStage = StorageManager.getInstance().getStage() + + this.label_time.text = Utility_ConvertSecondToString(doStage.get_duration()) + this.label_diffucuty.text = doStage.get_difficulty() + + EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_UPDATE_PAUSE, true) + this.btn_continue.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { + EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_UPDATE_PAUSE, false) + this.owner.destroy() + }) + + this.btn_restart.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { + var stageID = doStage.get_stageID() + var type = doStage.get_stageType() + var difficulty = doStage.get_difficulty() + StorageManager.getInstance().cleanStage() + StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty) + UIManager.getInstance().loadStageUI(stageID); + this.owner.destroy() + }) + + } +} \ No newline at end of file diff --git a/src/views/GamePause.ts.meta b/src/views/GamePause.ts.meta new file mode 100644 index 0000000..db55e21 --- /dev/null +++ b/src/views/GamePause.ts.meta @@ -0,0 +1,3 @@ +{ + "uuid": "c8bf81c2-c8fd-4f25-b120-4ad620ff7b88" +} \ No newline at end of file diff --git a/src/views/Home.ts b/src/views/Home.ts index 0ad7471..133c2aa 100644 --- a/src/views/Home.ts +++ b/src/views/Home.ts @@ -75,14 +75,8 @@ export class Home extends Laya.Script { this.btn_continue.visible = false this.btn_more.visible = false this.btn_play.on(Laya.Event.CLICK, this, ()=>{//Play - var random = Math.random() - var value = config.DIFFICULTY_LIST[Math.floor(random*config.DIFFICULTY_LIST.length)] - var list = LevelManager.getInstance().getLevelList(value) - random = Math.random() - var index = Math.floor(random*list.length) var stageName = `${config.MONTH_ABBRS[nowMonth-1]} ${nowDay}` - console.log("随机一个关卡", value, index) - StorageManager.getInstance().newStage(stageID, config.STAGE_TYPE.DC, stageName, value, index) + StorageManager.getInstance().newStage(stageID, config.STAGE_TYPE.DC, stageName) UIManager.getInstance().loadStageUI(stageID); this.owner.destroy() }) @@ -153,13 +147,7 @@ export class Home extends Laya.Script { d.onInit((value: string)=> { console.log("选择难度", value) StorageManager.getInstance().cleanMainStage() - var user = StorageManager.getInstance().getUser() - var index = user.get_progress(value) - var levelStr = LevelManager.getInstance().getLevelStr(value, index) - if (!levelStr || levelStr.length <= 0) {//说明当前难度已经打通了,所以给他从头开始 - user.update_progress(value, 0) - } - StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value, user.get_progress(value)) + StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); this.owner.destroy() }) diff --git a/src/views/Loading.ts b/src/views/Loading.ts deleted file mode 100644 index 0cb1ea5..0000000 --- a/src/views/Loading.ts +++ /dev/null @@ -1,7 +0,0 @@ - -const { regClass, property } = Laya - -@regClass() -export class Loading extends Laya.Script { - -} diff --git a/src/views/Loading.ts.meta b/src/views/Loading.ts.meta deleted file mode 100644 index 532ca62..0000000 --- a/src/views/Loading.ts.meta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "uuid": "100c54c4-c515-4e10-8cfc-181e7067024a" -} \ No newline at end of file diff --git a/src/views/Stage.ts b/src/views/Stage.ts index e438f96..cb489dd 100644 --- a/src/views/Stage.ts +++ b/src/views/Stage.ts @@ -18,6 +18,8 @@ export class Stage extends Laya.Script { @property(Laya.Button) public btn_back: Laya.Button + @property(Laya.Button) + public btn_pause: Laya.Button @property(Laya.Label) public label_score: Laya.Label; @property(Laya.Label) @@ -71,6 +73,9 @@ export class Stage extends Laya.Script { UIManager.getInstance().closeStageUI(); } }) + this.btn_pause.on(Laya.Event.CLICK, this, ()=>{ + UIManager.getInstance().loadGamePauseUI(); + }) for (var i=0; i{ diff --git a/src/views/GUITips.ts.meta b/src/views/common/GUITips.ts.meta similarity index 100% rename from src/views/GUITips.ts.meta rename to src/views/common/GUITips.ts.meta