zouyong 5 년 전
부모
커밋
2984e960f0
78개의 변경된 파일3114개의 추가작업 그리고 0개의 파일을 삭제
  1. 12 0
      assets/script/game/module/blessingBag.meta
  2. 332 0
      assets/script/game/module/blessingBag/BlessingBag.ts
  3. 9 0
      assets/script/game/module/blessingBag/BlessingBag.ts.meta
  4. 161 0
      assets/script/game/module/blessingBag/BlessingBagItem.ts
  5. 9 0
      assets/script/game/module/blessingBag/BlessingBagItem.ts.meta
  6. 12 0
      assets/script/game/module/cashNormal.meta
  7. 37 0
      assets/script/game/module/cashNormal/CashNormal.ts
  8. 9 0
      assets/script/game/module/cashNormal/CashNormal.ts.meta
  9. 39 0
      assets/script/game/module/cashNormal/CashNormalItem.ts
  10. 9 0
      assets/script/game/module/cashNormal/CashNormalItem.ts.meta
  11. 12 0
      assets/script/game/module/cashPro.meta
  12. 122 0
      assets/script/game/module/cashPro/CashPro.ts
  13. 9 0
      assets/script/game/module/cashPro/CashPro.ts.meta
  14. 12 0
      assets/script/game/module/help.meta
  15. 23 0
      assets/script/game/module/help/Help.ts
  16. 9 0
      assets/script/game/module/help/Help.ts.meta
  17. 12 0
      assets/script/game/module/login.meta
  18. 46 0
      assets/script/game/module/login/Login.ts
  19. 9 0
      assets/script/game/module/login/Login.ts.meta
  20. 12 0
      assets/script/game/module/moreGame.meta
  21. 60 0
      assets/script/game/module/moreGame/BtnMoreGame.ts
  22. 9 0
      assets/script/game/module/moreGame/BtnMoreGame.ts.meta
  23. 57 0
      assets/script/game/module/moreGame/MoreGame.ts
  24. 9 0
      assets/script/game/module/moreGame/MoreGame.ts.meta
  25. 198 0
      assets/script/game/module/moreGame/MoreGameBanner.ts
  26. 9 0
      assets/script/game/module/moreGame/MoreGameBanner.ts.meta
  27. 117 0
      assets/script/game/module/moreGame/MoreGameNormalItem.ts
  28. 9 0
      assets/script/game/module/moreGame/MoreGameNormalItem.ts.meta
  29. 102 0
      assets/script/game/module/moreGame/MoreGamePicItem.ts
  30. 9 0
      assets/script/game/module/moreGame/MoreGamePicItem.ts.meta
  31. 76 0
      assets/script/game/module/moreGame/MoreGamePopNode.ts
  32. 9 0
      assets/script/game/module/moreGame/MoreGamePopNode.ts.meta
  33. 13 0
      assets/script/game/module/moreGame/PointItem.ts
  34. 9 0
      assets/script/game/module/moreGame/PointItem.ts.meta
  35. 12 0
      assets/script/game/module/pigBank.meta
  36. 86 0
      assets/script/game/module/pigBank/PigBank.ts
  37. 9 0
      assets/script/game/module/pigBank/PigBank.ts.meta
  38. 12 0
      assets/script/game/module/receiptNotice.meta
  39. 42 0
      assets/script/game/module/receiptNotice/ReceiptNotice.ts
  40. 9 0
      assets/script/game/module/receiptNotice/ReceiptNotice.ts.meta
  41. 12 0
      assets/script/game/module/redBagCash.meta
  42. 53 0
      assets/script/game/module/redBagCash/RedBagCash.ts
  43. 9 0
      assets/script/game/module/redBagCash/RedBagCash.ts.meta
  44. 84 0
      assets/script/game/module/redBagCash/RedBagCashItem.ts
  45. 9 0
      assets/script/game/module/redBagCash/RedBagCashItem.ts.meta
  46. 12 0
      assets/script/game/module/redBagCode.meta
  47. 27 0
      assets/script/game/module/redBagCode/RedBagCode.ts
  48. 9 0
      assets/script/game/module/redBagCode/RedBagCode.ts.meta
  49. 43 0
      assets/script/game/module/redBagCode/RedBagCodeItem.ts
  50. 9 0
      assets/script/game/module/redBagCode/RedBagCodeItem.ts.meta
  51. 12 0
      assets/script/game/module/redCode.meta
  52. 99 0
      assets/script/game/module/redCode/RedCode.ts
  53. 9 0
      assets/script/game/module/redCode/RedCode.ts.meta
  54. 39 0
      assets/script/game/module/redCode/VideoNode.ts
  55. 9 0
      assets/script/game/module/redCode/VideoNode.ts.meta
  56. 12 0
      assets/script/game/module/redeem.meta
  57. 157 0
      assets/script/game/module/redeem/RedeemNode.ts
  58. 9 0
      assets/script/game/module/redeem/RedeemNode.ts.meta
  59. 12 0
      assets/script/game/module/reward.meta
  60. 172 0
      assets/script/game/module/reward/Reward.ts
  61. 9 0
      assets/script/game/module/reward/Reward.ts.meta
  62. 12 0
      assets/script/game/module/setting.meta
  63. 32 0
      assets/script/game/module/setting/Rule.ts
  64. 9 0
      assets/script/game/module/setting/Rule.ts.meta
  65. 81 0
      assets/script/game/module/setting/Setting.ts
  66. 9 0
      assets/script/game/module/setting/Setting.ts.meta
  67. 12 0
      assets/script/game/module/sign.meta
  68. 99 0
      assets/script/game/module/sign/Sign.ts
  69. 9 0
      assets/script/game/module/sign/Sign.ts.meta
  70. 86 0
      assets/script/game/module/sign/SignIconItem.ts
  71. 9 0
      assets/script/game/module/sign/SignIconItem.ts.meta
  72. 52 0
      assets/script/game/module/sign/SignItem.ts
  73. 9 0
      assets/script/game/module/sign/SignItem.ts.meta
  74. 12 0
      assets/script/game/module/turntable.meta
  75. 92 0
      assets/script/game/module/turntable/Turnable.ts
  76. 9 0
      assets/script/game/module/turntable/Turnable.ts.meta
  77. 16 0
      assets/script/game/module/turntable/TurnableItem.ts
  78. 9 0
      assets/script/game/module/turntable/TurnableItem.ts.meta

+ 12 - 0
assets/script/game/module/blessingBag.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "071d21f3-5d08-4485-9fa5-d6b7d0baf2fa",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 332 - 0
assets/script/game/module/blessingBag/BlessingBag.ts

