dzduole 2 주 전
부모
커밋
1070dfb5bc

+ 257 - 34
client/laya/bin/js/bundle.js

@@ -4787,6 +4787,53 @@
     }
     UIPower.uiName = "UIPower";
 
+    class LocalStorageManager {
+        test1() {
+            LocalStorageManager.setItem("playerName", "Tom");
+            LocalStorageManager.setItem("playerLevel", 5);
+            LocalStorageManager.setItem("playerData", { score: 100, level: 3 });
+            const name = LocalStorageManager.getItem("playerName");
+            const level = LocalStorageManager.getItem("playerLevel");
+            const data = LocalStorageManager.getItem("playerData");
+            console.log(name);
+            console.log(level);
+            console.log(data);
+            LocalStorageManager.removeItem("playerLevel");
+        }
+        static setItem(key, value) {
+            Laya.LocalStorage.setItem(key, JSON.stringify(value));
+        }
+        static getItem(key) {
+            const data = Laya.LocalStorage.getItem(key);
+            if (data === null)
+                return null;
+            try {
+                return JSON.parse(data);
+            }
+            catch (e) {
+                return data;
+            }
+        }
+        static removeItem(key) {
+            Laya.LocalStorage.removeItem(key);
+        }
+        static clear() {
+            Laya.LocalStorage.clear();
+        }
+        static hasJosnKey(key) {
+            var value = Laya.LocalStorage.getJSON(key);
+            if (value != null) {
+                return true;
+            }
+            else {
+                return false;
+            }
+        }
+        static hasKey(key) {
+            return Laya.LocalStorage.getItem(key) !== null;
+        }
+    }
+
     class UILevelProp extends UIBase {
         constructor() {
             super();
@@ -4884,6 +4931,7 @@
         }
         startGame() {
             if (DataMgr.powerEnough()) {
+                console.log('zh:powerEnough =' + DataMgr.powerEnough());
                 this.ui.myNode.startBtn.touchable = false;
                 this.ui.myNode.startBtn.powerEft.t0.play(Laya.Handler.create(this, () => {
                     console.log('zh:startGame ');
@@ -4893,16 +4941,40 @@
                     xGame.common.gameMode = GameMode.placeBall;
                     xGame.common.placeBallCurLevel = this.level;
                     xGame.uiMgr.Show(UIGame);
+                    this.logEventForChallenge_level_start(this.level);
                     xGame.uiMgr.Hide(UILevelDisplay);
                     xGame.uiMgr.Hide(UIMain);
                     this.hide();
                 }));
             }
             else {
-                console.log('zh:startGame no power');
+                console.log('zh:powerEnough 不足 =' + DataMgr.powerEnough());
                 xGame.uiMgr.Show(UIPower);
             }
         }
+        logEventForChallenge_level_start(level) {
+            let keyStr = 'sjmd_challenge_level_start';
+            let jsonStr = {
+                "count": 0,
+                "gold_balance  ": DataMgr.getCoin(),
+                "level": level,
+                "diamond_balance  ": DataMgr.getDiamond()
+            };
+            if (LocalStorageManager.hasJosnKey(keyStr)) {
+                const d = LocalStorageManager.getItem(keyStr);
+                if (level > d.level) {
+                    jsonStr.count = d.count + 1;
+                    LocalStorageManager.setItem(keyStr, jsonStr);
+                }
+                else {
+                }
+            }
+            else {
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }
+            const reqStr = JSON.stringify(jsonStr);
+            JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_start', reqStr);
+        }
         hide() {
             super.hide();
         }
@@ -5237,7 +5309,8 @@
             this.showSelf = true;
             this.rankType = 1;
             this.rankList = [];
-            this.myIndex = 0;
+            this.topX = 10;
+            this.myIndex = this.topX + 1;
             this.myStar = 0;
         }
         onConstructor() {
@@ -5269,10 +5342,9 @@
         updateSelfItem() {
             console.log('zh:Moyu.platType =' + Moyu.platType);
             let self = Moyu.getUserInfo();
-            let topX = 10;
             this.ui.myNode.selfNode.c1.selectedIndex = this.myIndex < 4 ? this.myIndex - 1 : 3;
-            this.ui.myNode.selfNode.rankTxt.text = this.myIndex > topX ? "No Rank" : this.myIndex.toString();
-            if (this.myIndex > topX) {
+            this.ui.myNode.selfNode.rankTxt.text = this.myIndex > this.topX ? "No Rank" : this.myIndex.toString();
+            if (this.myIndex > this.topX) {
                 this.ui.myNode.selfNode.rankTxt.fontSize = 36;
             }
             else {
@@ -5284,13 +5356,11 @@
         }
         updateItemData(data) {
             this.myStar = xGame.common.getAllStarNum();
-            this.myStar = 10;
-            this.myIndex = 3;
             if (this.rankList.length < 2) {
                 this.rankList = data;
                 let self = Moyu.getUserInfo();
                 console.log('zh:myself iuserinfo = ' + JSON.stringify(self));
-                console.log('zh:myself headIcon= ' + self.headIcon);
+                self.headIcon = self.headIcon;
                 for (let i = 0; i < data.length; i++) {
                     let data = this.rankList[i];
                     if (data.userId == self.userId) {
@@ -5300,7 +5370,7 @@
                 }
                 for (let i = 0; i < data.length; i++) {
                     let data = this.rankList[i];
-                    if (data.rankScore < this.myStar && this.myIndex > 50) {
+                    if (data.rankScore < this.myStar && this.myIndex > this.topX) {
                         this.myIndex = i + 1;
                         let user = { headIcon: self.headIcon, nickName: "myself" };
                         let ud = { user: user, data: {} };
@@ -5320,7 +5390,6 @@
         }
         updateItemUI(index, obj) {
             let data = this.rankList[index];
-            console.log('zh:updateItemui  idex = ' + JSON.stringify(data));
             let userData = JSON.parse(data.userData).user;
             obj.nameTxt.text = userData.nickName.toString();
             obj.valueTxt.text = data.rankScore;
@@ -7124,6 +7193,13 @@
                 xGame.soundMgr.playSound("s_win");
                 xGame.common.showGirlTalkPop(8, this.ui.talkNode, this.ui.talkNode.womanTxt);
                 this.diyGameDataUtilForGameWin();
+                let level = xGame.common.placeBallCurLevel;
+                if (level > 59) {
+                    this.logEventForChallenge_level_complete(level);
+                }
+                else {
+                    this.logEventForChallenge_level_N(level);
+                }
             }
             else {
                 JSBridgeUtils.instance.showInternAd('gameend_faill');
@@ -7309,6 +7385,7 @@
                     DataMgr.setPower(-1);
                     xGame.eventMgr.event(POWER_TIME);
                     this.startPlaceBallLevel(level);
+                    this.logEventForChallenge_level_start(level);
                 }));
             }
             else {
@@ -7338,7 +7415,8 @@
                             });
                         }
                         else {
-                            this.powerStartPlaceBallLevel(level + 1, this.ui.rightBtn);
+                            let lev = level + 1;
+                            this.powerStartPlaceBallLevel(lev, this.ui.rightBtn);
                         }
                     }
                     else {
@@ -7359,6 +7437,29 @@
                     break;
             }
         }
+        logEventForChallenge_level_start(level) {
+            let keyStr = 'sjmd_challenge_level_start';
+            let jsonStr = {
+                "count": 0,
+                "gold_balance  ": DataMgr.getCoin(),
+                "level": level,
+                "diamond_balance  ": DataMgr.getDiamond()
+            };
+            if (LocalStorageManager.hasJosnKey(keyStr)) {
+                const d = LocalStorageManager.getItem(keyStr);
+                if (level > d.level) {
+                    jsonStr.count = d.count + 1;
+                    LocalStorageManager.setItem(keyStr, jsonStr);
+                }
+                else {
+                }
+            }
+            else {
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }
+            const reqStr = JSON.stringify(jsonStr);
+            JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_start', reqStr);
+        }
         qjff_AD_for_uiGameEnd(level) {
             DataMgr.setPlaceBallLevel(level, 1);
             this.startPlaceBallLevel(level + 1);
@@ -7369,6 +7470,46 @@
             xGame.uiMgr.Show(UIGame);
             this.hide();
         }
+        logEventForChallenge_level_complete(level) {
+            let keyStr = 'sjmd_challenge_level_complete';
+            let jsonStr = {
+                "count": 1,
+                "gold_balance  ": DataMgr.getCoin(),
+                "level": level,
+                "diamond_balance  ": DataMgr.getDiamond()
+            };
+            if (LocalStorageManager.hasJosnKey(keyStr)) {
+                const d = LocalStorageManager.getItem(keyStr);
+                jsonStr.count = d.count + 1;
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }
+            else {
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }
+            const reqStr = JSON.stringify(jsonStr);
+            JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_complete', reqStr);
+        }
+        logEventForChallenge_level_N(level) {
+            console.log('zh:logEventForChallenge_level_N ' + level);
+            let keyStr = 'sjmd_challenge_level_N';
+            if (LocalStorageManager.hasKey(keyStr)) {
+                let lev = LocalStorageManager.getItem(keyStr);
+                if (level > lev) {
+                    LocalStorageManager.setItem(keyStr, level);
+                }
+                if ((level) % 5 == 0) {
+                    console.log('zh:每5关上报1次');
+                    let sjmc = 'challenge_level_' + level;
+                    JSBridgeUtils.instance.logEventForAdNoParams(sjmc);
+                }
+                else {
+                    console.log('zh:5 no 上报');
+                }
+            }
+            else {
+                LocalStorageManager.setItem(keyStr, level);
+            }
+        }
     }
     UIGameEnd.uiName = "UIGameEnd";
 
