From da5730571785aa3fca92e6a2953996a75c292a88 Mon Sep 17 00:00:00 2001 From: "COMPUTER\\EDY" <249929363@qq.com> Date: Fri, 7 Aug 2026 16:06:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Script/module/Config/GameConfig.ts | 2 +- assets/jungle_treasure/img/btn_Buy.png | Bin 0 -> 1032 bytes assets/jungle_treasure/img/btn_Buy.png.meta | 38 + assets/jungle_treasure/img/kuangt1.png | Bin 0 -> 33779 bytes assets/jungle_treasure/img/kuangt1.png.meta | 38 + assets/jungle_treasure/prefab/jungle.prefab | 1026 ++++++++++++++++- .../script/JungleTitleShine.ts | 5 +- .../jungle_treasure/script/jungle_Manager.ts | 437 ++++++- assets/shop/prefab/shop.prefab | 2 +- 9 files changed, 1475 insertions(+), 73 deletions(-) create mode 100644 assets/jungle_treasure/img/btn_Buy.png create mode 100644 assets/jungle_treasure/img/btn_Buy.png.meta create mode 100644 assets/jungle_treasure/img/kuangt1.png create mode 100644 assets/jungle_treasure/img/kuangt1.png.meta diff --git a/assets/Script/module/Config/GameConfig.ts b/assets/Script/module/Config/GameConfig.ts index a1bcb38..c5e3b3e 100644 --- a/assets/Script/module/Config/GameConfig.ts +++ b/assets/Script/module/Config/GameConfig.ts @@ -323,7 +323,7 @@ export class GameConfig { vibrateOpen: true, //震动 coinnum: 0, //每局的金币数 paid_user: false, //是否是付费用户 - version: "1.0.23", //版本号 + version: "1.0.25", //版本号 shushu_DistinctId: "", //数数访客ID shushu_AccountId: "", //数数账号ID uid: "", //用户和后端唯一id diff --git a/assets/jungle_treasure/img/btn_Buy.png b/assets/jungle_treasure/img/btn_Buy.png new file mode 100644 index 0000000000000000000000000000000000000000..3f68f76c29cb21b54a83d4cff2e72721dbd19638 GIT binary patch literal 1032 zcmeAS@N?(olHy`uVBq!ia0y~yU}6WdSFkVx$+oBfDIjGK;1lBNqbmnwy6ec9>&Thu z$a(6@+3Lud=*U^>$c0Xi1~PP0jLiIXO)QnYD?D8iY+gEii3DokED7=p4q;GOaKowg zUFzcZ+YK2QnCm=U978H@y}fIH-aAp|*vI&QBUi%yNJe)a4N;m{vPxh{u(pmG=VZ@A zDWCE`@%44sXFi_Ty~(;?d_n*5brp;()|`cRpO=a3ez|Mk;k!HM&$<78&fC7Q*x$zr zUu-FQQnh;BPw9upL_11f-m>R-YsX^!!Mte+zZwDy?{WAq;Ru@lDeMGC`hm0}HrJ1mD+^l`*#HGSdj zTn2Gww;lN`$`S`T+zgrodlK+5HF^#VCiqXd>C4{=*N+!DOq<@YZrYhI+Vo}aOxKMk zI6j4|s|o;8oK11*{q9w zy&ijYpGG~&yfHz*f`1aTp?lT@fvCkhI9*$F4E9PTE0rXD76^UcBJnE!aI#>m(whzo z{;SK<7hhCzvQBy}uxM@vP~#4fBxRG?E=P7ay=ZymP#~eSOVr8whT@B@m%2@OMVX#A z%C{yDtYGX6Sc^eY+5>}8s$H+jLU6t{$G=dEt$%1hi7Z|&IX zlF^M R?gFzXgQu&X%Q~loCIEf2*pUDL literal 0 HcmV?d00001 diff --git a/assets/jungle_treasure/img/btn_Buy.png.meta b/assets/jungle_treasure/img/btn_Buy.png.meta new file mode 100644 index 0000000..7bb5830 --- /dev/null +++ b/assets/jungle_treasure/img/btn_Buy.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "a5dbb999-b096-4910-ac02-f080a47a9a73", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 519, + "height": 168, + "platformSettings": {}, + "subMetas": { + "btn_Buy": { + "ver": "1.0.6", + "uuid": "5f7b9cd3-59a0-4a81-87a7-07a6b21c7698", + "importer": "sprite-frame", + "rawTextureUuid": "a5dbb999-b096-4910-ac02-f080a47a9a73", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 519, + "height": 168, + "rawWidth": 519, + "rawHeight": 168, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/jungle_treasure/img/kuangt1.png b/assets/jungle_treasure/img/kuangt1.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5cb4a9f3683919a57fe1a43f3b2b597306c5b9 GIT binary patch literal 33779 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 D?%SOm literal 0 HcmV?d00001 diff --git a/assets/jungle_treasure/img/kuangt1.png.meta b/assets/jungle_treasure/img/kuangt1.png.meta new file mode 100644 index 0000000..d059567 --- /dev/null +++ b/assets/jungle_treasure/img/kuangt1.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "2b41eacb-8542-4ff0-aec4-626abc4b5610", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 994, + "height": 1462, + "platformSettings": {}, + "subMetas": { + "kuangt1": { + "ver": "1.0.6", + "uuid": "0fceb2e0-7103-4d02-9e3d-64808e7683fd", + "importer": "sprite-frame", + "rawTextureUuid": "2b41eacb-8542-4ff0-aec4-626abc4b5610", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 994, + "height": 1462, + "rawWidth": 994, + "rawHeight": 1462, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/jungle_treasure/prefab/jungle.prefab b/assets/jungle_treasure/prefab/jungle.prefab index 31a1146..908717d 100644 --- a/assets/jungle_treasure/prefab/jungle.prefab +++ b/assets/jungle_treasure/prefab/jungle.prefab @@ -16,15 +16,22 @@ "_name": "jungle", "_objFlags": 0, "_parent": null, - "_children": [], - "_active": true, - "_components": [ + "_children": [ { "__id__": 2 } ], + "_active": true, + "_components": [ + { + "__id__": 29 + }, + { + "__id__": 30 + } + ], "_prefab": { - "__id__": 3 + "__id__": 31 }, "_opacity": 255, "_color": { @@ -36,8 +43,91 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 0, - "height": 0 + "width": 1080, + "height": 1920 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 540, + 960, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "ConfirmBox", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 3 + }, + { + "__id__": 7 + }, + { + "__id__": 10 + }, + { + "__id__": 13 + }, + { + "__id__": 16 + }, + { + "__id__": 19 + } + ], + "_active": false, + "_components": [ + { + "__id__": 27 + } + ], + "_prefab": { + "__id__": 28 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 1080, + "height": 1920 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -73,6 +163,901 @@ "groupIndex": 0, "_id": "" }, + { + "__type__": "cc.Node", + "_name": "New Sprite(Splash)", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 4 + }, + { + "__id__": 5 + } + ], + "_prefab": { + "__id__": 6 + }, + "_opacity": 120, + "_color": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 3000, + "height": 3000 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 3 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" + }, + "_type": 0, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.BlockInputEvents", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 3 + }, + "_enabled": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 2 + }, + "asset": { + "__uuid__": "9fdc6671-8422-410b-b9af-36dab20f1488" + }, + "fileId": "47UiHH16RKK6j+4cK469um", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "bg", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 8 + } + ], + "_prefab": { + "__id__": 9 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 994, + "height": 1462 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0.5, + 0.5, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 7 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "0fceb2e0-7103-4d02-9e3d-64808e7683fd" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 2 + }, + "asset": { + "__uuid__": "9fdc6671-8422-410b-b9af-36dab20f1488" + }, + "fileId": "eeHwB6Bq5CSbRJy0kYMgo0", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "title", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 11 + } + ], + "_prefab": { + "__id__": 12 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 160, + "height": 50.4 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 330.904, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 10 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_string": "活动充值", + "_N$string": "活动充值", + "_fontSize": 40, + "_lineHeight": 40, + "_enableWrapText": true, + "_N$file": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_batchAsBitmap": false, + "_styleFlags": 0, + "_underlineHeight": 0, + "_N$horizontalAlign": 1, + "_N$verticalAlign": 1, + "_N$fontFamily": "Arial", + "_N$overflow": 0, + "_N$cacheMode": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 2 + }, + "asset": { + "__uuid__": "9fdc6671-8422-410b-b9af-36dab20f1488" + }, + "fileId": "fa+8dDqrdLTrl/Ji8K9LMX", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Label", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 14 + } + ], + "_prefab": { + "__id__": 15 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 0, + "b": 0, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 320, + "height": 195.6 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 89.865, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 13 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_string": "网络异常\n请重新登录小游戏\n领取充值奖励", + "_N$string": "网络异常\n请重新登录小游戏\n领取充值奖励", + "_fontSize": 40, + "_lineHeight": 60, + "_enableWrapText": true, + "_N$file": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_batchAsBitmap": false, + "_styleFlags": 0, + "_underlineHeight": 0, + "_N$horizontalAlign": 1, + "_N$verticalAlign": 1, + "_N$fontFamily": "Arial", + "_N$overflow": 0, + "_N$cacheMode": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 2 + }, + "asset": { + "__uuid__": "9fdc6671-8422-410b-b9af-36dab20f1488" + }, + "fileId": "9149ix6q1AZ4VyIjmSGbdM", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Label", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 17 + } + ], + "_prefab": { + "__id__": 18 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 0, + "b": 0, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 320, + "height": 195.6 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 89.865, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 16 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_string": "网络异常\n请检查网络连接后\n再次领取", + "_N$string": "网络异常\n请检查网络连接后\n再次领取", + "_fontSize": 40, + "_lineHeight": 60, + "_enableWrapText": true, + "_N$file": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_batchAsBitmap": false, + "_styleFlags": 0, + "_underlineHeight": 0, + "_N$horizontalAlign": 1, + "_N$verticalAlign": 1, + "_N$fontFamily": "Arial", + "_N$overflow": 0, + "_N$cacheMode": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 2 + }, + "asset": { + "__uuid__": "9fdc6671-8422-410b-b9af-36dab20f1488" + }, + "fileId": "63uT2CDhpI+LZj3A3c1PII", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "again", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [ + { + "__id__": 20 + } + ], + "_active": true, + "_components": [ + { + "__id__": 23 + }, + { + "__id__": 24 + } + ], + "_prefab": { + "__id__": 26 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 519, + "height": 168 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -3.21, + -77.027, + 0, + 0, + 0, + 0, + 1, + 0.4, + 0.4, + 0 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "New Label", + "_objFlags": 0, + "_parent": { + "__id__": 19 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 21 + } + ], + "_prefab": { + "__id__": 22 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 160, + "height": 100.8 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 13.174, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 20 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_string": "确定", + "_N$string": "确定", + "_fontSize": 80, + "_lineHeight": 80, + "_enableWrapText": true, + "_N$file": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_batchAsBitmap": false, + "_styleFlags": 0, + "_underlineHeight": 0, + "_N$horizontalAlign": 1, + "_N$verticalAlign": 1, + "_N$fontFamily": "Arial", + "_N$overflow": 0, + "_N$cacheMode": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 2 + }, + "asset": { + "__uuid__": "9fdc6671-8422-410b-b9af-36dab20f1488" + }, + "fileId": "1f0NO1uLNIxrx1dYb9rOaL", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 19 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "5f7b9cd3-59a0-4a81-87a7-07a6b21c7698" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.Button", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 19 + }, + "_enabled": true, + "_normalMaterial": null, + "_grayMaterial": null, + "duration": 0.1, + "zoomScale": 1.1, + "clickEvents": [ + { + "__id__": 25 + } + ], + "_N$interactable": true, + "_N$enableAutoGrayEffect": false, + "_N$transition": 3, + "transition": 3, + "_N$normalColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "_N$hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$disabledColor": { + "__type__": "cc.Color", + "r": 124, + "g": 124, + "b": 124, + "a": 255 + }, + "_N$normalSprite": null, + "_N$pressedSprite": null, + "pressedSprite": null, + "_N$hoverSprite": null, + "hoverSprite": null, + "_N$disabledSprite": null, + "_N$target": { + "__id__": 19 + }, + "_id": "" + }, + { + "__type__": "cc.ClickEvent", + "target": { + "__id__": 1 + }, + "component": "", + "_componentId": "d3a89fb54hARJPi/4e5LXKx", + "handler": "retryJungleUnlock", + "customEventData": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 2 + }, + "asset": { + "__uuid__": "9fdc6671-8422-410b-b9af-36dab20f1488" + }, + "fileId": "58sKElg7lE9I935Fpq7n8Y", + "sync": false + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 45, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 2 + }, + "asset": { + "__uuid__": "9fdc6671-8422-410b-b9af-36dab20f1488" + }, + "fileId": "08h4cPRgxBWIm5xmTJwuyG", + "sync": false + }, { "__type__": "d3a89fb54hARJPi/4e5LXKx", "_name": "", @@ -139,6 +1124,33 @@ "previewAnimationOnly": false, "_id": "" }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 45, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "" + }, { "__type__": "cc.PrefabInfo", "root": { @@ -150,4 +1162,4 @@ "fileId": "", "sync": false } -] +] \ No newline at end of file diff --git a/assets/jungle_treasure/script/JungleTitleShine.ts b/assets/jungle_treasure/script/JungleTitleShine.ts index e503ae5..064c6a5 100644 --- a/assets/jungle_treasure/script/JungleTitleShine.ts +++ b/assets/jungle_treasure/script/JungleTitleShine.ts @@ -7,8 +7,9 @@ export default class JungleTitleShine extends cc.Component { private sprite: cc.Sprite = null; private material: cc.Material = null; private moveDuration: number = 0.85; - private repeatDelay: number = 1.5; - private startDelay: number = 0.25; + // 扫光总周期约 6 秒,与每 2 秒一次的首礼包动画错开。 + private repeatDelay: number = 5.15; + private startDelay: number = 3; private elapsed: number = 0; private delayRemaining: number = 0; private startPosition: number = -0.35; diff --git a/assets/jungle_treasure/script/jungle_Manager.ts b/assets/jungle_treasure/script/jungle_Manager.ts index a63d5da..6c15c31 100644 --- a/assets/jungle_treasure/script/jungle_Manager.ts +++ b/assets/jungle_treasure/script/jungle_Manager.ts @@ -98,6 +98,26 @@ export default class JungleManager extends cc.Component { private pendingPaymentPrice: number = 0; private checkingIosOrder: boolean = false; private entrySource: string = "jump_window"; + private unlockPollDelays: number[] = [3000, 3000, 3000, 3000, 6000, 9000, 9000]; + private unlockPollMaxAttempts: number = 8; + private unlockPollAttempt: number = 0; + private unlockPollTierId: number = 0; + private unlockPollSession: number = 0; + private unlockPollTimer: any = null; + private unlockRequestTimeout: any = null; + private unlockRequestTimeoutMs: number = 5500; + private isUnlockPolling: boolean = false; + private directPayPollDelays: number[] = [3000, 3000, 3000, 3000, 6000, 9000, 9000]; + private directPayPollMaxAttempts: number = 8; + private directPayPollAttempt: number = 0; + private directPayPollSession: number = 0; + private directPayPollTimer: any = null; + private directPayRequestTimeout: any = null; + private directPayRequestTimeoutMs: number = 5500; + private directPayOrderNo: string = ""; + private directPayTier: JungleTierConfig = null; + private isDirectPayPolling: boolean = false; + private paymentRetryStage: string = ""; private view: JungleView = null; private animator: JungleAnimator = null; @@ -162,6 +182,8 @@ export default class JungleManager extends cc.Component { this.unschedule(this.playFirstCardAttention); this.clearClaimTimeout(); this.clearPaymentTimeout(); + this.stopDirectPayResultPolling(true); + this.stopUnlockStatePolling(true); this.unregisterWechatOnShow(); } @@ -260,7 +282,6 @@ export default class JungleManager extends cc.Component { } private onCardClicked(buttonComponent: cc.Button): void { - console.log("点击礼包档位按钮最外层", buttonComponent); if (this.isMoving || this.isPurchasing || this.isClaiming || this.isUnlockAnimating || !this.activityConfig) { return; @@ -294,7 +315,6 @@ export default class JungleManager extends cc.Component { } else if (tier.state === 0) { this.requestPurchase(tier); } else { - console.log("点击礼包档位按钮准备请求", buttonComponent); this.requestClaim(tier); } } @@ -343,7 +363,6 @@ export default class JungleManager extends cc.Component { /** 状态 1 的礼包必须先由后端改成 2;成功后才发奖励并播放轨道动画。 */ private requestClaim(tier: JungleTierConfig): void { this.trackJungleAction("collect_jungle", tier); - console.log("点击礼包档位按钮内里面"); this.isClaiming = true; this.renderAllCards(); this.openLoad(); @@ -358,9 +377,8 @@ export default class JungleManager extends cc.Component { this.claimTimeout = null; this.finishClaimFailure("领取请求超时,请稍后重试"); }, 8000); - console.log("点击礼包档位按钮开始请求"); + Utils.claimJungleTreasure(tier.id, (response) => { - console.log("点击礼包档位按钮请求结果", response); if (completed || !cc.isValid(this.node)) { return; } @@ -404,7 +422,6 @@ export default class JungleManager extends cc.Component { this.finishPaymentFailure("支付请求超时,请稍后重试"); // 包含玩家在微信支付面板中的操作时间,不能按普通接口的 8 秒计算。 }, 5 * 60 * 1000); - console.log("准备开始调用 购买礼包接口", this.pendingPaymentPrice); Utils.buyProp( tier.productId, 1, @@ -412,52 +429,178 @@ export default class JungleManager extends cc.Component { systemType, tier.productId, (result) => { - console.log("点击礼包档位按钮支付结果", result); if (!cc.isValid(this.node)) { - console.log("11111点击礼包档位按钮支付结果回调已处理或节点已销毁"); return; } callbackReceived = true; this.clearPaymentTimeout(); if (!result) { this.finishPaymentFailure("支付拉起失败"); - console.log("22222点击礼包档位按钮支付结果回调已处理或节点已销毁"); return; } if (result.err) { if (Number(result.errCode) === 16) { this.startOldIosPayment(tier); - console.log("33333点击礼包档位按钮支付结果回调已处理或节点已销毁"); return; } this.finishPaymentFailure(Number(result.errCode) === -2 ? "已取消支付" : "支付拉起失败"); - console.log("44444点击礼包档位按钮支付结果回调已处理或节点已销毁"); return; } - console.log("55555点击礼包档位按钮支付结果", tier); this.pollDirectPaymentResult(tier); }, ); } private pollDirectPaymentResult(tier: JungleTierConfig): void { - console.log("拿到礼包档位按钮轮询支付结果之后调用档位是否解锁"); - Utils.getPayInfo((response) => { - console.log("点击礼包档位按钮轮询支付结果", response); - if (!cc.isValid(this.node)) { + this.directPayOrderNo = String(Utils.outTradeNo || ""); + this.directPayTier = tier; + if (!this.directPayOrderNo) { + this.finishPaymentFailure("支付订单号获取失败"); + return; + } + this.startDirectPayResultPolling(false); + } + + private startDirectPayResultPolling(isManualRetry: boolean): void { + this.stopDirectPayResultPolling(false); + if (!this.directPayOrderNo || !this.directPayTier) { + this.finishPaymentFailure("支付订单信息已失效"); + return; + } + + this.directPayPollAttempt = 0; + this.isDirectPayPolling = true; + this.isPurchasing = true; + this.paymentRetryStage = ""; + this.hideJungleRetryConfirm(); + this.requestDirectPayResult(this.directPayPollSession); + } + + private requestDirectPayResult(session: number): void { + if (!this.isDirectPayPolling || session !== this.directPayPollSession || !cc.isValid(this.node)) { + return; + } + + this.directPayPollAttempt++; + const currentAttempt = this.directPayPollAttempt; + const orderNo = this.directPayOrderNo; + let requestFinished = false; + + this.clearDirectPayRequestTimeout(); + this.directPayRequestTimeout = setTimeout(() => { + if (requestFinished || session !== this.directPayPollSession) { return; } - const payState = Number(response && response.data && response.data.pay_state); - console.log("payState点击礼包档位按钮轮询支付结果", payState); - if (response && response.code === 1 && payState === 2) { - console.log("准备改变礼包状态为可领取", response); - const name = "购买丛林宝藏礼包:" + tier.productId; - MiniGameSdk.API.yinli_Pay(this.pendingPaymentPrice, Utils.outTradeNo, name); - this.refreshAfterPayment(tier.id); + requestFinished = true; + this.directPayRequestTimeout = null; + this.scheduleNextDirectPayPoll(session); + }, this.directPayRequestTimeoutMs); + + try { + Utils.POST("wx/getPayInfo", { + uid: cc.fx.GameConfig.GM_INFO.uid || Utils.uid, + outTradeNo: orderNo, + }, (response) => { + if (requestFinished || session !== this.directPayPollSession || !cc.isValid(this.node)) { + return; + } + requestFinished = true; + this.clearDirectPayRequestTimeout(); + const payState = Number(response && response.data && response.data.pay_state); + + + if (response && response.code === 1 && payState === 2) { + this.completeDirectPayResultPolling(); + return; + } + if (response && response.code === 1 && payState === 1) { + this.stopDirectPayResultPolling(true); + this.finishPaymentFailure("已取消支付"); + return; + } + this.scheduleNextDirectPayPoll(session); + }); + } catch (error) { + if (requestFinished || session !== this.directPayPollSession) { return; } - this.finishPaymentFailure(payState === 1 ? "已取消支付" : "支付结果获取失败"); - }); + requestFinished = true; + this.clearDirectPayRequestTimeout(); + this.scheduleNextDirectPayPoll(session); + } + } + + private scheduleNextDirectPayPoll(session: number): void { + if (!this.isDirectPayPolling || session !== this.directPayPollSession) { + return; + } + if (this.directPayPollAttempt >= this.directPayPollMaxAttempts) { + this.handleDirectPayPollExhausted(); + return; + } + + const delayIndex = Math.min(this.directPayPollAttempt - 1, this.directPayPollDelays.length - 1); + const delay = this.directPayPollDelays[delayIndex]; + + this.clearDirectPayPollTimer(); + this.directPayPollTimer = setTimeout(() => { + this.directPayPollTimer = null; + this.requestDirectPayResult(session); + }, delay); + } + + private completeDirectPayResultPolling(): void { + const tier = this.directPayTier; + const orderNo = this.directPayOrderNo; + const attempts = this.directPayPollAttempt; + this.stopDirectPayResultPolling(true); + this.paymentRetryStage = ""; + + if (!tier) { + this.finishPaymentFailure("支付成功,但礼包信息已失效"); + return; + } + const name = "购买丛林宝藏礼包:" + tier.productId; + MiniGameSdk.API.yinli_Pay(this.pendingPaymentPrice, orderNo, name); + this.refreshAfterPayment(tier.id); + } + + private handleDirectPayPollExhausted(): void { + const orderNo = this.directPayOrderNo; + const attempts = this.directPayPollAttempt; + this.stopDirectPayResultPolling(false); + this.paymentRetryStage = "pay_result"; + this.isPurchasing = false; + this.closeLoad(); + this.renderAllCards(); + + this.showJungleRetryConfirm(); + } + + private stopDirectPayResultPolling(clearContext: boolean): void { + this.directPayPollSession++; + this.isDirectPayPolling = false; + this.clearDirectPayPollTimer(); + this.clearDirectPayRequestTimeout(); + this.directPayPollAttempt = 0; + if (clearContext) { + this.directPayOrderNo = ""; + this.directPayTier = null; + } + } + + private clearDirectPayPollTimer(): void { + if (this.directPayPollTimer) { + clearTimeout(this.directPayPollTimer); + this.directPayPollTimer = null; + } + } + + private clearDirectPayRequestTimeout(): void { + if (this.directPayRequestTimeout) { + clearTimeout(this.directPayRequestTimeout); + this.directPayRequestTimeout = null; + } } /** iOS 旧支付:跳转客服,回到小游戏时由 wx.onShow 查询订单结果。 */ @@ -538,62 +681,231 @@ export default class JungleManager extends cc.Component { } private refreshAfterPayment(tierId: number): void { - let completed = false; - this.clearPaymentTimeout(); - this.paymentTimeout = setTimeout(() => { - if (completed) { - return; - } - completed = true; - this.paymentTimeout = null; - this.finishPaymentFailure("支付成功,礼包状态刷新超时,请重新进入活动"); - }, 8000); + this.startUnlockStatePolling(tierId, false); + } - const requestUnlockedState = () => { - if (completed || !cc.isValid(this.node)) { + /** ConfirmBox 重试按钮事件:按失败阶段继续查询支付结果或礼包解锁状态。 */ + public retryJungleUnlock(): void { + if (this.paymentRetryStage === "pay_result") { + if (!this.directPayOrderNo || !this.directPayTier) { + this.hideJungleRetryConfirm(); + this.showToast("支付订单信息已失效"); return; } + if (this.isDirectPayPolling) { + return; + } + this.hideJungleRetryConfirm(); + this.isPurchasing = true; + this.renderAllCards(); + this.openLoad(); + this.startDirectPayResultPolling(true); + return; + } + + if (this.unlockPollTierId <= 0) { + this.hideJungleRetryConfirm(); + this.showToast("没有需要重试的礼包"); + return; + } + if (this.isUnlockPolling) { + + return; + } + + this.hideJungleRetryConfirm(); + this.isPurchasing = true; + this.renderAllCards(); + this.openLoad(); + this.startUnlockStatePolling(this.unlockPollTierId, true); + } + + private startUnlockStatePolling(tierId: number, isManualRetry: boolean): void { + this.clearPaymentTimeout(); + this.stopUnlockStatePolling(false); + if (tierId <= 0) { + this.finishPaymentFailure("支付成功,但礼包档位信息无效"); + return; + } + + this.unlockPollTierId = tierId; + this.unlockPollAttempt = 0; + this.isUnlockPolling = true; + this.isPurchasing = true; + this.paymentRetryStage = ""; + this.hideJungleRetryConfirm(); + const totalAttempts = this.unlockPollMaxAttempts; + this.requestUnlockState(this.unlockPollSession); + } + + private requestUnlockState(session: number): void { + if (!this.isUnlockPolling || session !== this.unlockPollSession || !cc.isValid(this.node)) { + return; + } + + this.unlockPollAttempt++; + const currentAttempt = this.unlockPollAttempt; + const totalAttempts = this.unlockPollMaxAttempts; + const tierId = this.unlockPollTierId; + let requestFinished = false; + + this.clearUnlockRequestTimeout(); + this.unlockRequestTimeout = setTimeout(() => { + if (requestFinished || session !== this.unlockPollSession) { + return; + } + requestFinished = true; + this.unlockRequestTimeout = null; + + this.scheduleNextUnlockPoll(session); + }, this.unlockRequestTimeoutMs); + + try { Utils.getJungleTreasure((response) => { - if (completed || !cc.isValid(this.node)) { + if (requestFinished || session !== this.unlockPollSession || !cc.isValid(this.node)) { return; } + requestFinished = true; + this.clearUnlockRequestTimeout(); + const data = response && response.code === 1 ? response.data : null; const states = data && data.tierStates; const refreshedState = Array.isArray(states) && tierId > 0 ? Number(states[tierId - 1]) : -1; - // 微信支付回调会先把订单改为成功,再写玩家的活动解锁状态。 - // 订单成功后第一次读取可能仍为 0,因此在原有 8 秒超时内继续轮询。 - if (!data || !data.config || !Array.isArray(states) - || (tierId > 0 && refreshedState !== 1 && refreshedState !== 2)) { - this.scheduleOnce(requestUnlockedState, 0.4); + + if (data && data.config && Array.isArray(states) + && (refreshedState === 1 || refreshedState === 2)) { + this.completeUnlockStatePolling(tierId, refreshedState, data, states); return; } - completed = true; - this.clearPaymentTimeout(); - this.isPurchasing = false; - this.publishServerState(data); - const refreshed = this.setServerData(data.config, states); - if (refreshed && refreshedState === 1) { - this.playTierUnlockAnimation(tierId); - } - if (!refreshed) { - this.closeLoad(); - this.renderAllCards(); - this.showToast("支付成功,礼包状态刷新失败,请重新进入活动"); - return; - } - // setServerData 已将付费档位从“3元”重新渲染为“领取”,完成后再关闭 Loading。 - this.closeLoad(); - this.showToast("支付成功,礼包已解锁"); + + this.scheduleNextUnlockPoll(session); }); - }; - requestUnlockedState(); + } catch (error) { + if (requestFinished || session !== this.unlockPollSession) { + return; + } + requestFinished = true; + this.clearUnlockRequestTimeout(); + + this.scheduleNextUnlockPoll(session); + } + } + + private scheduleNextUnlockPoll(session: number): void { + if (!this.isUnlockPolling || session !== this.unlockPollSession) { + return; + } + const totalAttempts = this.unlockPollMaxAttempts; + if (this.unlockPollAttempt >= totalAttempts) { + this.handleUnlockPollExhausted(); + return; + } + + const delayIndex = Math.min(this.unlockPollAttempt - 1, this.unlockPollDelays.length - 1); + const delay = this.unlockPollDelays[delayIndex]; + + this.clearUnlockPollTimer(); + this.unlockPollTimer = setTimeout(() => { + this.unlockPollTimer = null; + this.requestUnlockState(session); + }, delay); + } + + private completeUnlockStatePolling( + tierId: number, + refreshedState: number, + data: any, + states: JungleTierState[], + ): void { + + this.stopUnlockStatePolling(true); + this.paymentRetryStage = ""; + this.isPurchasing = false; + this.publishServerState(data); + const refreshed = this.setServerData(data.config, states); + if (refreshed && refreshedState === 1) { + this.playTierUnlockAnimation(tierId); + } + if (!refreshed) { + this.closeLoad(); + this.renderAllCards(); + this.showToast("支付成功,礼包状态刷新失败,请重新进入活动"); + return; + } + this.hideJungleRetryConfirm(); + // setServerData 已将付费档位从“几元”重新渲染为“领取”,完成后再关闭 Loading。 + this.closeLoad(); + this.showToast("支付成功,礼包已解锁"); + } + + private handleUnlockPollExhausted(): void { + const tierId = this.unlockPollTierId; + const attempts = this.unlockPollAttempt; + this.stopUnlockStatePolling(false); + this.paymentRetryStage = "unlock_state"; + this.isPurchasing = false; + this.closeLoad(); + this.renderAllCards(); + + this.showJungleRetryConfirm(); + } + + private showJungleRetryConfirm(): void { + + const confirmBox = this.node.getChildByName("ConfirmBox"); + if (!confirmBox) { + this.showToast("网络异常,请检查网络后重新进入活动"); + return; + } + confirmBox.zIndex = 100; + if (confirmBox.parent) { + confirmBox.setSiblingIndex(confirmBox.parent.childrenCount - 1); + } + confirmBox.active = true; + + } + + private hideJungleRetryConfirm(): void { + const confirmBox = this.node.getChildByName("ConfirmBox"); + if (confirmBox) { + confirmBox.active = false; + } + } + + private stopUnlockStatePolling(clearTierId: boolean): void { + this.unlockPollSession++; + this.isUnlockPolling = false; + this.clearUnlockPollTimer(); + this.clearUnlockRequestTimeout(); + this.unlockPollAttempt = 0; + if (clearTierId) { + this.unlockPollTierId = 0; + } + } + + private clearUnlockPollTimer(): void { + if (this.unlockPollTimer) { + clearTimeout(this.unlockPollTimer); + this.unlockPollTimer = null; + } + } + + private clearUnlockRequestTimeout(): void { + if (this.unlockRequestTimeout) { + clearTimeout(this.unlockRequestTimeout); + this.unlockRequestTimeout = null; + } } private finishPaymentFailure(message: string): void { + this.stopDirectPayResultPolling(true); + this.stopUnlockStatePolling(true); + this.paymentRetryStage = ""; + this.hideJungleRetryConfirm(); this.clearPaymentTimeout(); this.closeLoad(); this.isPurchasing = false; @@ -652,6 +964,7 @@ export default class JungleManager extends cc.Component { } private showToast(message: string): void { + console.log("显示提示:", message); if (MiniGameSdk && MiniGameSdk.API && MiniGameSdk.API.showToast) { MiniGameSdk.API.showToast(message); } diff --git a/assets/shop/prefab/shop.prefab b/assets/shop/prefab/shop.prefab index bb24f33..f59a822 100644 --- a/assets/shop/prefab/shop.prefab +++ b/assets/shop/prefab/shop.prefab @@ -741,7 +741,7 @@ "_contentSize": { "__type__": "cc.Size", "width": 1080, - "height": 4300 + "height": 4600 }, "_anchorPoint": { "__type__": "cc.Vec2",