@@ -0,0 +1,332 @@
+/**
+ * @description 福袋界面类
+ * @author kaka
+ */
+
+import { AdFun } from "../../data/AdData";
+import { cashProType } from "../../data/module/CashProData";
+
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class BlessingBag extends cc.Component {
+
+    @property(cc.Label)
+    txtBigNum: cc.Label = null;
+
+    @property(cc.Label)
+    txtAddEft: cc.Label = null;
+
+    @property(cc.RichText)
+    txtTipAd: cc.RichText = null;
+
+    @property(cc.RichText)
+    txtBigDelta: cc.RichText = null;
+
+    @property(cc.RichText)
+    txtBigTask: cc.RichText = null;
+
+    @property(cc.RichText)
+    txtRemaindAdNum: cc.RichText = null;
+
+
+    @property(cc.Prefab)
+    blassingBagItem: cc.Prefab = null;
+
+    @property(cc.Node)
+    itemContent: cc.Node = null;
+
+    @property(cc.Node)
+    btnCash: cc.Node = null;
+
+    @property(cc.Node)
+    btnAd: cc.Node = null;
+
+    @property(cc.Animation)
+    aniBigAdBtn: cc.Animation = null;
+
+    @property(cc.Node)
+    adIcon: cc.Node = null;
+
+    @property(cc.Animation)
+    aniBtnAd: cc.Animation = null;
+
+    @property(cc.Node)
+    rbOpenBtn: cc.Node = null;
+
+    @property(cc.Node)
+    nodeRb: cc.Node = null;
+
+    @property(cc.Label)
+    txtRbNum: cc.Label = null;
+
+    @property(cc.Node)
+    testNode: cc.Node = null;
+
+    @property(cc.EditBox)
+    inputBox: cc.EditBox = null;
+
+    /**红包页面类型 1 大额 2 任务*/
+    private rbPanelType: number = 0;
+
+    private adrbArray = [];
+
+    private isPlayInitAni = true;
+
+    onLoad() {
+        this.testNode.active = gData.gameData.configs.ServerConfig.VideoRedBagEmpty == 1;
+    }
+
+    onEnable() {
+        this.isPlayAni = false;
+        this.isPlayInitAni = true;
+    }
+
+    // onDisable() {
+    //     if (this.adrbArray.length >= 4) {
+    //         for (let i = 0; i < this.adrbArray.length; i++) {
+    //             this.adrbArray[i].OnExit();
+    //         }
+    //     }
+    // }
+
+    update(dt) {
+        this.PlayMoneyAniUpdate(dt);
+        if (gData.blessingBag.init_videoRbData) {
+            this.UpdateInfo();
+        }
+
+        if (gData.blessingBag.init_openRb) {
+            this.OpenRbPanel(gData.blessingBag.rbType, gData.blessingBag.rbNum);
+        }
+    }
+
+    lateUpdate() {
+        gData.blessingBag.init_videoRbData = false;
+        gData.blessingBag.init_openRb = false;
+    }
+
+    UpdateInfo() {
+        let data = gData.blessingBag.videoRbData;
+        this.targetProgress = data.cumulativeAmount;
+
+        this.txtBigDelta.node.active = data.showTask != 1;
+        this.txtBigTask.node.active = data.showTask == 1;
+        this.txtTipAd.string = data.showTask == 1 ? "提现中..." : "<b>满<color=#FFE00C>" + data.requestAmount + "元</color>可提现</b>";
+        this.txtBigDelta.string = "<outline color=#8C1010 width=4><b>每次视频额外奖励<color=#FFE00C>" + data.videoAmountPerTime + "元</color></b></outline>";
+        this.txtBigTask.string = "<outline color=#8C1010 width=4>金额已达标,完成<color=#4EB7FF>观看视频</color>任务可到账"
+            + "\n观看视频次数:<color=#FFE00C>" + data.taskVideoWatchTime + "/" + data.taskVideoTime + "</color>,连续观看天数:<color=#FFE00C>" + data.taskVideoWatchDay + "/" + data.taskVideoDay + "</color></outline>"
+
+        this.txtRemaindAdNum.string = "<b>今日剩余次数:<color=#B02D29>" + data.videoTime + "</color></b>";
+        this.adIcon.active = data.needToWatchTheVideo == 1;
+
+        if (gData.blessingBag.isPlayAniUpdate) {
+            if (this.lastNum < data.cumulativeAmount) {
+                mk.fly.PlayCoinAnim(1, 10, this.btnAd.getPosition(), this.btnCash.getPosition(), () => {
+                    this.aniBigAdBtn.setCurrentTime(0);
+                    this.aniBigAdBtn.play();
+                });
+                this.txtAddEft.node.setPosition(cc.v2(0, 380));
+                this.txtAddEft.string = "+" + data.videoAmountPerTime + "元";
+                this.txtAddEft.node.stopAllActions();
+                this.txtAddEft.node.scale = 0;
+                this.txtAddEft.node.opacity = 255;
+                this.txtAddEft.node.active = true;
+
+                let a0 = cc.delayTime(0.8);
+                let a1t = cc.sequence(cc.scaleTo(0.15, 1.2), cc.scaleTo(0.15, 1));
+                let a1a = cc.spawn(cc.moveBy(0.3, cc.v2(0, 30)), a1t);
+                let a2 = cc.delayTime(0.5);
+                let a3 = cc.fadeOut(0.15);
+                let a4 = cc.callFunc(() => {
+                    //this.txtBigNum.string = data.cumulativeAmount + "元";
+                    this.PlayMoneyAni(0.2);
+                    this.txtAddEft.node.active = false;
+                });
+                this.txtAddEft.node.runAction(cc.sequence(a0, a1a, a2, a3, a4));
+
+            } else {
+                this.txtBigNum.string = data.cumulativeAmount.toFixed(2) + "元";
+                this.lastNum = data.cumulativeAmount;
+            }
+        } else {
+            this.txtBigNum.string = data.cumulativeAmount.toFixed(2) + "元";
+            this.lastNum = data.cumulativeAmount;
+        }
+
+
+        if (this.adrbArray.length < 4) {
+            this.adrbArray = [];
+
+            for (let i = 0; i < data.redMonies.length; i++) {
+                let obj = {
+                    data: data.redMonies[i],
+                    isPlayAniUpdate: gData.blessingBag.isPlayAniUpdate,
+                    isPlayInitAni: this.isPlayInitAni
+                }
+                this.adrbArray.push(obj);
+            }
+            this.itemContent.emit('srollview-init', this.adrbArray);
+        } else {
+            this.adrbArray = [];
+
+            for (let i = 0; i < data.redMonies.length; i++) {
+                let obj = {
+                    data: data.redMonies[i],
+                    isPlayAniUpdate: gData.blessingBag.isPlayAniUpdate,
+                    isPlayInitAni: this.isPlayInitAni
+                }
+                this.adrbArray.push(obj);
+            }
+            //刷新
+            this.itemContent.emit('srollview-update', this.adrbArray);
+        }
+
+        this.isPlayInitAni = false;
+    }
+
+    private isPlayAni = false;
+
+    targetProgress: number = 0;
+
+    delta: number = 0;
+    curValue: number = 0;
+    curTime: number = 0;
+    totalTime: number = 0;
+    lastNum: number = 0;
+
+    PlayMoneyAni(time) {
+        this.totalTime = time;
+        this.delta = (this.targetProgress - this.lastNum) / time;
+        this.curValue = this.lastNum;
+        this.curTime = 0;
+        console.log("--->Update Time: " + time + " delta: " + this.delta + " curValue: " + this.curValue + " lastNum: " + this.lastNum);
+        this.isPlayAni = true;
+    }
+
+    PlayMoneyAniUpdate(dt) {
+        if (this.isPlayAni) {
+            if (this.curTime < this.totalTime) {
+                this.curTime += dt;
+                this.curValue += this.delta * dt;
+                if (this.curValue >= this.targetProgress) {
+                    this.isPlayAni = false;
+                    this.curValue = this.targetProgress;
+                    this.lastNum = this.targetProgress;
+                }
+                console.log("-->CurValue:" + this.curValue);
+            } else {
+                this.isPlayAni = false;
+                this.curTime = this.totalTime;
+                this.curValue = this.targetProgress;
+                this.lastNum = this.targetProgress;
+            }
+            this.txtBigNum.string = this.curValue.toFixed(2) + "元";
+        }
+    }
+
+
+    Click_AdProgressBtn() {
+        if (gData.blessingBag.videoRbData.needToWatchTheVideo != 1) {
+            //免费加进度
+            gData.blessingBag.HttpNoAdProgress();
+        } else {
+            if (gData.blessingBag.videoRbData.videoTime > 0) {
+                gData.adData.watchVideo(AdFun.bigCash)
+            } else {
+                mk.tip.pop('今日观看次数已用完');
+            }
+        }
+        mk.audio.playEffect('button');
+
+        console.log("--->You Click AdProgressBtn");
+    }
+
+    /**
+     * 打开红包页面
+     * @param type 打开红包类型 1 大额红包 2 任务红包
+     * @param num  红包金额
+    */
+    OpenRbPanel(type: number, num: number) {
+        this.rbPanelType = type;
+        this.txtRbNum.string = num + "元";
+        this.nodeRb.active = true;
+        this.rbOpenBtn.active = true;
+    }
+
+    CheckCashRedCode() {
+        let data = gData.blessingBag.videoRbData;
+        if (data.redMoneyCode.length > 0) {
+            for (let i = 0; i < data.redMoneyCode.length; i++) {
+                if (data.preLargeAmountCashId == data.redMoneyCode[i].RedMoneyId) {
+                    if (data.redMoneyCode[i].RedMoneyCode != "") {
+                        gData.redCodeData.openRedCode(data.redMoneyCode[i].VideoCashBig, data.redMoneyCode[i].RedMoneyCode);
+                    } else {
+                        mk.tip.pop('提现成功');
+                    }
+                    return;
+                }
+            }
+        }
+        mk.tip.pop('请先完成提现任务');
+    }
+
+    async Click_CashBtn() {
+        console.log("--->You Click CashBtn");
+
+        if (gData.blessingBag.videoRbData.cumulativeAmount >= gData.blessingBag.videoRbData.requestAmount) {
+            let response = await gData.blessingBag.HttpCashBig();
+            if (response && response.data.code == 1) {
+                //弹红包码界面
+                this.CheckCashRedCode();
+            } else {
+                mk.tip.pop('请先完成提现任务');
+            }
+        } else {
+            mk.tip.pop("累计到" + gData.blessingBag.videoRbData.requestAmount + "元才可提现");
+        }
+    }
+
+    canOpen: boolean = true;
+    /**红包界面开按钮*/
+    async Click_CashOpenBtn() {
+        if (!this.canOpen) return;
+        this.canOpen = false;
+        if (this.rbPanelType == 1) {
+            gData.cashPro.openCashPro(cashProType.blessing_bigCash, gData.blessingBag.bigRbNum)
+        } else {
+            //弹确认提现界面
+            this.rbOpenBtn.active = false;
+            this.aniBtnAd.node.active = true;
+            this.aniBtnAd.setCurrentTime(0);
+            this.aniBtnAd.play();
+            setTimeout(() => {
+                this.aniBtnAd.stop();
+                this.aniBtnAd.node.active = false;
+                this.rbOpenBtn.active = true;
+                this.nodeRb.active = false;
+
+                gData.cashPro.openCashPro(cashProType.blessing_taskCash, gData.blessingBag.taskRbNum)
+                this.canOpen = true;
+            }, 1000);
+        }
+    }
+
+
+    /** 点击帮助回调 */
+    clickHelpCallBack() {
+        let des = "1、观看大量视频可以快速增加提现进度。\n\n2、提现进度到100%,可以提现对应档位的红包。\n\n3、余额累计满一定金额,可以申请大额提现。";
+        gData.help.des = des;
+    }
+
+    Click_InitData() {
+        gData.blessingBag.HttpInitAdRbData();
+    }
+
+    EditBox_End() {
+        console.log("-->Input:", this.inputBox.string);
+        gData.blessingBag.adsource_id_value = this.inputBox.string;
+    }
+
+}

+ 9 - 0
assets/script/game/module/blessingBag/BlessingBag.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "bb002225-4f7b-482d-adf9-db625f190efd",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 161 - 0
assets/script/game/module/blessingBag/BlessingBagItem.ts

@@ -0,0 +1,161 @@
+/**
+ * @description 福袋item
+ * @author kaka
+ */
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class BlessingBagItem extends cc.Component{
+
+    @property(cc.Label)
+    txtNum: cc.Label = null;
+    @property(cc.RichText)
+    txtTip: cc.RichText = null;
+    @property(cc.Label)
+    txtSlider: cc.Label = null;
+
+    @property(cc.Sprite)
+    slider: cc.Sprite = null;
+
+    @property(cc.Node)
+    btnCashed: cc.Node = null;
+    @property(cc.Node)
+    btnCanCash: cc.Node = null;
+    @property(cc.Node)
+    btnNoFinish: cc.Node = null;
+
+    data: any = null;
+    lastNum: number = 0;
+    totalTime: number = 0;
+    deltaTime: number = 0;
+    delta: number = 0;
+    curValue: number = 0;
+    curTime: number = 0;
+
+    isPlayAni: boolean = false;
+
+    /**
+     * list_data
+     * @param data item数据
+     */
+    public async setItemData(bData) {
+        this.Init(bData.data, bData.isPlayAniUpdate, bData.isPlayInitAni);
+    }
+
+    Init(data: any, isPlayAni: boolean = false, isPlayInitAni: boolean = false) {
+        this.data = data;
+        this.txtNum.string = data.redMoney + "元";
+        this.txtTip.string = "<outline color=#8C1010 width=4><color=#FFE00C>" + data.redMoney + "元</c>提现进度</outline>";
+        this.btnCashed.active = data.status == 2;
+        this.btnCanCash.active = data.status == 1;
+        this.btnNoFinish.active = data.status == 0;
+
+        if (isPlayAni) {
+            this.scheduleOnce(() => {
+                this.PlayNumAni(0.3);
+                cc.tween(this.txtSlider.node).to(0.15, { scale: 1.2 })
+                    .to(0.15, { scale: 1 })
+                    .start();
+            }, 0.3);
+        }
+        else if (isPlayInitAni) {
+            this.scheduleOnce(() => {
+                this.PlayInitNumAni(0.2);
+                cc.tween(this.txtSlider.node).to(0.1, { scale: 1.2 })
+                    .to(0.1, { scale: 1 })
+                    .start();
+            }, 0.3);
+        } else {
+            this.txtSlider.string = data.progressRate + "%";
+            this.slider.fillRange = data.progressRate * 0.01;
+            this.lastNum = data.progressRate;
+        }
+    }
+
+    update(dt) {
+        this.UpdateAniFrame(dt);
+    }
+
+    PlayNumAni(time: number) {
+        this.totalTime = time;
+        this.delta = (this.data.progressRate - this.lastNum) / time;
+        this.deltaTime = time / (this.data.progressRate - this.lastNum);
+        this.curValue = this.lastNum;
+        this.curTime = 0;
+        this.isPlayAni = true;
+    }
+
+    PlayInitNumAni(time: number) {
+        this.totalTime = time;
+        this.delta = (this.data.progressRate - 0) / time;
+        this.deltaTime = time / (this.data.progressRate - 0);
+        this.curValue = 0;
+        this.curTime = 0;
+
+        this.isPlayAni = true;
+    }
+
+    UpdateAni() {
+        if (this.curTime < this.totalTime) {
+            this.curTime += this.deltaTime;
+            this.curValue += this.delta * this.deltaTime;
+            if (this.curValue >= this.data.progressRate) {
+                this.curValue = this.data.progressRate;
+            }
+        } else {
+            this.curTime = this.totalTime;
+            this.unschedule(this.UpdateAni);
+            this.curValue = this.data.progressRate;
+            this.lastNum = this.data.progressRate;
+        }
+        this.txtSlider.string = this.curValue.toFixed(2) + "%";
+        this.slider.fillRange = this.curValue * 0.01;
+    }
+
+    UpdateAniFrame(dt) {
+        if (this.isPlayAni) {
+            if (this.curTime < this.totalTime) {
+                this.curTime += dt;
+                this.curValue += this.delta * dt;
+                if (this.curValue >= this.data.progressRate) {
+                    this.isPlayAni = false;
+                    this.curValue = this.data.progressRate;
+                    this.lastNum = this.data.progressRate;
+                }
+                //if (this.data.redMoneyId == 1) {
+                //console.log("-->CurValue:" + this.curValue);
+                //}
+            } else {
+                this.isPlayAni = false;
+                this.curTime = this.totalTime;
+                //this.unschedule(this.UpdateAni);
+                this.curValue = this.data.progressRate;
+                this.lastNum = this.data.progressRate;
+            }
+            this.txtSlider.string = this.curValue.toFixed(2) + "%";
+            this.slider.fillRange = this.curValue * 0.01;
+        }
+    }
+
+    OnExit() {
+        this.txtSlider.string = "0.00%";
+        this.slider.fillRange = 0;
+    }
+
+
+    Click_CashedBtn() {
+        console.log("clicked cashed");
+        mk.tip.pop('该红包已提现');
+    }
+
+    Click_CanCashBtn() {
+        console.log("clicked canCash");
+        gData.blessingBag.OpenTaskRbPanel(this.data.redMoney, this.data.redMoneyId, 2, this.data.redMoney);
+    }
+
+    Click_NoFinishBtn() {
+        console.log("clicked noFinish");
+        mk.tip.pop('提现进度不足');
+    }
+}