@@ -11375,22 +11516,10 @@
             node.visible = false;
         }
         createHead(loader, url, size = 107) {
-            console.log('zh:createHead url=', url);
             if (Laya.Browser.name == "Browser") {
                 loader.url = url;
                 return;
             }
-            if (Moyu.isTT) {
-                let localImage = new Image();
-                localImage.src = url;
-                localImage.onload = () => {
-                    let t2d = new Laya.Texture2D();
-                    t2d.width = size;
-                    t2d.height = size;
-                    loader.displayObject.graphics.drawImage(new Laya.Texture(t2d), 0, 0);
-                    t2d.loadImageSource(localImage);
-                };
-            }
             else {
                 console.log('zh:url=', url);
                 loader.url = url;
@@ -19006,6 +19135,13 @@
                 xGame.soundMgr.playSound("s_win");
                 xGame.common.showGirlTalkPop(8, this.ui.talkNode, this.ui.talkNode.womanTxt);
                 this.diyGameDataUtilForGameWin();
+                let level = xGame.common.placeBallCurLevel;
+                if (level > 59) {
+                    this.logEventForChallenge_level_complete(level);
+                }
+                else {
+                    this.logEventForChallenge_level_N(level);
+                }
             }
             else {
                 JSBridgeUtils.instance.showInternAd('gameend_faill');
@@ -19191,6 +19327,7 @@
                     DataMgr.setPower(-1);
                     xGame.eventMgr.event(POWER_TIME);
                     this.startPlaceBallLevel(level);
+                    this.logEventForChallenge_level_start(level);
                 }));
             }
             else {
@@ -19220,7 +19357,8 @@
                             });
                         }
                         else {
-                            this.powerStartPlaceBallLevel(level + 1, this.ui.rightBtn);
+                            let lev = level + 1;
+                            this.powerStartPlaceBallLevel(lev, this.ui.rightBtn);
                         }
                     }
                     else {
@@ -19241,6 +19379,29 @@
                     break;
             }
         }
