Kaynağa Gözat

问号水 概率添加

woso_javan 3 ay önce
ebeveyn
işleme
8af437cea0

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

@@ -1 +1 @@
-{"1":{"level":1,"color":9,"wineglass":[4,10,1],"wineglass_color":[9,7],"measuringcup":[5,95,5],"measuringcup_number":5,"measuringcup_color":7,"query_probability":15,"query_ceiling":4,"ice_probability":10,"ice_ceiling":1,"ice_thelimit":30,"change_ceiling":15,"change_thelimit":4},"2":{"level":2,"color":8,"wineglass":[2,8,3],"wineglass_color":[9,7],"measuringcup":[5,65,25],"measuringcup_number":10,"measuringcup_color":7,"query_probability":15,"query_ceiling":4,"ice_probability":10,"ice_ceiling":1,"ice_thelimit":30,"change_ceiling":15,"change_thelimit":4}}
+{"1":{"level":1,"color":9,"wineglass":[4,10,1],"wineglass_color":[9,7],"measuringcup":[5,95,5],"measuringcup_number":5,"measuringcup_color":7,"query_probability":50,"query_ceiling":2,"ice_probability":10,"ice_ceiling":1,"ice_thelimit":30,"change_ceiling":15,"change_thelimit":4},"2":{"level":2,"color":8,"wineglass":[2,8,3],"wineglass_color":[9,7],"measuringcup":[5,65,25],"measuringcup_number":10,"measuringcup_color":7,"query_probability":70,"query_ceiling":4,"ice_probability":10,"ice_ceiling":1,"ice_thelimit":30,"change_ceiling":15,"change_thelimit":4}}

+ 1 - 1
assets/module_take_goblet/Prefabs/Levels/lvl_1.prefab

@@ -2898,7 +2898,7 @@
     "tempCups": {
       "__id__": 43
     },