+ 9 - 0
assets/script/game/module/blessingBag/BlessingBagItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "b661576a-856c-455c-982f-bf50d3778f4e",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/cashNormal.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "57b28902-1e8c-4327-bcbf-3b36b90c9728",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 37 - 0
assets/script/game/module/cashNormal/CashNormal.ts

@@ -0,0 +1,37 @@
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 提现记录
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class CashNormal extends cc.Component {
+
+    @property({ displayName: '滚动视图', type: cc.ScrollView })
+    private scroll_view: cc.ScrollView = null!;
+    @property({ displayName: 'lbl累计提现', type: cc.Label })
+    private lbl_rmb_total: cc.Label = null;
+
+    // onLoad () {}
+
+    start() {
+        this.initTotal();
+        this.initScrollView();
+    }
+
+    // update (dt) {}
+
+    /**
+     * 初始化滚动视图
+     */
+    private initScrollView() {
+        this.scroll_view.node.emit('srollview-init', gData.cashNormal.list_data);
+    }
+
+    /**
+     * 初始化累计提现
+     */
+    private initTotal() {
+        this.lbl_rmb_total.string = '¥' + gData.cashNormal.receip_total_rmb + '元';
+    }
+}

+ 9 - 0
assets/script/game/module/cashNormal/CashNormal.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "94e2a861-593e-420e-8f17-9cf47e7bd2ee",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 39 - 0
assets/script/game/module/cashNormal/CashNormalItem.ts

@@ -0,0 +1,39 @@
+import { TCashList } from "../../data/module/CashNormalData";
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 提现记录条目
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class CashNormalItem extends cc.Component {
+
+    @property({ displayName: 'lbl提现类型', type: cc.Label })
+    private lbl_cash_type: cc.Label = null;
+    @property({ displayName: 'lbl提现时间', type: cc.Label })
+    private lbl_cash_time: cc.Label = null;
+    @property({ displayName: 'lbl红包码', type: cc.Label })
+    private lbl_red_ma: cc.Label = null;
+    @property({ displayName: 'lbl毛币数量', type: cc.Label })
+    private lbl_rmb_value: cc.Label = null;
+
+    // onLoad () {}
+
+    // start () {
+
+    // }
+
+    /**
+     * 初始化数据
+     */
+    public async setItemData(item_data) {
+        await this.initStyle(item_data);
+    }
+    private initStyle(item_data: TCashList) {
+
+        this.lbl_cash_type.string = gData.cashNormal.cash_type[item_data.cashType];
+        this.lbl_cash_time.string = mk.time.getNowDayString(item_data.applyTime * 1000);
+        this.lbl_red_ma.string = item_data.withdrawalCode ? '红包码:' + item_data.withdrawalCode : '';
+        this.lbl_rmb_value.string = '¥' + item_data.amount + '元';
+    }
+}

+ 9 - 0
assets/script/game/module/cashNormal/CashNormalItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "320779e4-e4d9-462e-a3c4-bb225f6aefad",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/cashPro.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "670db9fb-87c4-4800-a750-aa649b933ab1",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 122 - 0
assets/script/game/module/cashPro/CashPro.ts

@@ -0,0 +1,122 @@
+/** 
+ * @description 提现结果界面类
+ * @author kaka
+ */
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class CashPro extends cc.Component {
+    //提现成功
+    @property(cc.Node)
+    loadPart: cc.Node = null;
+
+    @property(cc.Animation)
+    loadAni: cc.Animation = null;
+
+    @property(cc.Node)
+    moneyPart: cc.Node = null;
+
+    @property(cc.Label)
+    labRedMoney: cc.Label = null;
+
+    @property(cc.Node)
+    btnTixian: cc.Node = null;
+
+    @property(cc.Node)
+    btnAuth: cc.Node = null;
+
+    @property(cc.Node)
+    cashPro: cc.Node = null;
+
+    @property(cc.Label)
+    labMoney: cc.Label = null;
+
+    //提现金额
+    money = 0
+
+    //点击冷却
+    hasTap = false
+
+    update() {
+        if (gData.cashPro.init_data) {
+            this.init(gData.cashPro.cashPro_money);
+        }
+
+        if (gData.cashPro.init_success) {
+            this.tixianSuccess();
+        }
+
+        if (gData.cashPro.init_fail) {
+            this.tixianFail();
+        }
+    }
+
+    lateUpdate() {
+        gData.cashPro.init_data = false;
+        gData.cashPro.init_success = false;
+        gData.cashPro.init_fail = false;
+    }
+
+    init(money) {
+        this.money = money
+
+        this.loadPart.active = false
+        this.cashPro.active = false
+
+        if (gData.loginData.isAuth) {
+            this.btnAuth.active = false
+            this.btnTixian.active = true
+        }
+        else {
+            this.btnAuth.active = true
+            this.btnTixian.active = false
+        }
+    }
+
+    showLoad() {
+        this.loadPart.active = true
+        this.loadAni.play('load', 0)
+    }
+
+    tixianSuccess() {
+        this.loadPart.active = false
+        this.showCashPro()
+    }
+
+    showCashPro() {
+        this.cashPro.active = true;
+        mk.tween.move(this.cashPro, 0.3, cc.v2(1000, 0), cc.v2(0, 0), null, 'elasticIn');
+        this.labMoney.string = `¥${this.money}`
+    }
+
+    tixianFail() {
+        console.log('tixianFail  ')
+        this.loadPart.active = false
+
+        mk.ui.closePanel('module/cashPro/cashPro')
+    }
+
+    authBack() {
+        this.btnAuth.active = false
+        this.btnTixian.active = true
+    }
+
+    clickCash() {
+        mk.audio.playEffect('button');
+
+        this.showLoad();
+        gData.cashPro.onCash();
+    }
+
+    clickAuth() {
+        mk.audio.playEffect('button');
+        if (!this.hasTap) {
+            this.hasTap = true
+            // AdM.WxLogin()
+
+            this.scheduleOnce(() => {
+                this.hasTap = false
+            }, 3)
+        }
+    }
+}

+ 9 - 0
assets/script/game/module/cashPro/CashPro.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "7c96bf30-3e00-4f78-b4be-288e58a6014f",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/help.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "e6591f5c-356b-4464-97b1-06c597005169",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 23 - 0
assets/script/game/module/help/Help.ts

@@ -0,0 +1,23 @@
+
+/**
+ * 帮助说明数据
+ * @author
+ */
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class Help extends cc.Component {
+
+    @property({ type: cc.Label, displayName: '文字说明' })
+    lbl_desc: cc.Label = null;
+
+    update() {
+        if (gData.help.init_desc_name) {
+            this.lbl_desc.string = gData.help.des;
+        }
+    }
+
+    lateUpdate() {
+        gData.help.init_desc_name = false;
+    }
+}

+ 9 - 0
assets/script/game/module/help/Help.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "7626b1de-984a-46db-aec4-f34d57996f96",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/login.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "9e14cf5e-18f0-4458-a635-93bd67f52a83",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 46 - 0
assets/script/game/module/login/Login.ts

@@ -0,0 +1,46 @@
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class Login extends cc.Component {
+
+    @property({ displayName: 'lbl毛币数量', type: cc.SpriteFrame })
+    private sf_redbag: cc.SpriteFrame = null;
+    
+    onLoad() {
+        
+    }
+
+    start() {
+
+
+        let start_node_pos = new cc.Vec2(0, -500)
+        let end_node_pos = new cc.Vec2(0, 500)
+        let fly_data = {
+            node_p: this.node,
+            item_count: 10,
+            item_scale: [1, 2],
+            item_sf: this.sf_redbag,
+            start_pos: start_node_pos,
+            end_pos: end_node_pos,
+            complete_call: () => {
+            },
+        }
+        this.node.emit('ui-fly-node', fly_data)
+    }
+
+
+
+    update() {
+        if(!gData.loginData.loadResCompelete){
+            gData.loginData.loadLocalRes();
+            return;
+        }
+        if (!gData.loginData.isLogin) {
+            gData.loginData.login();
+            return;
+        }
+        if(gData.gameData.dataFinish){//登录流程完毕
+            mk.ui.openPanel("game/prefab/game");
+        }
+    }
+}

+ 9 - 0
assets/script/game/module/login/Login.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "6dba2b56-7f8d-49a5-891e-81ab5f2e8182",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/moreGame.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "9413066e-a217-4983-936f-fd0cd04f955a",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 60 - 0
assets/script/game/module/moreGame/BtnMoreGame.ts

@@ -0,0 +1,60 @@
+/**
+ * @description 更多游戏按钮
+ * @author kaka
+ */
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class BtnMoreGame extends cc.Component {
+    @property(cc.Sprite)
+    sp_moregame: cc.Sprite = null;
+
+    @property(cc.Label)
+    lab_moregame: cc.Label = null;
+
+    update() {
+        if (gData.moreGame.init_moreGameList) {
+            this.setMoreGameSp(gData.moreGame.moreGameList.normal);
+        }
+    }
+
+    lateUpdate() {
+        gData.moreGame.init_moreGameList = false;
+    }
+
+    /** 设置更多游戏图片 */
+    setMoreGameSp(arr) {
+        let len = arr.length
+        let index = mk.math.random(0, len - 1)
+        let data = arr[index]
+        this.showMoreGameSp(data)
+
+        this.schedule(() => {
+            index++
+            index = (index % len)
+            // LogUtil.logV('setMoreGameSp  ', 'index ' + index)
+            data = arr[index]
+            this.showMoreGameSp(data)
+        }, 10)
+    }
+
+    /** 切换图片 */
+    showMoreGameSp(data) {
+        //pc不加载,加载会报错
+        if (cc.sys.os != cc.sys.OS_WINDOWS) {
+            cc.loader.load(data.icon, (err, res) => {
+                if (err) {
+                    console.log('err:', err);
+                    return;
+                }
+                if (this.sp_moregame) {
+                    let tex: cc.Texture2D = res as cc.Texture2D;
+                    this.sp_moregame.spriteFrame = new cc.SpriteFrame(tex);
+                }
+            })
+        }
+
+        this.lab_moregame.string = data.title
+    }
+}

+ 9 - 0
assets/script/game/module/moreGame/BtnMoreGame.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "9ab36010-ba22-4ac3-aedb-abe295dd8af0",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 57 - 0
assets/script/game/module/moreGame/MoreGame.ts