+        logEventForChallenge_level_start(level) {
+            let keyStr = 'sjmd_challenge_level_start';
+            let jsonStr = {
+                "count": 0,
+                "gold_balance  ": DataMgr.getCoin(),
+                "level": level,
+                "diamond_balance  ": DataMgr.getDiamond()
+            };
+            if (LocalStorageManager.hasJosnKey(keyStr)) {
+                const d = LocalStorageManager.getItem(keyStr);
+                if (level > d.level) {
+                    jsonStr.count = d.count + 1;
+                    LocalStorageManager.setItem(keyStr, jsonStr);
+                }
+                else {
+                }
+            }
+            else {
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }
+            const reqStr = JSON.stringify(jsonStr);
+            JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_start', reqStr);
+        }
         qjff_AD_for_uiGameEnd(level) {
             DataMgr.setPlaceBallLevel(level, 1);
             this.startPlaceBallLevel(level + 1);
@@ -19251,6 +19412,46 @@
             xGame.uiMgr.Show(UIGame$1);
             this.hide();
         }
+        logEventForChallenge_level_complete(level) {
+            let keyStr = 'sjmd_challenge_level_complete';
+            let jsonStr = {
+                "count": 1,
+                "gold_balance  ": DataMgr.getCoin(),
+                "level": level,
+                "diamond_balance  ": DataMgr.getDiamond()
+            };
+            if (LocalStorageManager.hasJosnKey(keyStr)) {
+                const d = LocalStorageManager.getItem(keyStr);
+                jsonStr.count = d.count + 1;
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }
+            else {
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }
+            const reqStr = JSON.stringify(jsonStr);
+            JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_complete', reqStr);
+        }
+        logEventForChallenge_level_N(level) {
+            console.log('zh:logEventForChallenge_level_N ' + level);
+            let keyStr = 'sjmd_challenge_level_N';
+            if (LocalStorageManager.hasKey(keyStr)) {
+                let lev = LocalStorageManager.getItem(keyStr);
+                if (level > lev) {
+                    LocalStorageManager.setItem(keyStr, level);
+                }
+                if ((level) % 5 == 0) {
+                    console.log('zh:每5关上报1次');
+                    let sjmc = 'challenge_level_' + level;
+                    JSBridgeUtils.instance.logEventForAdNoParams(sjmc);
+                }
+                else {
+                    console.log('zh:5 no 上报');
+                }
+            }
+            else {
+                LocalStorageManager.setItem(keyStr, level);
+            }
+        }
     }
     UIGameEnd$1.uiName = "UIGameEnd";
 
@@ -19373,6 +19574,7 @@
         }
         startGame() {
             if (DataMgr.powerEnough()) {
+                console.log('zh:powerEnough =' + DataMgr.powerEnough());
                 this.ui.myNode.startBtn.touchable = false;
                 this.ui.myNode.startBtn.powerEft.t0.play(Laya.Handler.create(this, () => {
                     console.log('zh:startGame ');
@@ -19382,16 +19584,40 @@
                     xGame.common.gameMode = GameMode.placeBall;
                     xGame.common.placeBallCurLevel = this.level;
                     xGame.uiMgr.Show(UIGame$1);
+                    this.logEventForChallenge_level_start(this.level);
                     xGame.uiMgr.Hide(UILevelDisplay$1);
                     xGame.uiMgr.Hide(UIMain$1);
                     this.hide();
                 }));
             }
             else {
-                console.log('zh:startGame no power');
+                console.log('zh:powerEnough 不足 =' + DataMgr.powerEnough());
                 xGame.uiMgr.Show(UIPower$1);
             }
         }
+        logEventForChallenge_level_start(level) {
+            let keyStr = 'sjmd_challenge_level_start';
+            let jsonStr = {
+                "count": 0,
+                "gold_balance  ": DataMgr.getCoin(),
+                "level": level,
+                "diamond_balance  ": DataMgr.getDiamond()
+            };
+            if (LocalStorageManager.hasJosnKey(keyStr)) {
+                const d = LocalStorageManager.getItem(keyStr);
+                if (level > d.level) {
+                    jsonStr.count = d.count + 1;
+                    LocalStorageManager.setItem(keyStr, jsonStr);
+                }
+                else {
+                }
+            }
+            else {
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }
+            const reqStr = JSON.stringify(jsonStr);
+            JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_start', reqStr);
+        }
         hide() {
             super.hide();
         }
@@ -20421,7 +20647,8 @@
             this.showSelf = true;
             this.rankType = 1;
             this.rankList = [];
