فهرست منبع

随机关卡机制添加

woso_javan 4 ماه پیش
والد
کامیت
c1cf913cd2

+ 1 - 1
assets/module_basic/config/levels_config.json

@@ -1 +1 @@
-{"1":{"level":1,"reward_basics":200,"reward_additional":300},"2":{"level":2,"reward_basics":400,"reward_additional":600},"3":{"level":3,"reward_basics":600,"reward_additional":900},"4":{"level":4,"reward_basics":800,"reward_additional":1200},"5":{"level":5,"reward_basics":1000,"reward_additional":1500},"6":{"level":6,"reward_basics":1200,"reward_additional":1800},"7":{"level":7,"reward_basics":1400,"reward_additional":2100},"8":{"level":8,"reward_basics":1600,"reward_additional":2400},"9":{"level":9,"reward_basics":1800,"reward_additional":2700},"10":{"level":10,"reward_basics":2000,"reward_additional":3000}}
+{"1":{"level":1,"step":20,"random":0},"2":{"level":2,"step":25,"random":1},"3":{"level":3,"step":25,"random":1},"4":{"level":4,"step":25,"random":1},"5":{"level":5,"step":30,"random":1},"6":{"level":6,"step":30,"random":1},"7":{"level":7,"step":30,"random":1},"8":{"level":8,"step":35,"random":1},"9":{"level":9,"step":35,"random":1},"10":{"level":10,"step":30,"random":1}}

+ 1 - 10
assets/module_basic/config/main_config.json

@@ -1,10 +1 @@
-{
-    "1": {
-        "param": 5,
-        "content": "加时弹窗获得的时间,单位秒"
-    },
-    "2": {
-        "param": 2,
-        "content": "吸力范围,填黑洞当前直径的倍数"
-    }
-}
+{"1":{"param":5,"content":"加时弹窗获得的时间,单位秒"},"2":{"param":2,"content":"吸力范围,填黑洞当前直径的倍数"}}

+ 1 - 50
assets/module_basic/config/music_config.json

@@ -1,50 +1 @@
-{
-    "1": {
-        "name": "bgm_1",
-        "type": 1,
-        "cd": 0,
-        "content": "主界面背景音乐"
-    },
-    "2": {
-        "name": "bgm_2",
-        "type": 1,
-        "cd": 0,
-        "content": "游戏环节的背景音乐"
-    },
-    "3": {
-        "name": "dianji",
-        "type": 2,
-        "cd": 0,
-        "content": "所有按钮的点击音效"
-    },
-    "4": {
-        "name": "yidong",
-        "type": 2,
-        "cd": 0,
-        "content": "点击车子移动音效/车子装满移动音效"
-    },
-    "5": {
-        "name": "zhuangche",
-        "type": 2,
-        "cd": 0,
-        "content": "车子撞到其他车的音效"
-    },
-    "6": {
-        "name": "luosi",
-        "type": 2,
-        "cd": 0,
-        "content": "螺丝取下时的音效"
-    },
-    "7": {
-        "name": "shengli",
-        "type": 2,
-        "cd": 0,
-        "content": "胜利音效"
-    },
-    "8": {
-        "name": "shibai",
-        "type": 2,
-        "cd": 0,
-        "content": "失败音效"
-    }
-}
+{"1":{"name":"bgm_1","type":1,"cd":0,"content":"主界面背景音乐"},"2":{"name":"bgm_2","type":1,"cd":0,"content":"游戏环节的背景音乐"},"3":{"name":"dianji","type":2,"cd":0,"content":"所有按钮的点击音效"},"4":{"name":"yidong","type":2,"cd":0,"content":"点击车子移动音效/车子装满移动音效"},"5":{"name":"zhuangche","type":2,"cd":0,"content":"车子撞到其他车的音效"},"6":{"name":"luosi","type":2,"cd":0,"content":"螺丝取下时的音效"},"7":{"name":"shengli","type":2,"cd":0,"content":"胜利音效"},"8":{"name":"shibai","type":2,"cd":0,"content":"失败音效"}}