@@ -0,0 +1,57 @@
+/**
+ * @description 互推界面
+ * @author kaka
+ */
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class MoreGameNode extends cc.Component {
+
+    @property(cc.Node)
+    node_sv: cc.Node = null;
+
+    @property(cc.Prefab)
+    moreGameNormalNode: cc.Prefab = null
+
+    private normalDatas = null
+
+
+    start() {
+        this.node.setContentSize(cc.winSize)
+        gData.moreGame.init();
+    }
+
+    update() {
+        if (gData.moreGame.init_moreGameList) {
+            this.initView();
+        }
+    }
+
+    lateUpdate() {
+        gData.moreGame.init_moreGameList = false;
+    }
+
+    initView() {
+        this.normalDatas = gData.moreGame.moreGameList.normal;
+        let data = [];
+        let len = this.normalDatas.length;
+        for (var i = 0; i < len; i++) {
+            let pfbType = 0;
+            let obj = {
+                item_data: this.normalDatas[i],
+                pfbType: pfbType
+            }
+            data.push(obj);
+            if (i == 1) {
+                pfbType = 1;
+                let obj = {
+                    item_data: gData.moreGame.moreGameList.banner,
+                    pfbType: pfbType
+                }
+                data.push(obj);
+            }
+        }
+        this.node_sv.emit('srollview-init', data)
+    }
+}

+ 9 - 0
assets/script/game/module/moreGame/MoreGame.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "a6705a8a-bbcb-4fa6-845d-e040adeaff84",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 198 - 0
assets/script/game/module/moreGame/MoreGameBanner.ts

@@ -0,0 +1,198 @@
+/** 
+ * @description 互推界面banner item类
+ * @author kaka
+ */
+
+import MoreGamePicItem from "./MoreGamePicItem";
+import PointItem from "./PointItem";
+
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class MoreGameBanner extends cc.Component {
+    @property(cc.Node)
+    dragArea: cc.Node = null
+
+    @property(cc.Node)
+    item1: cc.Node = null
+
+    @property(cc.Node)
+    item2: cc.Node = null
+
+    @property(cc.Prefab)
+    pointPrefab: cc.Prefab = null
+
+    @property(cc.Node)
+    pointLy: cc.Node = null
+
+    @property(cc.Node)
+    btnLeft: cc.Node = null
+
+    @property(cc.Node)
+    btnRight: cc.Node = null
+
+    private startX = 0
+    private coolTime = false
+    private curSelDownItem: cc.Node = null
+    private preDownItem = null
+    private curIndex = 0
+    private bannerDatas = null
+    private curSelPoint: cc.Node = null
+
+    private hasClick = false;
+
+    start() {
+        this.dragArea.on(cc.Node.EventType.TOUCH_START, this.onDragStart, this)
+        this.dragArea.on(cc.Node.EventType.TOUCH_END, this.onDragEnd, this)
+    }
+
+    onDisable() {
+        this.dragArea.off(cc.Node.EventType.TOUCH_START, this.onDragStart, this)
+        this.dragArea.off(cc.Node.EventType.TOUCH_END, this.onDragEnd, this)
+    }
+
+    public async setItemData(bannerDatas) {
+        this.bannerDatas = bannerDatas.item_data;
+        if (this.bannerDatas && this.bannerDatas.length > 0) {
+            for (var i = 0; i < this.bannerDatas.length; i++) {
+                let point = cc.instantiate(this.pointPrefab)
+                point.name = i.toString()
+                this.pointLy.addChild(point)
+            }
+        }
+
+        this.onOpenBigPicNode(0);
+    }
+
+    onOpenBigPicNode(index) {
+        this.curIndex = index
+
+        let data = this.bannerDatas[this.curIndex]
+
+        this.curSelDownItem = this.item1
+        this.curSelDownItem.getComponent(MoreGamePicItem).init(data)
+        this.curSelDownItem.x = 0
+        this.curSelDownItem.active = true
+        this.item2.x = 750
+
+        this.curSelPoint = this.pointLy.getChildByName(this.curIndex.toString())
+        this.curSelPoint.getComponent(PointItem).setSel(true)
+
+        this.hasClick = false
+
+        if (this.bannerDatas.length > 1) {
+            this.schedule(() => {
+                if (!this.hasClick) {
+                    this.onSelDown(1)
+                }
+            }, 3, cc.macro.REPEAT_FOREVER, 7)
+        }
+        else {
+            this.btnLeft.active = false
+            this.btnRight.active = false
+        }
+    }
+
+    onLeft() {
+        mk.audio.playEffect('button');
+        this.hasClick = true
+        this.onSelDown(2)
+    }
+
+    onRight() {
+        mk.audio.playEffect('button');
+        this.hasClick = true
+        this.onSelDown(1)
+    }
+
+    /**
+     * 滑动选择
+     * @param state 1 向左 2 向右 
+     */
+    onSelDown(state) {
+        if (this.coolTime) {
+            return
+        }
+
+        let preTo = -750
+        let data
+        if (state == 1) {
+            if (this.curIndex + 1 > this.bannerDatas.length - 1) {
+                this.curIndex = 0
+            }
+            else {
+                this.curIndex++
+            }
+
+            data = this.bannerDatas[this.curIndex]
+
+            if (this.curSelDownItem == this.item1) {
+                this.curSelDownItem = this.item2
+                this.preDownItem = this.item1
+            }
+            else {
+                this.curSelDownItem = this.item1
+                this.preDownItem = this.item2
+            }
+            this.curSelDownItem.getComponent(MoreGamePicItem).init(data)
+            this.curSelDownItem.x = 750
+            preTo = -750
+        }
+        else if (state == 2) {
+            if (this.curIndex - 1 < 0) {
+                this.curIndex = this.bannerDatas.length - 1
+            }
+            else {
+                this.curIndex--
+            }
+
+            data = this.bannerDatas[this.curIndex]
+
+            if (this.curSelDownItem == this.item1) {
+                this.curSelDownItem = this.item2
+                this.preDownItem = this.item1
+            }
+            else {
+                this.curSelDownItem = this.item1
+                this.preDownItem = this.item2
+            }
+            this.curSelDownItem.getComponent(MoreGamePicItem).init(data)
+            this.curSelDownItem.x = -750
+            preTo = 750
+        }
+
+        this.coolTime = true
+        cc.tween(this.preDownItem).to(0.4, { x: preTo }, cc.easeInOut(1)).start()
+        cc.tween(this.curSelDownItem).to(0.4, { x: 0 }, cc.easeInOut(1)).call(() => {
+            this.onSelPoint()
+            this.coolTime = false
+        }).start()
+    }
+
+    onDragStart(evt) {
+        this.hasClick = true
+        this.startX = evt.touch._point.x
+    }
+
+    onDragEnd(evt) {
+        let end = evt.touch._point.x - this.startX
+        if (Math.abs(end) > 20) {
+            if (end > 0) {
+                this.onSelDown(2)
+            }
+            else {
+                this.onSelDown(1)
+            }
+        }
+    }
+
+    onSelPoint() {
+        if (this.curSelPoint) {
+            this.curSelPoint.getComponent(PointItem).setSel(false)
+        }
+
+        this.curSelPoint = this.pointLy.getChildByName(this.curIndex.toString())
+        this.curSelPoint.getComponent(PointItem).setSel(true)
+    }
+}

+ 9 - 0
assets/script/game/module/moreGame/MoreGameBanner.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "00a05c10-4ee9-4f9f-a5c8-4cfa78779297",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 117 - 0
assets/script/game/module/moreGame/MoreGameNormalItem.ts

@@ -0,0 +1,117 @@
+/** 
+ * @description 互推界面常规item
+ * @author kaka
+ */
+import JsbSystem from "../../../mk/system/JsbSystem";
+
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class MoreGameNormalItem extends cc.Component {
+
+    @property(cc.Sprite)
+    iconNode: cc.Sprite = null;
+    @property(cc.Label)
+    progressLabel: cc.Label = null;
+
+    @property(cc.Node)
+    btnDown: cc.Node = null;
+
+    @property(cc.Node)
+    btnOpen: cc.Node = null;
+
+    @property(cc.Label)
+    labName: cc.Label = null;
+
+    @property(cc.Label)
+    labDes: cc.Label = null;
+
+    @property(cc.Node)
+    spRed: cc.Node = null;
+
+    private data = null
+
+    /**
+     * list_data
+     * @param data item数据
+     */
+    public async setItemData(bData) {
+        this.data = bData.item_data;
+        if (cc.sys.os != cc.sys.OS_WINDOWS) {
+            cc.loader.load(this.data.icon, (err, res) => {
+                if (err) {
+                    console.log('err:', err);
+                    return;
+                }
+                if (cc.isValid(this.iconNode)) {
+                    let tex: cc.Texture2D = res as cc.Texture2D;
+                    this.iconNode.spriteFrame = new cc.SpriteFrame(tex);
+                }
+            })
+        }
+
+        this.labName.string = this.data.title
+        this.labDes.string = this.data.introduction
+        this.spRed.active = false
+
+        if (JsbSystem.ifCanStartGame(this.data.packageName, false)) {
+            this.btnDown.active = false
+            this.btnOpen.active = true
+        } else {
+            if (JsbSystem.isFileExist(this.data.nebulaAppId + ".apk")) {
+                this.btnDown.active = false
+                this.btnOpen.active = true
+            } else {
+                this.btnDown.active = true
+                this.btnOpen.active = false
+                // this.spRed.active = true
+
+                let info = gData.moreGame.getTaskInfo(this.data.nebulaAppId)
+                if (info != null) {
+                    this.schedule(() => {
+                        this.showDownloadProgress()
+                    }, 0.5)
+                } else {
+                    this.progressLabel.string = "下载"
+                }
+            }
+        }
+    }
+
+    cool = false
+    creatorDownLoadTask() {
+        mk.audio.playEffect('button');
+        if (this.cool) {
+            return
+        }
+
+        this.cool = true
+        this.scheduleOnce(() => {
+            this.cool = false
+        }, 3)
+
+        let result = gData.moreGame.createNewTask(this.data)
+        if (result != null) {
+            this.schedule(() => {
+                this.showDownloadProgress()
+            }, 0.5)
+        } else {
+            this.progressLabel.string = ""
+        }
+    }
+
+    showDownloadProgress() {
+        let info = gData.moreGame.getTaskInfo(this.data.nebulaAppId)
+        if (info != null) {
+            if (info.progress >= 0) {
+                // LogUtil.logV("showDownloadProgress", "three")
+                this.progressLabel.string = ((info.progress / info.totalBytesReceives) * 100).toFixed(1) + "%"
+            } else {
+                this.setItemData(this.data)
+            }
+        } else {
+            this.setItemData(this.data)
+        }
+    }
+}

+ 9 - 0
assets/script/game/module/moreGame/MoreGameNormalItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "a4ff75d3-8975-467d-93f8-d85d5b04811a",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 102 - 0
assets/script/game/module/moreGame/MoreGamePicItem.ts