-            this.myIndex = 0;
+            this.topX = 10;
+            this.myIndex = this.topX + 1;
             this.myStar = 0;
         }
         onConstructor() {
@@ -20453,10 +20680,9 @@
         updateSelfItem() {
             console.log('zh:Moyu.platType =' + Moyu.platType);
             let self = Moyu.getUserInfo();
-            let topX = 10;
             this.ui.myNode.selfNode.c1.selectedIndex = this.myIndex < 4 ? this.myIndex - 1 : 3;
-            this.ui.myNode.selfNode.rankTxt.text = this.myIndex > topX ? "No Rank" : this.myIndex.toString();
-            if (this.myIndex > topX) {
+            this.ui.myNode.selfNode.rankTxt.text = this.myIndex > this.topX ? "No Rank" : this.myIndex.toString();
+            if (this.myIndex > this.topX) {
                 this.ui.myNode.selfNode.rankTxt.fontSize = 36;
             }
             else {
@@ -20468,13 +20694,11 @@
         }
         updateItemData(data) {
             this.myStar = xGame.common.getAllStarNum();
-            this.myStar = 10;
-            this.myIndex = 3;
             if (this.rankList.length < 2) {
                 this.rankList = data;
                 let self = Moyu.getUserInfo();
                 console.log('zh:myself iuserinfo = ' + JSON.stringify(self));
-                console.log('zh:myself headIcon= ' + self.headIcon);
+                self.headIcon = self.headIcon;
                 for (let i = 0; i < data.length; i++) {
                     let data = this.rankList[i];
                     if (data.userId == self.userId) {
@@ -20484,7 +20708,7 @@
                 }
                 for (let i = 0; i < data.length; i++) {
                     let data = this.rankList[i];
-                    if (data.rankScore < this.myStar && this.myIndex > 50) {
+                    if (data.rankScore < this.myStar && this.myIndex > this.topX) {
                         this.myIndex = i + 1;
                         let user = { headIcon: self.headIcon, nickName: "myself" };
                         let ud = { user: user, data: {} };
@@ -20504,7 +20728,6 @@
         }
         updateItemUI(index, obj) {
             let data = this.rankList[index];
-            console.log('zh:updateItemui  idex = ' + JSON.stringify(data));
             let userData = JSON.parse(data.userData).user;
             obj.nameTxt.text = userData.nickName.toString();
             obj.valueTxt.text = data.rankScore;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
client/laya/bin/js/bundle.js.map


+ 34 - 18
client/laya/bin/js/cfgTable.js

@@ -1001,29 +1001,45 @@ cfgTable.wordsData = {
 //排行榜数据
 cfgTable.paiHangBangData = {
 		"list": [{
-			"rankScore": "170",
-			"userId": "my1204nv7opn0j0ruz0u",
-			"userData": "{\"user\":{\"userId\":\"my1204nv7opn0j0ruz0u\",\"nickName\":\"晴1天2江3龙\",\"headIcon\":\"https://userglobal-vivofs.vivo.com.cn/RnRBscqz28sppmra/defaultimage/20201014150605/5284e6e3ffdef34e432588ec2aaa822ds.png\"}}"
+			"rankScore": "160",
+			"userId": "my150_1",
+			"userData": "{\"user\":{\"userId\":\"my1204nv7opn0j0ruz0u\",\"nickName\":\"SkyWalker92\",\"headIcon\":\"res/playersImg/1.png\"}}"
 		}, {
-			"rankScore": "168",
-			"userId": "my1208tvwh3z7ttej5hk",
-			"userData": "{\"user\":{\"userId\":\"my1208tvwh3z7ttej5hk\",\"nickName\":\"冷酷小帅\",\"headIcon\":\"https://p4-pro.a.yximgs.com/uhead/AB/2024/08/18/21/BMjAyNDA4MTgyMTQ0NTZfMzE3MTY0MTU3OV8yX2hkODE1XzkxMA==_s.jpg\"}}"
+			"rankScore": "150",
+			"userId": "my150_2",
+			"userData": "{\"user\":{\"userId\":\"my1208tvwh3z7ttej5hk\",\"nickName\":\"CoffeeNinja\",\"headIcon\":\"res/playersImg/2.png\"}}"
 		}, {
-			"rankScore": "166",
-			"userId": "my120yfv7bdb7imrttd1",
-			"userData": "{\"user\":{\"userId\":\"my120yfv7bdb7imrttd1\",\"nickName\":\":-(蓦然*沧桑:-)\",\"headIcon\":\"https://p2-pro.a.yximgs.com/uhead/AB/2020/07/16/01/BMjAyMDA3MTYwMTIzNDRfNTUyMzg4NTQ5XzJfaGQxODVfMjE5_s.jpg\"}}"
+			"rankScore": "151",
+			"userId": "my150_3",
+			"userData": "{\"user\":{\"userId\":\"my120yfv7bdb7imrttd1\",\"nickName\":\"PixelPioneer\",\"headIcon\":\"res/playersImg/3.png\"}}"
 		}, {
-			"rankScore": "150",
-			"userId": "my120hb47wlqv8ujmdle",
-			"userData": "{\"user\":{\"userId\":\"my120hb47wlqv8ujmdle\",\"nickName\":\"騰 少\",\"headIcon\":\"https://p2-pro.a.yximgs.com/uhead/AB/2025/04/05/19/BMjAyNTA0MDUxOTM3NThfMTg3MTAzMjM2MV8yX2hkNzQ5XzU0MA==_s.jpg\"}}"
+			"rankScore": "145",
+			"userId": "my150_4",
+			"userData": "{\"user\":{\"userId\":\"my120hb47wlqv8ujmdle\",\"nickName\":\"BroadwayStarlet\",\"headIcon\":\"res/playersImg/4.png\"}}"
+		}, {
+			"rankScore": "140",
+			"userId": "my150_5",
+			"userData": "{\"user\":{\"userId\":\"my120e8bbxhv8rjxml2h\",\"nickName\":\"RockyMountainHigh\",\"headIcon\":\"res/playersImg/5.png\"}}"
+		}, {
+			"rankScore": "135",
+			"userId": "my150_6",
+			"userData": "{\"user\":{\"userId\":\"my1206pfouw21pfcupwd\",\"nickName\":\"SherlockWiFi\",\"headIcon\":\"res/playersImg/6.png\"}}"
+		}, {
+			"rankScore": "134",
+			"userId": "my150_7",
+			"userData": "{\"user\":{\"userId\":\"my1206pfouw21pfcupwd\",\"nickName\":\"PopcornDetective\",\"headIcon\":\"res/playersImg/7.png\"}}"
+		}, {
+			"rankScore": "131",
+			"userId": "my150_8",
+			"userData": "{\"user\":{\"userId\":\"my1206pfouw21pfcupwd\",\"nickName\":\"ZombieSurferDude\",\"headIcon\":\"res/playersImg/8.png\"}}"
 		}, {
-			"rankScore": "148",
-			"userId": "my120e8bbxhv8rjxml2h",
-			"userData": "{\"user\":{\"userId\":\"my120e8bbxhv8rjxml2h\",\"nickName\":\"7/.祥的第七章\",\"headIcon\":\"https://p5-pro.a.yximgs.com/uhead/AB/2024/03/01/20/BMjAyNDAzMDEyMDExMTZfMjkyMzUyNTk3NV8yX2hkOTE1XzUxMQ==_s.jpg\"}}"
+			"rankScore": "120",
+			"userId": "my150_9",
+			"userData": "{\"user\":{\"userId\":\"my1206pfouw21pfcupwd\",\"nickName\":\"AlienInMyBathroom\",\"headIcon\":\"res/playersImg/9.png\"}}"
 		}, {
-			"rankScore": "158",
-			"userId": "my1206pfouw21pfcupwd",
-			"userData": "{\"user\":{\"userId\":\"my1206pfouw21pfcupwd\",\"nickName\":\"yuwen\",\"headIcon\":\"https://userglobal-vivofs.vivo.com.cn/RnRBscqz28sppmra/defaultimage/20201014150303/6a1892a54ff5bd641593b210e4eef043s.png\"}}"
+			"rankScore": "118",
+			"userId": "my150_10",
+			"userData": "{\"user\":{\"userId\":\"my1206pfouw21pfcupwd\",\"nickName\":\"PajamaPartyKing\",\"headIcon\":\"res/playersImg/10.png\"}}"
 		}],
 		"lastScore": "111",
 		"type": "total",

+ 2 - 1
client/laya/bin/libs/moyu.js

@@ -347,7 +347,8 @@
 			if (t.debug = e, this.moyuUser = new a, this.data = new l, this.nativeInfo = new r, this.data.getData(this.myId), this.data.userId.length < 2) {
 				let e = this.getRandStr(5);
 				//zh:用户默认昵称
-				this.data.headIcon = t.getTagro("headimg/0.jpg");
+				//this.data.headIcon = t.getTagro("headimg/0.jpg");
+				this.data.headIcon = 'res/ty_touxiang.png';
 				this.data.userId = "my" + this.myId + e;
 				this.data.nickName = "player_" + e;
 				this.data.loginCount = 1; this.data.createTime = this.getTime();

BIN
client/laya/bin/res/close.png


+ 6 - 0
client/laya/src/Main.ts

@@ -1,6 +1,7 @@
 import GameConfig from "./GameConfig";
 import { appInit } from "./GameInit";
 import { xGame } from "./xGame";
+import NetCheckTool from "./utils/NetCheckTool"; 
 class Main {
 	constructor() {
 		//根据IDE设置初始化引擎		
@@ -10,6 +11,7 @@ class Main {
 			Laya.init(GameConfig.width, GameConfig.height, Laya["WebGL"]);
 			this.initMain();
 		}
+
 	
 	}
 	initMain(){
@@ -30,6 +32,10 @@ class Main {
 
 		//激活资源版本控制,version.json由IDE发布功能自动生成,如果没有也不影响后续流程
 		Laya.ResourceVersion.enable("version.json", Laya.Handler.create(this, this.onVersionLoaded), Laya.ResourceVersion.FILENAME_VERSION);
+
+
+			       // 实例化NetCheckExample类来检测网络状态
+       // new NetCheckTool();
 	}
 
 	onVersionLoaded(): void {

+ 31 - 0
client/laya/src/ui/NoInternetDialog.ts

@@ -0,0 +1,31 @@
+import { Dialog } from "laya/ui/Dialog";
+
+export class NoInternetDialog extends Laya.Dialog {
+        constructor() {
+            super();
+            this.initUI();
+        }
+
+        private initUI(): void {
+            // 使用 LayaUI 编辑器设计的 UI 或者手动创建UI元素
+            let content = new Laya.Label("您的网络似乎出现了问题,请检查后重试。");
+            content.width = 300;
+            content.height = 200;
+            content.centerX = 0;
+            content.centerY = 0;
+            content.fontSize = 24;
+            content.color = "#FFFFFF";
+            content.bgColor = "#888888";
+            content.alpha = 0.9;
+            this.addChild(content);
+
+            // 添加一个按钮用于关闭对话框
+            let closeButton = new Laya.Button( "确定");
+            closeButton.centerX = 0;
+            closeButton.y = 250;
+            closeButton.on(Laya.Event.CLICK, this, () => {
+                this.close();
+            });
+            this.addChild(closeButton);
+        }
+    }

+ 106 - 7
client/laya/src/ui/UIGameEnd.ts

@@ -16,6 +16,9 @@ import UIMsg from "./UIMsg";
 import GlobalManager from "../utils/GlobalManager";
 import JSBridgeUtils from "../utils/JSBridgeUtils";
 
+import { LocalStorageManager } from "../utils/LocalStorageManager";
+
+
 export default class UIGameEnd extends UIBase {
     public ui: ui_UIGameEnd;
     public success: boolean = false;
@@ -223,7 +226,14 @@ export default class UIGameEnd extends UIBase {
             xGame.common.showGirlTalkPop(8, this.ui.talkNode, this.ui.talkNode.womanTxt);
 
             this.diyGameDataUtilForGameWin();
-        
+
+            let level = xGame.common.placeBallCurLevel;
+            if (level > 59) {//==60
+                this.logEventForChallenge_level_complete(level);
+            } else {
+                this.logEventForChallenge_level_N(level);
+            }
+
         }
         else {
 
@@ -250,9 +260,9 @@ export default class UIGameEnd extends UIBase {
 
 
 
-     diyGameDataUtilForGameWin(){
-          console.log('zh: DiyGameDataUtilForGameWin diy   ');
-          switch (xGame.common.gameMode) {
+    diyGameDataUtilForGameWin() {
+        console.log('zh: DiyGameDataUtilForGameWin diy   ');
+        switch (xGame.common.gameMode) {
             case GameMode.classic:
                 console.log('zh:DiyGameDataUtilForGameWin 111');
             case GameMode.bigMove:
@@ -261,9 +271,9 @@ export default class UIGameEnd extends UIBase {
                 break;
             case GameMode.placeBall:
                 console.log('zh:DiyGameDataUtilForGameWin 333');
-                var  level = xGame.common.placeBallCurLevel;
+                var level = xGame.common.placeBallCurLevel;
                 console.log('zh:练习模式 联系了多少LEV=' + level);
-                let db_over_lev = DataMgr.getChallengeMode_overLev();  
+                let db_over_lev = DataMgr.getChallengeMode_overLev();
                 if (level > db_over_lev) {
                     DataMgr.setChallengeMode_overLev(level);
                 }
@@ -441,6 +451,7 @@ export default class UIGameEnd extends UIBase {
                 xGame.eventMgr.event(POWER_TIME);
                 this.startPlaceBallLevel(level);
                 //
+                this.logEventForChallenge_level_start(level);
             }))
         }
         else {
@@ -473,8 +484,11 @@ export default class UIGameEnd extends UIBase {
                         });
 
                     } else {
-                        this.powerStartPlaceBallLevel(level + 1, this.ui.rightBtn);
+                        let lev = level + 1;
+                        this.powerStartPlaceBallLevel(lev, this.ui.rightBtn);
+
                     }
+
                 }
                 else {
                     console.log('zh:clickRightBtn 333-000');
@@ -511,6 +525,36 @@ export default class UIGameEnd extends UIBase {
     }
 
 
+    /**
+       *  埋点challenge模式开始     challenge_level_start
+       * 注意,本方法和uilevelProp.ts中的方法完全一样,暂不封装
+       * @param level 
+       */
+    logEventForChallenge_level_start(level) {
+        // 埋点:challenge模式开始     challenge_level_start 参数: 1开始了几次  // - 2金币数量// - 3当前是第几关// - 4钻石数量
+        let keyStr = 'sjmd_challenge_level_start';
+        let jsonStr = {
+            "count": 0,
+            "gold_balance  ": DataMgr.getCoin(),
+            "level": level,
+            "diamond_balance  ": DataMgr.getDiamond()
+        }
+        if (LocalStorageManager.hasJosnKey(keyStr)) {
+            const d = LocalStorageManager.getItem<{ count: number, level: number }>(keyStr);
+            if (level > d.level) {
+                jsonStr.count = d.count + 1;
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            } else {
+                //NO 
+            }
+        } else {
+            LocalStorageManager.setItem(keyStr, jsonStr);
+        }
+        const reqStr = JSON.stringify(jsonStr);
+        JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_start', reqStr);
+    }
+
+
     public qjff_AD_for_uiGameEnd(level) {
         //一星通关当前关卡,不领取当前关卡奖励
         DataMgr.setPlaceBallLevel(level, 1);
@@ -527,6 +571,61 @@ export default class UIGameEnd extends UIBase {
 
 
 
+    /**
+     *  埋点challenge模式完成     challenge_level_start
+     * @param level 
+     */
+    logEventForChallenge_level_complete(level) {
+        // 埋点:challenge模式完成 - 完成了几次- 金币数量- 当前是第几关 - 钻石数量
+        let keyStr = 'sjmd_challenge_level_complete';
+        let jsonStr = {
+            "count": 1,
+            "gold_balance  ": DataMgr.getCoin(),
+            "level": level,
+            "diamond_balance  ": DataMgr.getDiamond()
+        }
+        if (LocalStorageManager.hasJosnKey(keyStr)) {
+            const d = LocalStorageManager.getItem<{ count: number, level: number }>(keyStr);
+            // if (level > d.level) {
+
+            // }
+            jsonStr.count = d.count + 1;
+            LocalStorageManager.setItem(keyStr, jsonStr);
+        } else {
+            LocalStorageManager.setItem(keyStr, jsonStr);
+        }
+        const reqStr = JSON.stringify(jsonStr);
+        JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_complete', reqStr);
+    }
+
+    /**
+     *  埋点 完成了几个challenge关卡,每5关报一次(5,10,15,20...)
+     * @param level 
+     */
+    logEventForChallenge_level_N(level) {
+        console.log('zh:logEventForChallenge_level_N '+level);
+        // 埋点:challenge模式完成 - 完成了几次- 金币数量- 当前是第几关 - 钻石数量
+        let keyStr = 'sjmd_challenge_level_N';
+        if (LocalStorageManager.hasKey(keyStr)) {
+            let lev = LocalStorageManager.getItem(keyStr);
+            if (level > lev) {
+                LocalStorageManager.setItem(keyStr, level);
+            }
+
+            if ((level) % 5 == 0) {
+                console.log('zh:每5关上报1次')
+                let sjmc = 'challenge_level_' + level;
+                JSBridgeUtils.instance.logEventForAdNoParams(sjmc);
+            }else{
+                console.log('zh:5 no 上报')
+            }
+
+        } else {
+            LocalStorageManager.setItem(keyStr, level);
+        }
+    }
+
+
 
 }
 UIGameEnd.uiName = "UIGameEnd";

+ 53 - 14
client/laya/src/ui/UILevelProp.ts

@@ -10,6 +10,9 @@ import { UIGame } from "./UIGame";
 import UILevelDisplay from "./UILevelDisplay";
 import UIMain from "./UIMain";
 import UIPower from "./UIPower";
+import JSBridgeUtils from "../utils/JSBridgeUtils";
+import { LocalStorageManager } from "../utils/LocalStorageManager";
+
 /**
  * 摆球达人界面,选择关卡界面
  */
@@ -24,25 +27,25 @@ export default class UILevelProp extends UIBase {
     public showItemArr: Array<ShowItem> = [];
     public constructor() {
         super();
-        
+
         // try {
         //     Laya.loader.load("res/font/arial.fnt", Laya.Handler.create(this, this.onFontLoaded)); 
         //     console.log("zh: constructor加载arial字体成功");
         // } catch (error) {
         //     console.log("zh: constructor加载arial字体失败");
         // }
-       
+
 
     }
     private onFontLoaded(): void {
         try {
-             this.ui.myNode.conditionTxt.font = "arial";
-             console.log("zh: onFontLoaded 设置arial字体成功");
+            this.ui.myNode.conditionTxt.font = "arial";
+            console.log("zh: onFontLoaded 设置arial字体成功");
         } catch (error) {
             console.log("zh: constructor onFontLoaded加载arial字体失败");
-            
+
         }
-       
+
     }
     public onConstructor(): void {
         this.ui = ui_UILevelProp.createInstance();
@@ -83,7 +86,7 @@ export default class UILevelProp extends UIBase {
             this.showItemArr.push(item);
         }
     }
-    
+
     updateSelf() {
         this.ui.myNode.levelTxt.text = `Level ${this.level}`
         this.ui.myNode.modeNode.c1.selectedIndex = this.data.type;
@@ -94,7 +97,7 @@ export default class UILevelProp extends UIBase {
         // } catch (error) {
         //     console.log('zh: 加载arial字体失败')
         // }
-       
+
         if (this.data.ball == -1) {
             //打进场上所有球
             this.ui.myNode.conditionTxt.text = "Pocket all the balls on the table";
@@ -104,11 +107,11 @@ export default class UILevelProp extends UIBase {
         }
 
         // 或者动态加载字体后设置
-       // Laya.loader.load("res/font/arial", laya.utils.Handler.create(this, onFontLoaded));
-      //  function onFontLoaded() {
-      //     // txt.font = "fontName"; // 替换为实际的字体名
-      //  }
-       
+        // Laya.loader.load("res/font/arial", laya.utils.Handler.create(this, onFontLoaded));
+        //  function onFontLoaded() {
+        //     // txt.font = "fontName"; // 替换为实际的字体名
+        //  }
+
 
 
         let localData = DataMgr.getPlaceBallLevel(this.level);
@@ -148,6 +151,7 @@ export default class UILevelProp extends UIBase {
     startGame() {
         //let needCoin = xGame.common.enterPlaceBallNeedCoin;
         if (DataMgr.powerEnough()) {
+            console.log('zh:powerEnough =' + DataMgr.powerEnough());
             this.ui.myNode.startBtn.touchable = false;
             this.ui.myNode.startBtn.powerEft.t0.play(Laya.Handler.create(this, () => {
                 console.log('zh:startGame ')
@@ -159,6 +163,10 @@ export default class UILevelProp extends UIBase {
                 xGame.common.gameMode = GameMode.placeBall;
                 xGame.common.placeBallCurLevel = this.level;
                 xGame.uiMgr.Show(UIGame);
+
+                this.logEventForChallenge_level_start(this.level);
+
+
                 //
                 //关闭选择关卡界面和主界面
                 xGame.uiMgr.Hide(UILevelDisplay);
@@ -169,10 +177,41 @@ export default class UILevelProp extends UIBase {
             //
         }
         else {
-            console.log('zh:startGame no power')
+            console.log('zh:powerEnough 不足 =' + DataMgr.powerEnough());
             xGame.uiMgr.Show(UIPower);
         }
     }
+
+
+
+    /**
+     *  埋点challenge模式开始     challenge_level_start
+     * @param level 
+     */
+    logEventForChallenge_level_start(level) {
+        // 埋点:challenge模式开始     challenge_level_start 参数: 1开始了几次  // - 2金币数量// - 3当前是第几关// - 4钻石数量
+        let keyStr = 'sjmd_challenge_level_start';
+        let jsonStr = {
+            "count": 0,
+            "gold_balance  ": DataMgr.getCoin(),
+            "level": level,
+            "diamond_balance  ": DataMgr.getDiamond()
+        }
+        if (LocalStorageManager.hasJosnKey(keyStr)) {
+            const d = LocalStorageManager.getItem<{ count: number, level: number }>(keyStr);
+            if (level > d.level) {
+                jsonStr.count = d.count + 1;
+                LocalStorageManager.setItem(keyStr, jsonStr);
+            }else{
+                //NO 
+            }
+        } else {
+            LocalStorageManager.setItem(keyStr, jsonStr);
+        }
+        const reqStr = JSON.stringify(jsonStr);
+        JSBridgeUtils.instance.logEventForAdHaveParams('challenge_level_start', reqStr);
+    }
+
     public hide() {
         super.hide();
     }

+ 2 - 5
client/laya/src/ui/UIMain.ts

@@ -31,8 +31,8 @@ import UIGetAward from "./UIGetAward";
 import UIRepentProp from "./UIRepentProp";
 import UIBox from "./UIBox";
 import UIAddCoin from "./UIAddCoin";
-
-
+import { NoInternetDialog } from "./NoInternetDialog";
+//import NetCheckTool from "../utils/NetCheckTool";
 export default class UIMain extends UIBase {
     public ui: ui_UIMain;
     //
@@ -136,8 +136,6 @@ export default class UIMain extends UIBase {
 
     public constructor() {
         super();
-
-
     }
     protected onConstructor(): void {
         console.log('zh: UIMain onConstructor');
@@ -178,7 +176,6 @@ export default class UIMain extends UIBase {
 
 
 
-
     }
     changeSecretary(curUse) {
         let name = cfgTable.secretaryshopData[curUse + 1].spine;

+ 15 - 8
client/laya/src/ui/UIRanking.ts

@@ -9,10 +9,14 @@ export default class UIRanking extends UIBase {
     public rankType: number = 1;//1-星星排行,2-关卡排行
     //
     public rankList = [];
-    private myIndex: number = 0;
-    private myStar: number = 0;
+   
 
     private topX = 10;//只展示前X名
+
+    private myIndex: number = this.topX+1;
+    private myStar: number = 0;
+
+
     public constructor() {
         super();
     }
@@ -91,16 +95,18 @@ export default class UIRanking extends UIBase {
         //console.log('zh: 获取排行榜数据成功'+JSON.stringify(data));
         //获取所有的小星星
         this.myStar = xGame.common.getAllStarNum();
-        //debug ...
-        this.myStar = 10;
-        this.myIndex = 3;
+        //debug start-----注意!!!!!!
+       // this.myStar = 160;
+       // this.myIndex = 13;
+        //debug end -----
         if (this.rankList.length < 2) {
             this.rankList = data;
             let self = Moyu.getUserInfo();
             console.log('zh:myself iuserinfo = ' + JSON.stringify(self));
             //self.headIcon = https://mygame1.tangro.cn/headimg/0.jpg
-            //改为本地icon
-            console.log('zh:myself headIcon= ' + self.headIcon);
+            // let selfLocalIcon= "res/ty_touxiang.png"; 
+            //  self.headIcon=selfLocalIcon;
+            self.headIcon = self.headIcon;
             for (let i = 0; i < data.length; i++) {
                 let data = this.rankList[i];
                 if (data.userId == self.userId) {
@@ -125,12 +131,13 @@ export default class UIRanking extends UIBase {
                 }
             }
         }
+
         this.updateSelfItem();
         this.ui.myNode.myList.numItems = this.rankList.length;
     }
     updateItemUI(index, obj: ui_RankItem) {
         let data = this.rankList[index];
-        console.log('zh:updateItemui  idex = ' + JSON.stringify(data));
+        //console.log('zh:updateItemui  idex = ' + JSON.stringify(data));
         let userData = JSON.parse(data.userData).user;
         obj.nameTxt.text = userData.nickName.toString();
         obj.valueTxt.text = data.rankScore;

+ 1 - 1
client/laya/src/utils/Common.ts

@@ -412,7 +412,7 @@ export default class Common {
         node.visible = false;
     }
     createHead(loader: fgui.GLoader, url, size = 107) {
-        console.log('zh:createHead url=', url);
+       // console.log('zh:createHead url=', url);
         if (Laya.Browser.name == "Browser") {
             //console.log("处于浏览器中", Laya.Browser.name);
             loader.url = url;

+ 9 - 23
client/laya/src/utils/LocalStorageManager.ts

@@ -23,10 +23,6 @@ export class LocalStorageManager {
         // 清空全部
         // LocalStorageManager.clear();
 
-        // 判断是否存在
-        if (LocalStorageManager.hasKey("playerName")) {
-            console.log("playerName 存在");
-        }
     }
 
 
@@ -70,31 +66,22 @@ export class LocalStorageManager {
         Laya.LocalStorage.clear();
     }
 
-    /**
-         * 获取所有存储的键名
-         * @returns 键名数组
-         */
-    public static getKeys(): string[] {
-        const rawStorage = Laya.LocalStorage as any;
-        const length = Laya.LocalStorage.length;
-        const keys: string[] = [];
-        for (let i = 0; i < length; i++) {
-            const key = rawStorage.key ? rawStorage.key(i) : null;
-            if (key) {
-                keys.push(key);
-            }
-        }
-        return keys;
-    }
 
     /**
      * 检查是否存在某个键
      * @param key 键名
      * @returns 是否存在
      */
+    public static hasJosnKey(key: string): boolean {
+        var value = Laya.LocalStorage.getJSON(key);
+        if (value != null) {
+            return true;
+        } else {
+            return false;
+        }
+    }
     public static hasKey(key: string): boolean {
-        const keys = this.getKeys();
-        return keys.indexOf(key) !== -1;
+      return Laya.LocalStorage.getItem(key) !== null;
     }
 
 
@@ -102,5 +89,4 @@ export class LocalStorageManager {
 
 
 
-
 }

+ 42 - 0
client/laya/src/utils/NetCheckTool.ts

@@ -0,0 +1,42 @@
+// 首先确保你的TypeScript环境已经设置好,并且你正在使用的是LayaAir引擎
+import { xGame } from "../xGame";
+import UIMsg from "../ui/UIMsg";
+import { NoInternetDialog } from "./NoInternetDialog";
+
+export default class NetCheckTool {
+
+
+
+    private isOnline: boolean = true;
+
+    constructor() {
+        window.addEventListener('load', () => this.checkConnection());
+        window.addEventListener('online', () => this.updateConnectionStatus(true));
+        window.addEventListener('offline', () => this.updateConnectionStatus(false));
+    }
+
+    private checkConnection(): void {
+        if (navigator.onLine) {
+            console.log("当前网络已连接");
+        } else {
+            this.showNoInternetDialog();
+        }
+    }
+
+    private updateConnectionStatus(isOnline: boolean): void {
+        if (isOnline) {
+            console.log("网络已恢复");
+            // 网络恢复后的处理逻辑
+        } else {
+            this.showNoInternetDialog();
+        }
+    }
+
+    private showNoInternetDialog(): void {
+        Laya.loader.load('res/close.png', Laya.Handler.create(this, () => {
+            let dialog = new NoInternetDialog();
+            dialog.popup();
+        }));
+    }
+
+}

+ 29 - 0
client/laya/src/utils/NoInternetDialog.ts

@@ -0,0 +1,29 @@
+export class NoInternetDialog extends Laya.Dialog {
+        constructor() {
+            super();
+            this.initUI();
+        }
+
+        private initUI(): void {
+            // 使用 LayaUI 编辑器设计的 UI 或者手动创建UI元素
+            let content = new Laya.Label("您的网络似乎出现了问题,请检查后重试。");
+            content.width = 300;
+            content.height = 200;
+            content.centerX = 0;
+            content.centerY = 0;
+            content.fontSize = 24;
+            content.color = "#FFFFFF";
+            content.bgColor = "#888888";
+            content.alpha = 0.9;
+            this.addChild(content);
+
+            // 添加一个按钮用于关闭对话框
+            let closeButton = new Laya.Button( "确定");
+            closeButton.centerX = 0;
+            closeButton.y = 250;
+            closeButton.on(Laya.Event.CLICK, this, () => {
+                this.close();
+            });
+            this.addChild(closeButton);
+        }
+    }

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.