+ 8 - 7
assets/module_basic/table/Tablelevels_config.ts

@@ -15,16 +15,17 @@ export class Tablelevels_config {
     /** 编号【KEY】 */
     id: number = 0;
 
-    /** 关卡编号 */
+    /** 关卡 */
     get level(): number {
         return this.data.level;
     }
-    /** 基础钞票奖励 */
-    get reward_basics(): number {
-        return this.data.reward_basics;
+    /** 关卡操作步数 */
+    get step(): number {
+        return this.data.step;
     }
-    /** 额外钞票奖励 */
-    get reward_additional(): number {
-        return this.data.reward_additional;
+    /** 是否参与随机 */
+    get random(): number {
+        return this.data.random;
     }
 }
+    

+ 1 - 0
assets/module_basic/table/Tablemusic_config.ts

@@ -32,3 +32,4 @@ export class Tablemusic_config {
         return this.data.content;
     }
 }
+    

+ 0 - 2
assets/module_movecar/RoosterMoveCar.ts

@@ -37,8 +37,6 @@ export class RoosterMoveCar extends Component {
     }
 
     async startGame() {
-        //DOTO 获取保存等级
-        LevelManager.instance.levelModel.level = 1;
         await LevelManager.instance.gameStart();
     }
 

+ 28 - 2
assets/module_movecar/Script/Manager/LevelMgr.ts

@@ -1,4 +1,4 @@
-import { Node, Prefab, _decorator, assetManager, find, instantiate } from 'cc';
+import { Node, Prefab, _decorator, assetManager, find, instantiate, sys } from 'cc';
 import { resLoader } from 'db://assets/core_tgx/base/ResLoader';
 import { EventDispatcher } from 'db://assets/core_tgx/easy_ui_framework/EventDispatcher';
 import { GlobalConfig } from '../../../start/Config/GlobalConfig';
@@ -83,12 +83,38 @@ export class LevelManager {
 
     upgradeLevel(up: number = 1): void {
         this.levelModel.level += up;
+        sys.localStorage.setItem('level', this.levelModel.level.toString());
+        if (this.levelModel.level > GlobalConfig.levelTotal) {
+            const randomLevelList = this.levelModel.randomLevelList;
+
+            // 随机选择一个值
+            let randomIndex = Math.floor(Math.random() * randomLevelList.length);
+            let randomLevel = randomLevelList[randomIndex];
+
+            // 如果随机到的关卡和当前关卡相同,则重新随机
+            while (randomLevel === this.randomLevel && randomLevelList.length > 1) {
+                randomIndex = Math.floor(Math.random() * randomLevelList.length);
+                randomLevel = randomLevelList[randomIndex];
+            }
+
+            this.randomLevel = randomLevel;
+            console.log(`随机真实关卡level: ${this.randomLevel}`);
+            this.levelModel.levelConfig.init(this.randomLevel);
+        }
+        else {
+            this.levelModel.levelConfig.init(this.levelModel.level);
+        }
         EventDispatcher.instance.emit(GameEvent.EVENT_BATTLE_SUCCESS_LEVEL_UP);
     }
 
     async loadLevel(level: number): Promise<Node> {
         let levelPrefab = null;
-        levelPrefab = await this.loadAsyncLevel(level);
+        if (this.levelModel.level > GlobalConfig.levelTotal) {
+            console.log('随机关卡加载 this.randomLevel: ' + this.randomLevel);
+            levelPrefab = await this.loadAsyncLevel(this.randomLevel);
+        } else {
+            levelPrefab = await this.loadAsyncLevel(level);
+        }
 
         if (this.currentLevel) {
             this.currentLevel.destroy();

+ 13 - 1
assets/module_movecar/Script/Model/LevelModel.ts

@@ -46,13 +46,23 @@ export class LevelModel {
 
     constructor() {
         this.levelConfig = new Tablelevels_config();
+        this.getRandomLevelList();
 
         const isDebug = GlobalConfig.isDebug;
         if (isDebug) {
             this.level = GlobalConfig.initilizeLevel;
         } else {
             const level = sys.localStorage.getItem('level');
-            this.level = level ? parseInt(level) : 1;
+            if (!level) {
+                this.level = 1;
+            } else {
+                if (level > GlobalConfig.levelTotal) {
+                    const randomLevel = this.randomLevelList[Math.floor(Math.random() * this.randomLevelList.length - 1)];
+                    this.level = randomLevel;
+                } else {
+                    this.level = parseInt(level);
+                }
+            }
         };
         this.levelConfig.init(this.level);
     }
@@ -65,6 +75,8 @@ export class LevelModel {
         }
         this.randomLevelList = Object.values(table).filter(item => item['random'] == 1)
             .map(item => item['level']);
+
+        // console.log('随机关卡列表:', this.randomLevelList);
     }
 
     /** 清除关卡数据*/

BIN
assets/module_movecar/Textures/exhaust.png


+ 134 - 0
assets/module_movecar/Textures/exhaust.png.meta

@@ -0,0 +1,134 @@
+{
+  "ver": "1.0.26",
+  "importer": "image",
+  "imported": true,
+  "uuid": "030404d5-224c-4e70-9f11-d71f86883409",
+  "files": [
+    ".json",
+    ".png"
+  ],
+  "subMetas": {
+    "6c48a": {
+      "importer": "texture",
+      "uuid": "030404d5-224c-4e70-9f11-d71f86883409@6c48a",
+      "displayName": "exhaust",
+      "id": "6c48a",
+      "name": "texture",
+      "userData": {
+        "wrapModeS": "clamp-to-edge",
+        "wrapModeT": "clamp-to-edge",
+        "imageUuidOrDatabaseUri": "030404d5-224c-4e70-9f11-d71f86883409",
+        "isUuid": true,
+        "visible": false,
+        "minfilter": "linear",
+        "magfilter": "linear",
+        "mipfilter": "nearest",
+        "anisotropy": 0
+      },
+      "ver": "1.0.22",
+      "imported": true,
+      "files": [
+        ".json"
+      ],
+      "subMetas": {}
+    },
+    "f9941": {
+      "importer": "sprite-frame",
+      "uuid": "030404d5-224c-4e70-9f11-d71f86883409@f9941",
+      "displayName": "exhaust",
+      "id": "f9941",
+      "name": "spriteFrame",
+      "userData": {
+        "trimType": "auto",
+        "trimThreshold": 1,
+        "rotated": false,
+        "offsetX": 0,
+        "offsetY": 0,
+        "trimX": 0,
+        "trimY": 0,
+        "width": 54,
+        "height": 142,
+        "rawWidth": 54,
+        "rawHeight": 142,
+        "borderTop": 0,
+        "borderBottom": 0,
+        "borderLeft": 0,
+        "borderRight": 0,
+        "packable": true,
+        "pixelsToUnit": 100,
+        "pivotX": 0.5,
+        "pivotY": 0.5,
+        "meshType": 0,
+        "vertices": {
+          "rawPosition": [
+            -27,
+            -71,
+            0,
+            27,
+            -71,
+            0,
+            -27,
+            71,
+            0,
+            27,
+            71,
+            0
+          ],
+          "indexes": [
+            0,
+            1,
+            2,
+            2,
+            1,
+            3
+          ],
+          "uv": [
+            0,
+            142,
+            54,
+            142,
+            0,
+            0,
+            54,
+            0
+          ],
+          "nuv": [
+            0,
+            0,
+            1,
+            0,
+            0,
+            1,
+            1,
+            1
+          ],
+          "minPos": [
+            -27,
+            -71,
+            0
+          ],
+          "maxPos": [
+            27,
+            71,
+            0
+          ]
+        },
+        "isUuid": true,
+        "imageUuidOrDatabaseUri": "030404d5-224c-4e70-9f11-d71f86883409@6c48a",
+        "atlasUuid": ""
+      },
+      "ver": "1.0.12",
+      "imported": true,
+      "files": [
+        ".json"
+      ],
+      "subMetas": {}
+    }
+  },
+  "userData": {
+    "type": "sprite-frame",
+    "hasAlpha": true,
+    "fixAlphaTransparencyArtifacts": false,
+    "redirect": "030404d5-224c-4e70-9f11-d71f86883409@f9941"
+  }
+}

BIN
assets/module_movecar/Textures/exhaust1.png


+ 134 - 0
assets/module_movecar/Textures/exhaust1.png.meta

@@ -0,0 +1,134 @@
+{
+  "ver": "1.0.26",
+  "importer": "image",
+  "imported": true,
+  "uuid": "215c136e-94f6-494e-8994-8797d7c82ac3",
+  "files": [
+    ".json",
+    ".png"
+  ],
+  "subMetas": {
+    "6c48a": {
+      "importer": "texture",
+      "uuid": "215c136e-94f6-494e-8994-8797d7c82ac3@6c48a",
+      "displayName": "exhaust1",
+      "id": "6c48a",
+      "name": "texture",
+      "userData": {
+        "wrapModeS": "clamp-to-edge",
+        "wrapModeT": "clamp-to-edge",
+        "imageUuidOrDatabaseUri": "215c136e-94f6-494e-8994-8797d7c82ac3",
+        "isUuid": true,
+        "visible": false,
+        "minfilter": "linear",
+        "magfilter": "linear",
+        "mipfilter": "nearest",
+        "anisotropy": 0
+      },
+      "ver": "1.0.22",
+      "imported": true,
+      "files": [
+        ".json"
+      ],
+      "subMetas": {}
+    },
+    "f9941": {
+      "importer": "sprite-frame",
+      "uuid": "215c136e-94f6-494e-8994-8797d7c82ac3@f9941",
+      "displayName": "exhaust1",
+      "id": "f9941",
+      "name": "spriteFrame",
+      "userData": {
+        "trimType": "auto",
+        "trimThreshold": 1,
+        "rotated": false,
+        "offsetX": 0,
+        "offsetY": 0,
+        "trimX": 0,
+        "trimY": 0,
+        "width": 54,
+        "height": 148,
+        "rawWidth": 54,
+        "rawHeight": 148,
+        "borderTop": 0,
+        "borderBottom": 0,
+        "borderLeft": 0,
+        "borderRight": 0,
+        "packable": true,
+        "pixelsToUnit": 100,
+        "pivotX": 0.5,
+        "pivotY": 0.5,
+        "meshType": 0,
+        "vertices": {
+          "rawPosition": [
+            -27,
+            -74,
+            0,
+            27,
+            -74,
+            0,
+            -27,
+            74,
+            0,
+            27,
+            74,
+            0
+          ],
+          "indexes": [
+            0,
+            1,
+            2,
+            2,
+            1,
+            3
+          ],
+          "uv": [
+            0,
+            148,
+            54,
+            148,
+            0,
+            0,
+            54,
+            0
+          ],
+          "nuv": [
+            0,
+            0,
+            1,
+            0,
+            0,
+            1,
+            1,
+            1
+          ],
+          "minPos": [
+            -27,
+            -74,
+            0
+          ],
+          "maxPos": [
+            27,
+            74,
+            0
+          ]
+        },
+        "isUuid": true,
+        "imageUuidOrDatabaseUri": "215c136e-94f6-494e-8994-8797d7c82ac3@6c48a",
+        "atlasUuid": ""
+      },
+      "ver": "1.0.12",
+      "imported": true,
+      "files": [
+        ".json"
+      ],
+      "subMetas": {}
+    }
+  },
+  "userData": {
+    "type": "sprite-frame",
+    "hasAlpha": true,
+    "fixAlphaTransparencyArtifacts": false,
+    "redirect": "215c136e-94f6-494e-8994-8797d7c82ac3@f9941"
+  }
+}

+ 2 - 2
assets/start/Config/GlobalConfig.ts

@@ -1,5 +1,5 @@
 export const GlobalConfig = {
-    isDebug: true,
-    initilizeLevel: 1,//初始关卡
+    isDebug: false,
+    initilizeLevel: 10,//初始关卡
     levelTotal: 10,   //最大关卡等级
 }

BIN
excel/levels_config.xlsx