@@ -0,0 +1,102 @@
+/** 
+ * @description 互推banner 单个item
+ * @author kaka
+ */
+import JsbSystem from "../../../mk/system/JsbSystem";
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class MoreGamePicItem extends cc.Component {
+
+    @property(cc.Sprite)
+    banner: cc.Sprite = null;
+
+    @property(cc.Node)
+    spRed: cc.Node = null;
+
+    @property(cc.Sprite)
+    spPro: cc.Sprite = null;
+
+    @property(cc.Label)
+    labPro: cc.Label = null;
+
+    @property(cc.Node)
+    btnStart: cc.Node = null;
+
+    data = null
+    cool = false
+
+    init(data) {
+        this.data = data
+
+        //pc不加载,加载会报错
+        if (cc.sys.os != cc.sys.OS_WINDOWS) {
+            cc.loader.load(data.banner2, (err, res) => {
+                if (err) {
+                    console.log('err:', err);
+                    return;
+                }
+                if (this.banner) {
+                    let tex: cc.Texture2D = res as cc.Texture2D;
+                    this.banner.spriteFrame = new cc.SpriteFrame(tex);
+                }
+            })
+        }
+
+        this.spPro.node.active = false
+        this.btnStart.active = false
+        this.labPro.string = ''
+        //打开
+        if (JsbSystem.ifCanStartGame(data.packageName, false)) {
+            this.spRed.active = false
+            this.btnStart.active = true
+        } else {
+            if (JsbSystem.isFileExist(data.nebulaAppId + ".apk")) {
+                //安装
+                this.spRed.active = false
+                this.btnStart.active = true
+            } else {
+                //下载
+                this.spRed.active = true
+            }
+        }
+    }
+
+    creatorDownLoadTask() {
+        // UiM.Instance.moreGameNode.getComponent(MoreGameNode).hasClick = true
+        if (this.cool) {
+            return
+        }
+
+        this.cool = true
+        this.scheduleOnce(() => {
+            this.cool = false
+        }, 3)
+
+        let result = gData.moreGame.createNewTask(this.data)
+        if (result != null) {
+            this.schedule(() => {
+                this.showDownloadProgress()
+            }, 0.5)
+        }
+    }
+
+    showDownloadProgress() {
+        let info = gData.moreGame.getTaskInfo(this.data.nebulaAppId)
+        if (info != null) {
+            if (info.progress >= 0) {
+                // LogUtil.logV("showDownloadProgress", "three")
+                this.spPro.node.active = true
+                let proNum = info.progress / info.totalBytesReceives
+                let pro = (proNum * 100).toFixed(1)
+                this.spPro.fillRange = 1 - proNum
+                this.labPro.string = `${pro}%`
+            } else {
+                this.init(this.data)
+            }
+        } else {
+            this.init(this.data)
+        }
+    }
+}

+ 9 - 0
assets/script/game/module/moreGame/MoreGamePicItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "c2dd85a9-3cee-4488-b47e-c8b6d61d41c3",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 76 - 0
assets/script/game/module/moreGame/MoreGamePopNode.ts

@@ -0,0 +1,76 @@
+/**
+ * @description 互推弹出红包界面
+ * @author kaka
+ */
+
+import JsbSystem from "../../../mk/system/JsbSystem";
+
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class MoreGamePopNode extends cc.Component {
+
+    @property(cc.Sprite)
+    icon: cc.Sprite = null;
+
+    @property(cc.Label)
+    labName: cc.Label = null;
+
+    data = null
+
+    start() {
+        gData.moreGame.init_moreGameList = true;
+    }
+
+    update() {
+        if (gData.moreGame.init_moreGameList) {
+            this.init();
+        }
+    }
+
+    lateUpdate() {
+        gData.moreGame.init_moreGameList = false;
+    }
+
+    init() {
+        this.data = gData.moreGame.getRandomNormal();
+        if (this.data) {
+            //pc不加载,加载会报错
+            if (cc.sys.os != cc.sys.OS_WINDOWS) {
+                cc.loader.load(this.data.icon, (err, res) => {
+                    if (err) {
+                        console.log('err:', err);
+                        return;
+                    }
+                    let tex: cc.Texture2D = res as cc.Texture2D;
+                    this.icon.spriteFrame = new cc.SpriteFrame(tex);
+                })
+            }
+
+            this.labName.string = this.data.title
+        }
+    }
+
+    cool = false
+    creatorDownLoadTask() {
+        mk.audio.playEffect('button');
+
+        if (this.cool) {
+            return
+        }
+
+        this.cool = true
+
+        if (!JsbSystem.ifCanStartGame(this.data.packageName, true)) {
+            gData.moreGame.createNewTask(this.data)
+        }
+    }
+
+    onClosePanel() {
+        // mk.audio.playEffect('getGold');
+        mk.tip.pop('红包币+300');
+        //     GameM.commonData.updateRedMoney(300, RecordTYPE.online)
+        mk.fly.PlayCoinAnim(1, 20, cc.v2(0, -300), cc.v2(0, 0));
+    }
+}

+ 9 - 0
assets/script/game/module/moreGame/MoreGamePopNode.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "cd58f913-a1e6-4bbc-ab93-10f8546eb6ce",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 13 - 0
assets/script/game/module/moreGame/PointItem.ts

@@ -0,0 +1,13 @@
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class PointItem extends cc.Component {
+
+    @property(cc.Node)
+    sel: cc.Node = null;
+
+    setSel(sel) {
+        this.sel.active = sel
+    }
+}

+ 9 - 0
assets/script/game/module/moreGame/PointItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "7f35ae72-8033-4f5e-b876-1a14533d424a",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/pigBank.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "0a9d686d-a500-4d69-9673-529c8f7e4ed1",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 86 - 0
assets/script/game/module/pigBank/PigBank.ts

@@ -0,0 +1,86 @@
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 存钱罐界面样式
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class PigBank extends cc.Component {
+
+    @property({ type: cc.Label, displayName: '按钮描述' })
+    private lbl_get_desc: cc.Label = null!;
+    @property({ type: cc.Label, displayName: '存款数量' })
+    private lbl_deposit: cc.Label = null!;
+    @property({ type: cc.Node, displayName: '提示动画' })
+    private node_tip_anim: cc.Node = null!;
+    @property({ type: cc.Animation, displayName: '提现动画' })
+    private anim_btn_cash: cc.Animation = null!;
+
+    onLoad() {
+
+    }
+
+    start() {
+        this.initCashDesc();
+        mk.audio.playEffect("pigBank",false);
+    }
+
+    update(dt) {
+        if (gData.pigbank.init_data) {
+            gData.pigbank.init_data = false;
+            this.initCashDesc();
+        }
+        if (gData.pigbank.adData) {
+            cc.log('存钱罐提现', gData.pigbank.adData)
+            gData.pigbank.adData = null;
+        }
+    }
+
+    /** 
+     * 提现描述展示
+     */
+    private initCashDesc() {
+        if (gData.pigbank.cash_enable) {
+            this.lbl_get_desc.string = '直接提现';
+            this.node_tip_anim.active = false;
+            this.anim_btn_cash.play();
+        } else {
+            if (gData.pigbank.cur_cash_count >= gData.pigbank.cash_min_limit) {
+                this.lbl_get_desc.string = '明日可提现';
+            } else {
+                this.lbl_get_desc.string = '满' + gData.pigbank.cash_min_limit + '元可提';
+            }
+            this.node_tip_anim.active = true;
+            this.anim_btn_cash.stop();
+            this.anim_btn_cash.node.scale = 1;
+        }
+        this.initDeposit()
+    }
+
+    /** 
+     * 初始化存钱罐金额
+     * - 精确到分
+     */
+    private initDeposit() {
+        const new_count = gData.pigbank.cur_cash_count.toFixed(2)
+        this.lbl_deposit.string = new_count + '元';
+    }
+
+    /**
+     * 提现操作
+     */
+    private clickCashOP() {
+        if (!gData.pigbank.cash_enable) return;
+        gData.pigbank.cashOP();
+        mk.ui.closePanel(this.node.name);
+    }
+
+    /**
+     * 打开帮助界面完成回调
+     */
+    private async clickOpenHelpCall() {
+        gData.help.init_desc_name = this.node.name;
+    }
+
+
+}

+ 9 - 0
assets/script/game/module/pigBank/PigBank.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "b7b79793-ebf5-4faf-9c9d-ee6087e2147b",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/receiptNotice.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "e13fc909-6624-4cfe-97f5-2381bd10e53c",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 42 - 0
assets/script/game/module/receiptNotice/ReceiptNotice.ts

@@ -0,0 +1,42 @@
+
+const { ccclass, property } = cc._decorator;
+
+/**
+ * 到账通知样式
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class ReceiptNotice extends cc.Component {
+
+    @property({ displayName: 'lbl收款金额', type: cc.Label })
+    private lbl_receipt_rmb: cc.Label = null!;
+    @property({ displayName: 'lbl累计提现', type: cc.Label })
+    private lbl_rmb_total: cc.Label = null!;
+    @property({ displayName: 'lbl用户名', type: cc.Label })
+    private lbl_user_name: cc.Label = null!;
+
+
+    // onLoad() {
+
+    // }
+
+    start() {
+        mk.audio.playEffect("receiptNotice");
+    }
+
+    update(dt) {
+        if (gData.receiptNotice.init_style) {
+            gData.receiptNotice.init_style = false;
+            this.initStyle();
+        }
+    }
+
+    /**
+     * 初始化样式
+     */
+    private initStyle() {
+        this.lbl_receipt_rmb.string = '¥' + gData.receiptNotice.receip_rmb + '元';
+        this.lbl_rmb_total.string = '¥' + gData.cashNormal.receip_total_rmb + '元';
+        this.lbl_user_name.string = gData.wechatData.nickName || '';
+    }
+}

+ 9 - 0
assets/script/game/module/receiptNotice/ReceiptNotice.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "994441e4-0d9a-4ac8-88f5-492df8b483a2",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/redBagCash.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "4d0ef30e-c860-413a-8bb2-994f05d1a5ac",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 53 - 0
assets/script/game/module/redBagCash/RedBagCash.ts

@@ -0,0 +1,53 @@
+import TableView from "../../component/TableView";
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 红包提现界面
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class RedBagCash extends cc.Component {
+
+    @property({ displayName: '滚动视图', type: cc.ScrollView })
+    private sroll_view: cc.ScrollView = null!;
+    @property({ displayName: 'lbl红包数量', type: cc.Label })
+    private lbl_redbag: cc.Label = null!;
+    @property({ displayName: 'lbl毛币数量', type: cc.Label })
+    private lbl_rmb: cc.Label = null!;
+
+    private tableview: TableView = null;
+    onLoad() {
+        gData.gameData.gameData.redMoney = 10200;// 测试数据,数据正确后请删除
+        this.tableview = this.sroll_view.getComponent('TableView');
+    }
+
+    start() {
+        this.initMoney();
+        this.initScrollView();
+    }
+
+    update(dt) {
+        if (gData.redBagCash.init_list) {
+            this.initScrollView();
+            this.initMoney();
+        }
+    }
+
+    /**
+     * 初始化滚动视图
+     */
+    private initScrollView() {
+        this.sroll_view.node.emit('srollview-init', gData.redBagCash.c_data);
+        gData.redBagCash.init_list = false;
+    }
+
+    /**
+     * 初始化货币数量
+     */
+    private initMoney() {
+        this.lbl_redbag.string = `${gData.gameData.gameData.redMoney}`;
+        let rmb = gData.gameData.gameData.redMoney / 10000;
+        rmb = rmb > 1 ? Math.floor(rmb) : parseFloat(rmb.toFixed(2));
+        this.lbl_rmb.string = `${rmb}`;
+    }
+}

+ 9 - 0
assets/script/game/module/redBagCash/RedBagCash.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "e7d9e315-9c20-4285-a213-03bd5197dfc1",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 84 - 0
assets/script/game/module/redBagCash/RedBagCashItem.ts