-    "goblets": {
+    "originArea": {
       "__id__": 112
     },
     "_id": ""

+ 1 - 1
assets/module_take_goblet/Prefabs/Levels/lvl_2.prefab

@@ -2898,7 +2898,7 @@
     "tempCups": {
       "__id__": 43
     },
-    "goblets": {
+    "originArea": {
       "__id__": 112
     },
     "_id": ""

+ 34 - 14
assets/module_take_goblet/Script/Component/OriginArea.ts

@@ -1,14 +1,34 @@
-import { _decorator, Component, Node } from 'cc';
-const { ccclass, property } = _decorator;
-
-@ccclass('OriginArea')
-export class OriginArea extends Component {
-    start() {
-
-    }
-
-    update(deltaTime: number) {
-        
-    }
-}
-

+import { _decorator, Component, Node } from 'cc';
+import { OriginCup } from './OriginCup';
+import { Water } from './Water';
+const { ccclass, property } = _decorator;
+
+@ccclass('OriginArea')
+export class OriginArea extends Component {
+    start() {
+
+    }
+
+    update(deltaTime: number) {
+
+    }
+
+    //获取所有原浆杯水节点的mark数量
+    public getTotalMarkCount(): number {
+        let count = 0;
+        this.node.children.forEach(originCupNode => {
+            const originCup = originCupNode.getComponent(OriginCup);
+            if (originCup) {
+                originCup.waters.children.forEach(waterNode => {
+                    const water = waterNode.getComponent(Water);
+                    if (water?.markActive) {
+                        count++;
+                    }
+                });
+            }
+        });
+        return count;
+    }
+}
+
+

+ 12 - 8
assets/module_take_goblet/Script/LevelAction.ts

@@ -1,5 +1,4 @@
 import { _decorator, BoxCollider2D, Button, CircleCollider2D, Collider2D, Component, find, instantiate, Node, NodeEventType, tween, view, Vec3, mat4, UITransform } from 'cc';
-import { resLoader, ResLoader } from '../../core_tgx/base/ResLoader';
 import { CupHeight, TakeGobletGlobalInstance, WaterColorLog, WaterColors } from './TakeGobletGlobalInstance';
 import { OutArea } from './Component/OutArea';
 import { WaitArea } from './Component/WaitArea';
@@ -13,6 +12,7 @@ import { TempCups } from './Component/TempCups';
 import { tgxUIMgr, tgxUITips } from '../../core_tgx/tgx';
 import { LevelManager } from './Manager/LevelMgr';
 import { UI_BattleResult } from '../../scripts/UIDef';
+import { OriginArea } from './Component/OriginArea';
 const { ccclass, property } = _decorator;
 
 @ccclass('LevelAction')
@@ -28,7 +28,7 @@ export class LevelAction extends Component {
     tempCups: Node = null!;  //临时杯
 
     @property(Node)
-    goblets: Node = null!;  //原浆区
+    originArea: Node = null!;  //原浆区
 
     private originCupPositions = new Map<string, Vec3>(); // 改用唯一ID记录
     private isProcessing = false; // 添加状态锁
@@ -138,7 +138,7 @@ export class LevelAction extends Component {
             return comp ? comp.cupColor : WaterColors.Blue;
         });
 
-        this.goblets.children.forEach(originCupNode => {
+        this.originArea.children.forEach(originCupNode => {
             const originCup = originCupNode.getComponent(OriginCup)!;
             const waters = originCup.waters.children;
 
@@ -257,7 +257,7 @@ export class LevelAction extends Component {
         }
     }
 
-    // 新增方法:处理暂存区倒水到调酒区
+    //处理暂存区倒水到调酒区
     private async handlePourTempCupToOutArea() {
         if (this.isProcessing) return;
         this.isProcessing = true;
@@ -355,6 +355,7 @@ export class LevelAction extends Component {
         }
     }
 
+    //倒水移动动画
     private async pourAnimation(
         origin: Node,
         target: Node,
@@ -382,7 +383,7 @@ export class LevelAction extends Component {
                 .start();
         });
 
-        // 正确应用返回动画逻辑
+        // 返回到暂存区初始位置
         if (isTempCup && originalPos) {
             await new Promise(resolve => {
                 tween(origin)
@@ -393,7 +394,7 @@ export class LevelAction extends Component {
         }
     }
 
-    // 新增辅助方法
+    //隐藏原浆杯当前水层
     private hideCurrentWaterLayer(originCup: OriginCup) {
         const activeWaters = originCup.waters.children.filter(n => n.active);
         if (activeWaters.length >= 0) {
@@ -417,8 +418,8 @@ export class LevelAction extends Component {
         const uiTransform = this.node.getComponent(UITransform)!;
         newCup.setPosition(-uiTransform.width / 2, 0, 0);
         newCup.getComponent(OriginCup)!.cupHeight = height;
+        this.originArea.addChild(newCup);
         this.setupOriginCupColors(newCup, colors);
-        this.goblets.addChild(newCup);
 
         // 记录新杯子的初始位置
         this.originCupPositions.set(newCup.uuid, targetPos);
@@ -445,16 +446,19 @@ export class LevelAction extends Component {
     private setupOriginCupColors(cupNode: Node, colors: WaterColors[]) {
         const originCup = cupNode.getComponent(OriginCup)!;
         const waters = originCup.waters.children;
-
         // console.log(`新创建原浆杯,高度: ${originCup.cupHeight}`);
+        const markCount = this.originArea.getComponent(OriginArea)?.getTotalMarkCount();
         const waterCount = originCup.cupHeight;
         for (let i = 0; i < waterCount; i++) {
             const waterNode = waters[i];
             if (!waterNode) continue;
 
             const water = waterNode.getComponent(Water)!;
+            const mark = TakeGobletGlobalInstance.instance.refreshQuestionWater(markCount);
             water.color = colors[Math.floor(Math.random() * colors.length)];
             waterNode.active = true;
+            // console.log('mark: ', mark);
+            water.setMark(mark);
         }
     }
 

+ 16 - 1
assets/module_take_goblet/Script/TakeGobletGlobalInstance.ts

@@ -1,7 +1,8 @@
-import { _decorator, assetManager, Component, Node, Prefab } from 'cc';
+import { _decorator, assetManager, Component, find, Node, Prefab } from 'cc';
 import { resLoader } from '../../core_tgx/base/ResLoader';
 import { ResourcePool } from './ResourcePool';
 import { LevelManager } from './Manager/LevelMgr';
+import { OriginArea } from './Component/OriginArea';
 
 const { ccclass, property } = _decorator;
 
@@ -105,6 +106,20 @@ export class TakeGobletGlobalInstance {
         const { wineglass_color } = LevelManager.instance.levelModel.levelConfig;
         return wineglass_color;
     }
+
+    //问号水刷新概率
+    refreshQuestionWater(markCount: number): boolean {
+        const { query_probability, query_ceiling } = LevelManager.instance.levelModel.levelConfig;
+
+        // 达到上限直接返回
+        if (markCount >= query_ceiling) {
+            return false;
+        }
+
+        // 概率计算
+        const random = Math.random() * 100;
+        return random <= query_probability;
+    }
 }
 
 /**道具类型

+ 0 - 2
assets/module_take_goblet/rooster_takegoblet.scene

@@ -1928,7 +1928,6 @@
     "__type__": "e06e2SlI+ZJtpHlZ9sR5XFm",
     "_name": "",
     "_objFlags": 0,
-    "__editorExtras__": {},
     "node": {
       "__id__": 13
     },
@@ -2687,7 +2686,6 @@
     "__type__": "aa87cyBikxNRJE8D80V5T4B",
     "_name": "",
     "_objFlags": 0,
-    "__editorExtras__": {},
     "node": {
       "__id__": 66
     },

BIN
excel/levels_config.xlsx