@@ -0,0 +1,84 @@
+import { CDataType } from "../../data/module/RedBagCashData";
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 常规提现条目
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class RedBagCashItem extends cc.Component {
+
+    @property({ displayName: '已领取', type: cc.Node })
+    node_none: cc.Node = null;
+    @property({ displayName: '未达成', type: cc.Node })
+    node_lock: cc.Node = null;
+    @property({ displayName: '可领取', type: cc.Node })
+    node_unlock: cc.Node = null;
+    @property({ displayName: '红包数量', type: cc.Label })
+    lbl_red_value: cc.Label = null;
+    @property({ displayName: '毛币数量', type: cc.Label })
+    lbl_rmb_value: cc.Label = null;
+
+    /** 条目数据 */
+    private item_data: CDataType = null;
+    onLoad() {
+
+    }
+
+    start() {
+
+    }
+
+
+    /**
+     * 初始化数据
+     */
+    public async setItemData(item_data) {
+        await this.initStyle(item_data);
+    }
+
+    /**
+     * 初始化样式
+     * @param item_data 条目数据 
+     */
+    private initStyle(item_data) {
+        this.item_data = item_data;
+        this.lbl_red_value.string = `${this.item_data.type_value}`;
+        let rmb_value = this.item_data.money / 100;
+        rmb_value = rmb_value > 1 ? rmb_value : parseFloat(rmb_value.toFixed(2))
+        this.lbl_rmb_value.string = rmb_value + '元';
+
+        if (this.item_data.index <= gData.redBagCash.cash_bar) {
+            // 已提现
+            this.node_none.active = true;
+            this.node_lock.active = false;
+            this.node_unlock.active = false;
+        } else {
+            // 可提现
+            if (gData.gameData.gameData.redMoney >= this.item_data.type_value) {
+                this.node_none.active = false;
+                this.node_lock.active = false;
+                this.node_unlock.active = true;
+            } else {
+                // 未达成
+                this.node_none.active = false;
+                this.node_lock.active = true;
+                this.node_unlock.active = false;
+            }
+        }
+    }
+
+    /**
+     * 提现操作
+     */
+    private clickCashOP() {
+        // if (!gData.redBagCash.cash_enable) return;
+        if (this.item_data.index > gData.redBagCash.cash_bar + 1) {
+            mk.tip.pop('请按顺序提现');
+            return;
+        }
+        gData.redBagCash.cashOP();
+        cc.log('红包现成功')
+    }
+
+}

+ 9 - 0
assets/script/game/module/redBagCash/RedBagCashItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "822d48f6-d559-48c5-babd-ad8c52192410",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/redBagCode.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "4a97883d-070d-4820-be76-25e3afc9d386",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 27 - 0
assets/script/game/module/redBagCode/RedBagCode.ts

@@ -0,0 +1,27 @@
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 红包码列表
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class RedBagCode extends cc.Component {
+
+    @property({ type: cc.ScrollView, displayName: '滚动视图' })
+    private scroll_view: cc.ScrollView = null!;
+
+    // onLoad () {}
+
+    start() {
+        this.initList();
+    }
+
+    
+    /**
+     * 初始化滚动列表
+     */
+    private initList() {
+        let list_data = gData.cashNormal.getListDataHavCode();
+        this.scroll_view.node.emit('srollview-init', list_data)
+    }
+}

+ 9 - 0
assets/script/game/module/redBagCode/RedBagCode.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "f7616ae1-f0cb-4ed5-9673-89a5365dfd70",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 43 - 0
assets/script/game/module/redBagCode/RedBagCodeItem.ts

@@ -0,0 +1,43 @@
+import JsbSystem from "../../../mk/system/JsbSystem";
+import { TCashList } from "../../data/module/CashNormalData";
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 红包码条目
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class RedBagCodeItem extends cc.Component {
+
+    @property({ displayName: 'lbl红包码', type: cc.Label })
+    private lbl_code: cc.Label = null;
+    @property({ displayName: 'lbl时间', type: cc.Label })
+    private lbl_time: cc.Label = null;
+    @property({ displayName: 'lbl毛币', type: cc.Label })
+    private lbl_rmb: cc.Label = null;
+
+
+    /**
+     * 初始化数据
+     */
+    public async setItemData(item_data) {
+        await this.initItem(item_data);
+    }
+
+    /**
+     * 初始化样式
+     */
+    private initItem(item_data: TCashList) {
+        this.lbl_rmb.string = item_data.amount + '元';
+        this.lbl_time.string = mk.time.getNowDayString(item_data.applyTime * 1000);
+        this.lbl_code.string = item_data.withdrawalCode ? '红包码:' + item_data.withdrawalCode : '';
+    }
+
+    /**
+     * 复制按钮
+     */
+    private clickCopy() {
+        JsbSystem.setClipboard('AABBAA')
+    }
+    // update (dt) {}
+}

+ 9 - 0
assets/script/game/module/redBagCode/RedBagCodeItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "8a47345e-2263-4926-89ca-c55f664e920b",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/redCode.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "5836f464-d465-4d45-ae07-303a4af686c8",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 99 - 0
assets/script/game/module/redCode/RedCode.ts

@@ -0,0 +1,99 @@
+
+/** 
+ * @description 公众号提现
+ * @author kaka
+ */
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class RedCode extends cc.Component {
+
+    @property(cc.Label)
+    labOfficial: cc.Label = null;
+
+    @property(cc.Label)
+    labRed: cc.Label = null;
+
+    @property(cc.Label)
+    labMoney: cc.Label = null;
+
+    @property(cc.Label)
+    labRedCode: cc.Label = null;
+
+    @property(cc.Node)
+    parNode: cc.Node = null;
+
+    @property(cc.Prefab)
+    videoPre: cc.Prefab = null;
+
+    videoNode = null
+
+    officialStr = "白羊游戏社"
+    redCodeStr = "领红包"
+    code = ""
+
+    coolTime = false
+
+    start() {
+        this.coolTime = false
+        this.labOfficial.string = `“${this.officialStr}”`
+        this.labRed.string = `“${this.redCodeStr}”`
+    }
+
+    update() {
+        if (gData.redCodeData.init_data) {
+            this.init(gData.redCodeData.money, gData.redCodeData.code);
+        }
+    }
+
+    lateUpdate() {
+        gData.redCodeData.init_data = false;
+    }
+
+    init(money, code) {
+        this.labMoney.string = `${money.toFixed(2)}元`
+        this.code = code
+        this.labRedCode.string = `提现红包码:${this.code}`
+    }
+
+    /** 点击复制公众号 */
+    clickCopyOfficial() {
+        mk.audio.playEffect('button');
+        // AdM.setClipboard(this.officialStr)
+    }
+
+    /** 点击教程 */
+    clickTeach() {
+        mk.audio.playEffect('button');
+        if (this.coolTime) {
+            return
+        }
+
+        this.coolTime = true
+
+        gData.redCodeData.teachVideoType = 1;
+        console.log('clickTeach')
+        this.videoNode = cc.instantiate(this.videoPre)
+        this.videoNode.getChildByName('video').on("completed", this.onCompleted, this)
+        this.node.addChild(this.videoNode)
+    }
+
+    onCompleted() {
+        this.videoNode.getChildByName('video').off("completed", this.onCompleted, this)
+        this.videoNode.destroy()
+        mk.audio.setResumeMusic();
+        this.coolTime = false
+    }
+
+    /** 点击复制红包码 */
+    clickCopyRedCode() {
+        mk.audio.playEffect("button");
+        // AdM.setClipboard(this.code)
+    }
+
+    /** 点击关闭 */
+    closeCallBack() {
+        mk.audio.playEffect("button");
+        mk.audio.setResumeMusic();
+    }
+}

+ 9 - 0
assets/script/game/module/redCode/RedCode.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "c41b5fb7-4525-441b-b379-7aedea2a5a99",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 39 - 0
assets/script/game/module/redCode/VideoNode.ts

@@ -0,0 +1,39 @@
+/** 播放教程视频 */
+
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class VideoNode extends cc.Component {
+    @property(cc.VideoPlayer)
+    videoPlayer: cc.VideoPlayer = null;
+
+    onLoad() {
+
+    }
+
+    start() {
+        this.videoPlayer.resourceType = cc.VideoPlayer.ResourceType.LOCAL
+
+        let url = ''
+        if (gData.redCodeData.teachVideoType == 1) {
+            url = 'video/AriesGameClub'
+        }
+        else {
+            url = 'video/Redeem'
+        }
+
+        this.playVideo(url)
+    }
+
+    playVideo(url) {
+        cc.loader.loadRes(url, cc.Asset, (err, res) => {
+            this.videoPlayer.clip = res as any
+            this.scheduleOnce(() => {
+                this.videoPlayer.play()
+
+                mk.audio.setPauseMusic()
+                // mk.audio.setTempEffect(false)
+            }, 1)
+        })
+    }
+}

+ 9 - 0
assets/script/game/module/redCode/VideoNode.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "67f8f97f-ad00-4d5a-8848-8b61c9ef70a0",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/redeem.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "757a9e42-0970-41dc-b7b8-c3fe5320bf06",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 157 - 0
assets/script/game/module/redeem/RedeemNode.ts

@@ -0,0 +1,157 @@
+/**
+ * @description 兑换码界面
+ * @author kaka
+ */
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class RichHelpPanel extends cc.Component {
+
+    @property(cc.Label)
+    txtTitle: cc.Label = null;
+    @property(cc.Label)
+    txtGiftName: cc.Label = null;
+
+    @property(cc.Prefab)
+    videoPre: cc.Prefab = null;
+
+    @property(cc.Node)
+    rds: cc.Node[] = [];
+    @property(cc.Sprite)
+    rd_imgs: cc.Sprite[] = [];
+    @property(cc.Label)
+    rd_txts: cc.Label[] = [];
+
+    @property(cc.EditBox)
+    inputBox: cc.EditBox = null;
+
+    @property(cc.Node)
+    suc_node: cc.Node = null;
+    @property(cc.Node)
+    suc_node_panel: cc.Node = null;
+
+    @property(cc.Node)
+    suc_rds: cc.Node[] = [];
+    @property(cc.Sprite)
+    suc_rd_imgs: cc.Sprite[] = [];
+    @property(cc.Label)
+    suc_rd_txts: cc.Label[] = [];
+
+    videoNode = null;
+
+    rewardData: any = null;
+
+    update() {
+        if (gData.redeem.init_redeemData) {
+            this.InitData();
+        }
+    }
+
+    lateUpdate() {
+        gData.redeem.init_redeemData = false;
+    }
+
+    InitData() {
+        let data = gData.redeem.redeemData.redemption;
+        this.txtTitle.string = data.title;
+        this.txtGiftName.string = data.title;
+        this.rewardData = data.content;
+        for (let n of this.rds) {
+            n.active = false;
+        }
+        for (let m of this.suc_rds) {
+            m.active = false;
+        }
+        for (let i = 0; i < this.rewardData.length; i++) {
+            this.rds[i].active = true;
+            this.suc_rds[i].active = true;
+            cc.loader.loadRes("game/texture/coin/" + this.rewardData[i].type, cc.SpriteFrame, (err, res) => {
+                if (err) { console.log("img load err:" + JSON.stringify(err)); }
+                this.rd_imgs[i].spriteFrame = res;
+                this.suc_rd_imgs[i].spriteFrame = res;
+            });
+            if (this.rewardData[i].type == "10001") {
+                this.rd_txts[i].string = mk.math.format(this.rewardData[i].count) + "分钟";
+                this.suc_rd_txts[i].string = mk.math.format(this.rewardData[i].count) + "分钟";
+            } else {
+                this.rd_txts[i].string = mk.math.format(this.rewardData[i].count);
+                this.suc_rd_txts[i].string = mk.math.format(this.rewardData[i].count);
+            }
+        }
+    }
+
+    async Click_RedeemBtn() {
+        console.log("---RedeemCode: " + this.inputBox.string);
+        if (this.inputBox.string != "") {
+            let response = await gData.redeem.redeemExchange(this.inputBox.string);
+            if (response && response.data.code == 1) {
+                console.log("兑换成功");
+
+                this.suc_node_panel.scale = 0;
+                this.suc_node.active = true;
+                cc.tween(this.suc_node_panel).to(0.2, { scale: 1 }, { easing: "backOut" }).start();
+            }
+            else {
+                mk.tip.pop(response.data.msg);
+            }
+        } else {
+            mk.tip.pop('请输入兑换码');
+        }
+    }
+
+    coolTime = false
+    /** 点击教程 */
+    async Click_TeachBtn() {
+        mk.audio.playEffect('button');
+        if (this.coolTime) {
+            return
+        }
+
+        this.coolTime = true
+
+        console.log('clickTeach')
+        gData.redCodeData.teachVideoType = 2;
+        this.videoNode = cc.instantiate(this.videoPre)
+        this.videoNode.getChildByName('video').on("completed", this.onCompleted, this)
+        this.node.addChild(this.videoNode)
+    }
+
+    onCompleted() {
+        this.videoNode.getChildByName('video').off("completed", this.onCompleted, this)
+        this.videoNode.destroy()
+        // GameM.audioM.setResumeMusic()
+        this.coolTime = false
+    }
+
+    /** 点击复制公众号 */
+    clickCopyOfficial() {
+        mk.audio.playEffect('button');
+        // AdM.setClipboard("白羊游戏社")
+    }
+
+    /** 点击复制礼包名 */
+    clickCopyInfo() {
+        mk.audio.playEffect('button');
+        // AdM.setClipboard(this.txtTitle.string)
+    }
+
+    async Click_GetBtn() {
+        this.suc_node.active = false;
+
+        for (let i = 0; i < this.rewardData.length; i++) {
+            mk.audio.playEffect('rewardClose');
+            mk.fly.PlayCoinAnim(this.rewardData[i].type, 5, cc.v2(0, -300), cc.v2(0, 0))
+        }
+
+
+        let response = await gData.redeem.redeemGetRedemption();
+        // if (response && response.data.code == 1) {
+        //     this.InitData();
+        // }
+        // else {
+
+        // }
+
+        // AdM.onSendEvent('duihuan_success', '兑换码-兑换成功', 'duihuan')
+    }
+}

+ 9 - 0
assets/script/game/module/redeem/RedeemNode.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "040b14d4-cc69-498f-9847-b44ffb8c6051",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/reward.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "54600f84-5300-4d80-a064-c2c6a53b2df8",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 172 - 0
assets/script/game/module/reward/Reward.ts

@@ -0,0 +1,172 @@
+import { AdFun } from "../../data/AdData";
+import { RewardType } from "../../data/GameData";
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 获取奖励界面-红包
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class Reward extends cc.Component {
+
+    @property({ displayName: '幸运红包', type: cc.Node })
+    private node_luck: cc.Node = null;
+    @property({ displayName: '通关红包', type: cc.Node })
+    private node_mission: cc.Node = null;
+    @property({ displayName: '开红包动画', type: cc.Animation })
+    private anim_open_redbag: cc.Animation = null;
+    @property({ displayName: '按钮看视频', type: cc.Button })
+    private btn_watch_video: cc.Button = null;
+    @property({ displayName: '红包图标', type: cc.Node })
+    private node_redBag: cc.Node = null;
+    @property({ displayName: '金猪图标', type: cc.Node })
+    private node_pig: cc.Node = null;
+    @property({ displayName: '奖励数量', type: cc.Label })
+    private lbl_reward_value: cc.Label = null;
+
+    // 底部提现相关
+    @property({ displayName: 'spr提现进度', type: cc.Sprite })
+    private spr_cash_out: cc.Sprite = null;
+    @property({ displayName: 'lbl提现进度', type: cc.Label })
+    private lbl_cash_out: cc.Label = null;
+    @property({ displayName: '提现金额', type: cc.Label })
+    private lbl_cash: cc.Label = null;
+
+
+
+    onLoad() {
+        this.lbl_reward_value.string = '0';
+    }
+
+    start() {
+        /** 盖子 */
+        this.initLid();
+    }
+
+    update(dt) {
+        if (gData.reward.init_luck_style) {
+            gData.reward.init_luck_style = null;
+            this.initLid();
+            return;
+        }
+        if (gData.reward.init_cash_style) {
+            gData.reward.init_cash_style = null;
+            this.initCashOutStyle();
+            return;
+        }
+        if (gData.reward.adData) {
+            // 展示奖励
+            this.watchVideoCall();
+            gData.reward.adData = null;
+            return;
+        }
+    }
+
+    /**
+     * 初始化封面样式
+     */
+    private initLid() {
+        if (gData.reward.lid_type === gData.reward.type_lid.none) {// 无盖子样式
+            this.node_luck.active = false;
+            this.node_mission.active = false;
+            this.watchVideoCall();
+            mk.audio.playEffect("rewardOpen");
+        } else if (gData.reward.lid_type === gData.reward.type_lid.luck) {
+            this.node_luck.active = false;
+            this.node_mission.active = true;
+            mk.audio.playEffect("reward");
+        } else if (gData.reward.lid_type === gData.reward.type_lid.mission) {
+            this.node_luck.active = false;
+            this.node_mission.active = true;
+            mk.audio.playEffect("reward");
+        }
+    }
+
+    /**
+     * 底部提现相关样式
+     */
+    private initCashOutStyle() {
+        const cash_bar = gData.redBagCash.cash_bar
+        let cash_data = gData.redBagCash.getItemDataByIndex(cash_bar)
+        
+        this.lbl_cash.string = cash_data.money + '元';
+        this.lbl_cash_out.string = gData.gameData.gameData.redMoney + '/' + cash_data.type_value;
+        this.spr_cash_out.fillRange = gData.gameData.gameData.redMoney / cash_data.type_value;
+    }
+
+    /**
+     * 看广告
+     */
+    private clickWatchVideo() {
+        cc.log('看广告请求');
+        if (gData.reward.data[0].rewardType === 1) {
+            gData.adData.watchVideo(AdFun.settlement)// 关卡结算视频
+        } else {
+            gData.adData.watchVideo(AdFun.bubble);// 气泡视频
+        }
+        // 测试数据
+        gData.reward.adData = gData.reward.data;
+    }
+
+    /**
+     * 看广告回调:开奖
+     */
+    private watchVideoCall() {
+        if (!gData.reward.data || !gData.reward.data.length) return;
+        // 数据排序:多条奖励,只展示红包,把红包放在首位
+        const r_count = gData.reward.data.length;
+        if (r_count >= 2) {
+            for (let i = 0; i < r_count; i++) {
+                if (gData.reward.data[i].rewardType === 1) {
+                    let new_data = gData.reward.data.splice(i, 1);
+                    gData.reward.data.unshift(new_data);
+                    break;
+                }
+            }
+        }
+
+        // 图标展示
+        if (gData.reward.data[0].rewardType === RewardType.redBag) {
+            this.node_redBag.active = true;
+            this.node_pig.active = false;
+        } else {
+            this.node_redBag.active = false;
+            this.node_pig.active = true;
+        }
+        let rewardNum = gData.reward.data[0].rewardNum || 0;
+        this.lbl_reward_value.string = `${rewardNum}`;
+
+        // 动画
+        this.anim_open_redbag.play();
+        this.node_luck.active = false;
+        this.node_mission.active = false;
+        this.btn_watch_video.node.active = false;
+    }
+
+    /**
+     * 获得奖励
+     */
+    private clickGetReward() {
+        cc.log('获取奖励:', gData.reward.data);
+        gData.reward.data = null;
+    }
+
+    /**
+     * 提现操作
+     */
+    private clickCashOut() {
+        cc.log('提现:');
+    }
+
+    /**
+     * 下一关操作
+     */
+    private clickNextMission() {
+
+    }
+
+    onDestroy(){
+        mk.audio.playEffect("rewardClose");
+    }
+
+}

+ 9 - 0
assets/script/game/module/reward/Reward.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "43f3a924-03bd-4703-be94-8538ff475f57",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/setting.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "2067fdd4-a52c-45b3-9dc3-a94e42184ebe",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 32 - 0
assets/script/game/module/setting/Rule.ts

@@ -0,0 +1,32 @@
+const { ccclass, property } = cc._decorator;
+
+/**
+ * 服务协议,隐私协议
+ * @author 邹勇
+ */
+@ccclass
+export default class Rule extends cc.Component {
+    @property({ type: cc.ScrollView, displayName: "滚动条" })
+    scrollView: cc.ScrollView = null;
+    @property({ type: cc.Label, displayName: "内容" })
+    lbl_content: cc.Label = null;
+    @property({ type: cc.Button, displayName: "关闭" })
+    btn_close: cc.Button = null;
+
+    onLoad() {
+
+    }
+
+    /**
+     * 
+     * @param type 0服务协议  1隐私协议
+     */
+    public setContent(type: string = "0") {
+        this.lbl_content.string = type == "0" ? "服务协议" : "隐私协议";
+        this.scrollView.scrollToTop();
+    }
+
+    private close() {
+        this.node.active = false;
+    }
+}

+ 9 - 0
assets/script/game/module/setting/Rule.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "3785c4fd-b740-4a33-bdc2-9077ce41d323",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 81 - 0
assets/script/game/module/setting/Setting.ts

@@ -0,0 +1,81 @@
+import JsbSystem from "../../../mk/system/JsbSystem";
+import Rule from "./Rule";
+
+
+const { ccclass, property } = cc._decorator;
+
+/**
+ * 账号设置
+ * @author 邹勇
+ */
+@ccclass
+export default class Setting extends cc.Component {
+    @property({ type: cc.Sprite, displayName: "头像" })
+    img_head: cc.Sprite = null;
+    @property({ type: cc.Label, displayName: "昵称" })
+    lbl_nickname: cc.Label = null;
+    @property({ type: cc.Label, displayName: "ID" })
+    lbl_id: cc.Label = null;
+    @property({ type: cc.Sprite, displayName: "音乐开关" })
+    img_music: cc.Sprite = null;
+    @property({ type: cc.Sprite, displayName: "音效开关" })
+    img_effect: cc.Sprite = null;
+    @property({ type: cc.Label, displayName: "版本号" })
+    lbl_version: cc.Label = null;
+    @property({ type: cc.Node, displayName: "协议内容" })
+    node_rule: cc.Node = null;
+
+    onLoad() {
+        this.initData();
+    }
+
+    private async initData() {
+        this.lbl_id.string = "ID:" + gData.wechatData.unionid;
+        this.lbl_nickname.string = gData.wechatData.nickName;
+        let music = "module/setting/texture/" + (mk.audio.getSwitchMusic() ? "on" : "off");
+        let effect = "module/setting/texture/" + (mk.audio.getSwitchEffect() ? "on" : "off");
+        this.img_music.spriteFrame = await mk.loader.load(music, cc.SpriteFrame);
+        this.img_effect.spriteFrame = await mk.loader.load(effect, cc.SpriteFrame);
+
+
+        let result = await mk.loader.loadRemote(gData.wechatData.avatar, null);
+        console.log("loadHead:", result);
+        // this.img_head.spriteFrame = result;
+    }
+
+    clickCopy() {
+        JsbSystem.setClipboard(gData.wechatData.unionid);
+    }
+
+    async clickMusic() {
+        mk.audio.switchMusicFunc();
+
+        let music = "module/setting/texture/" + (mk.audio.getSwitchMusic() ? "on" : "off");
+        this.img_music.spriteFrame = await mk.loader.load(music, cc.SpriteFrame);
+    }
+
+    async clickEffect() {
+        mk.audio.switchEffectFunc();
+
+        let effect = "module/setting/texture/" + (mk.audio.getSwitchEffect() ? "on" : "off");
+        this.img_effect.spriteFrame = await mk.loader.load(effect, cc.SpriteFrame);
+    }
+
+    clickUpdate() {
+
+    }
+
+    clickRule(e,data) {
+        let sc = this.node_rule.getComponent(Rule) as Rule;
+        sc.setContent(data);
+        this.node_rule.active = true;
+    }
+
+    update() {
+
+    }
+
+    onDestroy() {
+
+    }
+}

+ 9 - 0
assets/script/game/module/setting/Setting.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "6cec4f0a-dd7f-462b-a412-8eaa7b2169dc",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/sign.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "78c79a46-c440-4e5b-b8e4-f1a8aabb3092",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 99 - 0
assets/script/game/module/sign/Sign.ts

@@ -0,0 +1,99 @@
+import TableView from "../../component/TableView";
+import { AdFun } from "../../data/AdData";
+
+/**
+ * 签到界面
+ * - 每天第一次上线默认弹出一次【除首日】。待处理
+ * - 全部签完后,不可再签到。此处需要判断上次签到天数。
+ * - 滑动列表需要滚动到对应签到条目的高度,待处理。
+ * @author 薛鸿潇
+ */
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class Sign extends cc.Component {
+
+    @property({ type: cc.ScrollView, displayName: '滚动视图' })
+    private scroll_view: cc.ScrollView = null!;
+
+    @property({ type: cc.Animation, displayName: '按钮_动画' })
+    private anim_btn: cc.Animation = null!;
+
+    private tableview: TableView = null;
+    onLoad() {
+
+    }
+
+    start() {
+        // gData.sign.sign_can = gData.gameData.getProp(GameProp.sign_can);
+        gData.sign.initListData();
+        gData.sign.init_data = true;
+        this.initScollView();
+    }
+
+    /**
+     * 初始化滚动视图
+     */
+    private initScollView() {
+        let list_data = gData.sign.list_data;
+        this.scroll_view.node.emit('srollview-init', list_data)
+        this.tableview = this.scroll_view.node.getComponent('TableView')
+
+        let index = gData.sign.getItemIndexByCanSign();
+        this.tableview.contentMoveByIndex(index)
+    }
+
+
+    update(dt) {
+        if (gData.sign.init_data) {
+            gData.sign.init_data = false;
+            this.initBtnStyle();
+            return;
+        }
+        if (gData.sign.adData) {
+            // 展示奖励
+            this.getReward();
+            gData.sign.adData = null;
+        }
+    }
+
+    /**
+     * 点击领取按钮
+     */
+    private clickReceiveReward() {
+        if (!gData.sign.sign_can) return;
+        if (!gData.sign.haveSignDay()) return;
+
+        // 看广告
+        gData.adData.watchVideo(AdFun.sign);
+    }
+
+    /**
+     * 拿奖励
+     */
+    private getReward() {
+        let index_old = gData.sign.getItemIndexByCanSign();
+        // 完成展示
+        gData.sign.signComplete();
+
+        // 指定条目数据刷新
+        this.tableview.resetItemData(index_old, gData.sign.list_data[index_old]);
+
+        // 打开奖励界面
+        // to do
+    }
+
+    /**
+     * 初始化按钮样式
+     */
+    private initBtnStyle() {
+        if (gData.sign.sign_can && gData.sign.haveSignDay()) {
+            this.anim_btn.play();
+            this.anim_btn.getComponent('SetGray').setGray(false);
+        } else {
+            this.anim_btn.stop();
+            this.anim_btn.node.scale = 1;
+            this.anim_btn.getComponent('SetGray').setGray(true);
+        }
+    }
+}

+ 9 - 0
assets/script/game/module/sign/Sign.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "92c1ea44-48b8-4948-bac8-77d0e49fa59d",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 86 - 0
assets/script/game/module/sign/SignIconItem.ts

@@ -0,0 +1,86 @@
+import { RewardState, RewardType } from "../../data/GameData";
+import { CSignType } from "../../data/module/SignData";
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 签到icon组件
+ * @author 薛鸿潇
+ * - 红包icon:用红包样式
+ * - 现金、金猪现金:用提现样式
+ */
+@ccclass
+export default class SignIconItem extends cc.Component {
+    @property({ displayName: '提现样式', type: cc.Node })
+    private node_cash: cc.Node = null!;
+    @property({ displayName: '红包样式', type: cc.Node })
+    private node_redbag: cc.Node = null!;
+    @property({ displayName: '现金提示', type: cc.Node })
+    private node_money: cc.Node = null!;
+
+    @property({ displayName: '天数', type: cc.Label })
+    private lbl_day: cc.Label = null!;
+    @property({ displayName: '蒙版', type: cc.Node })
+    private node_mask: cc.Node = null!;
+    @property({ displayName: '勾', type: cc.Node })
+    private node_gou: cc.Node = null!;
+
+    /** 数据 */
+    private icon_data: CSignType = {
+        id: 0,
+        rewardType: 0,
+        rewardNum: 0,
+        loginDay: 0,
+        videoNum: 0
+    }
+
+    /**
+     * 初始化数据
+     */
+    public async setItemData(icon_data) {
+        await this.initIcon(icon_data);
+    }
+
+    /**
+     * 初始化icon
+     * @param icon_data 数据
+     */
+    private initIcon(icon_data) {
+        this.icon_data = icon_data;
+        if (!this.icon_data) {
+            this.node.active = false;
+            return
+        }
+        this.lbl_day.string = '第' + this.icon_data.loginDay + '天';
+        if (this.icon_data.rewardType == RewardType.rmb || this.icon_data.rewardType == RewardType.pigRmb) {
+            this.node_cash.active = true;
+            this.node_redbag.active = false;
+            this.lbl_day.node.getComponent(cc.LabelOutline).color = cc.color(DayOutLineColor.cash);
+        } else {
+            this.node_cash.active = false;
+            this.node_redbag.active = true;
+            this.lbl_day.node.getComponent(cc.LabelOutline).color = cc.color(DayOutLineColor.red_bag);
+        }
+
+        // 状态样式
+        let state = gData.sign.getStateByDay(this.icon_data.loginDay);
+        if (state == RewardState.none) {
+            this.node_mask.active = true;
+            this.node_gou.active = true;
+            this.node_money.active = false;
+        } else if (state == RewardState.unlock) {
+            this.node_mask.active = false;
+            this.node_gou.active = false;
+        } else if (state == RewardState.lock) {
+            this.node_mask.active = false;
+            this.node_gou.active = false;
+        }
+    }
+}
+
+/** 天数描边 */
+enum DayOutLineColor {
+    /** 红包 */
+    red_bag = '#EB3A0E' as any,
+    /** 提现 */
+    cash = '#2AB718' as any,
+}

+ 9 - 0
assets/script/game/module/sign/SignIconItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "233bf8b8-4bf1-4749-82b2-7a4920316d19",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 52 - 0
assets/script/game/module/sign/SignItem.ts

@@ -0,0 +1,52 @@
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 签到条目 数据分发
+ * @author 薛鸿潇
+ */
+@ccclass
+export default class NewClass extends cc.Component {
+
+    @property({ type: cc.Node, displayName: '位置组件' })
+    private sign_icon_pos: cc.Node[] = [];
+    @property({ type: cc.Prefab })
+    private pre_icon: cc.Prefab = null!;;
+
+    /** icon节点容器 */
+    private arr_icon: Array<cc.Node> = [];
+    onLoad() {
+
+    }
+
+    start() {
+    }
+    /**
+     * list_data
+     * @param list_data 数据列表
+     */
+    public async setItemData(list_data) {
+        await this.initItem(list_data);
+    }
+
+    /**
+     * 数据分发
+     * @param list_data 数据列表
+     */
+    private initItem(list_data) {
+        const n_count = this.sign_icon_pos.length;
+        for (let i = 0; i < n_count; i++) {
+            let item_data = list_data[i];
+            let icon_item = this.arr_icon[i];
+            if (!icon_item) {
+                icon_item = cc.instantiate(this.pre_icon)
+                icon_item.parent = this.node;
+                icon_item.setPosition(this.sign_icon_pos[i].getPosition());
+                this.arr_icon[i] = icon_item;
+            }
+
+            let comp_info = icon_item.getComponent('SignIconItem');
+            comp_info.setItemData(item_data);
+        }
+    }
+    // update (dt) {}
+}

+ 9 - 0
assets/script/game/module/sign/SignItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "64cb2b40-0a12-4ccb-99ae-4b177b3e2e2b",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/script/game/module/turntable.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "1981eae6-9fb7-4427-be8b-541d0c471ab4",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 92 - 0
assets/script/game/module/turntable/Turnable.ts

@@ -0,0 +1,92 @@
+import BtnClosePanel from "../../component/BtnClosePanel";
+import { AdFun } from "../../data/AdData";
+import TurnableItem from "./TurnableItem";
+
+const { ccclass, property } = cc._decorator;
+/**
+ * 转盘
+ * @author 邹勇
+ */
+@ccclass
+export default class Turnable extends cc.Component {
+    @property(cc.Node)
+    node_turn: cc.Node = null;
+    @property(cc.Node)
+    node_items: cc.Node[] = [];
+    @property(cc.Node)
+    btn_draw: cc.Node = null;
+    @property(cc.Sprite)
+    btn_close: cc.Sprite = null;
+    @property(cc.RichText)
+    lbl_left: cc.RichText = null;
+
+    private audioId: number;
+
+    onLoad() {
+        this.initData();
+    }
+
+    /**
+     * 初始化奖励和抽奖次数
+     */
+    private initData() {
+        if (gData.turnable.config) {
+            for (let i = 0; i < gData.turnable.config.length; i++) {
+                let sc = this.node_items[i].getComponent(TurnableItem);
+                sc.initData(gData.turnable.config[i].type);
+            }
+        }
+        gData.turnable.requestData();
+        this.updateLeftTimes();
+    }
+
+    /** 点击抽奖 */
+    clickDraw() {
+        if (gData.turnable.leftTimes > 0) {
+            mk.ad.watchAd((success: boolean) => {
+                mk.console.log("watchAD:" + success);
+                if (success) {
+                    gData.adData.watchVideo(AdFun.turntable);
+                }
+            });
+        }
+    }
+
+    private async play() {
+        this.audioId = await mk.audio.playEffect("turnableplay", true);
+        this.btn_close.getComponent(BtnClosePanel).block_click = true;
+        this.node_turn.angle = 1800;
+        let index = 2;
+        let tar = index * 60;
+        cc.tween(this.node_turn)
+            .to(5, { angle: tar }, { easing: 'expoInOut' })
+            .call(this.playOver, this).start();
+    }
+
+    private playOver() {
+        mk.audio.stopEffect(this.audioId);
+        this.btn_close.getComponent(BtnClosePanel).block_click = false;
+        this.updateLeftTimes();
+        mk.ui.openPanel("module/reward/reward");
+    }
+
+    updateLeftTimes() {
+        this.lbl_left.string = `剩余:<color=#FFED99>${gData.turnable.leftTimes}</color>次`;
+    }
+
+    update() {
+        if (gData.turnable.requestFinish) {
+            this.updateLeftTimes();
+            gData.turnable.requestFinish = false;
+        }
+        if (gData.turnable.adData) {
+            this.play();
+            gData.reward.data = gData.turnable.adData;
+            gData.turnable.adData = null;
+        }
+    }
+
+    onDestroy() {
+
+    }
+}

+ 9 - 0
assets/script/game/module/turntable/Turnable.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "c59724a2-e07d-4c32-9eee-8277deaeaefb",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 16 - 0
assets/script/game/module/turntable/TurnableItem.ts

@@ -0,0 +1,16 @@
+const { ccclass, property } = cc._decorator;
+
+@ccclass
+export default class TurnableItem extends cc.Component {
+    @property(cc.Sprite)
+    icon: cc.Sprite = null;
+    @property(cc.Label)
+    lbl_name: cc.Label = null;
+
+
+    public async initData(type) {
+        this.icon.spriteFrame = await mk.loader.load('module/turnable/texture/hb' + type, cc.SpriteFrame);
+        this.lbl_name.string = type == "1" ? "少量红包" : type == "2" ? "中量红包" : "大量红包";
+    }
+
+}

+ 9 - 0
assets/script/game/module/turntable/TurnableItem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "2df9fa52-585d-46d5-afe8-b3612fef3e58",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}