import GameModel from "../ts/core/GameModel"; import ItemUtil from "../ts/core/ItemUtil"; import AudioUtil from "../ts/core/AudioUtil"; import SKDataUtil from "../ts/gear_2.3.4/util/SKDataUtil"; import SKUIUtil from "../ts/gear_2.3.4/util/SKUIUtil"; import GameUtil from "../ts/core/GameUtil"; import MsgAlert from "../ts/game/msg/MsgAlert"; let CPubFunction = require('./PubFunction'); let CNpcMgr = require('./NpcMgr'); cc.Class({ extends: cc.Component, properties: { ActiveDetailUI: cc.Prefab, }, onLoad() { this.vecPrize = [ { 90002: 0, 900002: 0, 10404: 1 }, // 幫派任務獎勵 { 90002: 0, 900002: 0, 10404: 1 }, // 師門任務獎勵 { 90004: 0 }, // 五環任務獎勵 { 90002: 0, 900002: 0, 10404: 1 }, // 鍾馗抓鬼獎勵 { 90002: 0, 900002: 0, 10404: 1 }, // 天庭降妖獎勵 { 10301: 1, 10302: 1, 10303: 0 }, // 寶圖任務獎勵 { 90002: 0, 900002: 0, 10102: 1, 10103: 1 }, // 大雁塔獎勵 { 90002: 0, 900002: 0, 10120: 1, 10404: 1 }, // 尋芳獎勵 { 90002: 0, 900002: 0, 10120: 1, 10103: 1 }, // 地宮獎勵 { 90002: 0, 900002: 0, 10404: 1, 10301: 1, 10302: 1, 10303: 0 }, // 野外封妖獎勵 { 90002: 0, 900002: 0, 10404: 1, 50004: 1 }, //三界妖王獎勵 { 90002: 0, 900002: 0, 50004: 1 }, // 地煞星獎勵 { 90002: 0, 900002: 0, 10301: 1, 10302: 1, 10303: 0, 50004: 1, 90004: 1 }, // 鎮壓心魔獎勵 { 90002: 0, 900002: 0, 10404: 1, 10301: 1, 10302: 1, 10303: 0, 67292: 1 }, // 魔王窟獎勵 { 90002: 0, 900002: 0, 10404: 1 }, // 修羅出沒獎勵 { 90002: 0, 900002: 0, 10301: 1, 10302: 1, 10303: 0, 50004: 1, 90004: 1 }, // 八卦降魔獎勵 { 90002: 0, 10204: 0, 10401: 0 }, // 競技場獎勵 //{ 90002: 0, 10204: 0, 10401: 0 }, // 天元盛典獎勵 { 90002: 0, 900002: 0, 67292: 1,90004: 0 ,50033: 0}, //天星獎勵 { 90002: 0,900002: 0 }, //文曲星 { 90002: 0, 90088: 0, 900002: 0, 67293: 0}, //證道大會 { 90002: 0, 900002: 0, 50023: 0, 67293: 0} //海盜入侵 ]; this.vecBtnEvent = []; this.vecBtnPrize = [0, 0, 0, 0, 0, 0]; this.mapDailyStart = {}; this.mapFuBenCnt = {}; }, start() { let node = cc.find('btnClose', this.node); if (SKUIUtil.isValid(node)) { node.getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "DailyUI", "Close", 0)); } else { cc.warn(`$警告:活動面板btnClose節點無效`); } let goContent = cc.find(`ScrollView/view/content`, this.node); for (let i = 0; i <= 20; i++) { this.vecBtnEvent.push(goContent.children[i]); let iconNode = cc.find("nodItemInfo/Icon", this.vecBtnEvent[i]); if (iconNode) { let sprite = iconNode.getComponent(cc.Sprite); if (sprite) { let conf = GameUtil.getDailyData(i + 1); if (conf) { sprite.spriteFrame = ItemUtil.getItemIcon(conf.icon); } } } let node = this.vecBtnEvent[i]; if (SKUIUtil.isValid(node)) { let button = node.getComponent(cc.Button); if (button) { button.clickEvents.push(CPubFunction.CreateEventHandler(this.node, "DailyUI", "OnDailyEvent", i)); } } } for (let i = 0; i <= 20; i++) { if (i == 11||i == 17||i == 18) continue; cc.find(`btnGo`, this.vecBtnEvent[i]).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "DailyUI", "OnGo", i)); } // cc.find(`btnGo`, this.vecBtnEvent[12]).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "DailyUI", "OnGo", 12)); // cc.find(`btnGo`, this.vecBtnEvent[13]).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "DailyUI", "OnGo", 13)); // cc.find(`btnGo`, this.vecBtnEvent[14]).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "DailyUI", "OnGo", 14)); // cc.find(`btnGo`, this.vecBtnEvent[15]).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "DailyUI", "OnGo", 15)); let nodPrize = cc.find('nodPrize', this.node); for (let i = 0; i < 6; i++) { this.vecBtnPrize[i] = nodPrize.children[i]; this.vecBtnPrize[i].getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "DailyUI", "TakeActivePrize", i)); } GameModel.send('c2s_ask_daily_info', {}); this.SetMoneyInfo(); }, TakeActivePrize(stEvetn, nIndex) { if (stEvetn.target.children[3].active == true) return; if (CPubFunction.GetMapSum(this.mapActiveScore) < (nIndex + 1) * 20) return; GameModel.send('c2s_take_active_prize', { nIndex: nIndex }); }, OnReceiveDailyInfo(strJson) { let stData = SKDataUtil.jsonBy(strJson); console.log(stData) this.mapActiveScore = stData.mapActiveScore; // 活躍度進度條 cc.find('nodPrize/nodExp/picText/picBar', this.node).width = Math.min(CPubFunction.GetMapSum(this.mapActiveScore) / 140, 1) * 680; // 每日活躍度足夠後的6個獎勵內容是否領取的對勾 for (let i = 0; i < 6; i++) { let item = this.vecBtnPrize[i]; if (item && item.children && item.children.length >= 3) { let node = item.children[3]; if (node) { node.active = parseInt(stData.szBeenTake[i]); } else { cc.warn(`$警告:每日限購節點無效!`); } } else { cc.warn(`$警告:每日限購節點無效!`); } } // 每日活躍度足夠後的6個獎勵內容 for (let i = 0; i < 6; i++) { let vecTmp = stData.szActivePrize[i].split(","); this.SetPrizesInfo(this.vecBtnPrize[i], parseInt(vecTmp[0]), parseInt(vecTmp[1])); } this.mapDailyStart = stData.mapDailyStart; this.mapDailyCnt = stData.mapDailyCnt; this.mapFuBenCnt = stData.mapFuBenCnt; let vecKind = [{ group: 2, cnt: 20, active: 20 }, { group: 3, cnt: 20, active: 20 }, { group: 5, cnt: 5, active: 5 }, { group: 6, cnt: 120, active: 60 }, { group: 7, cnt: 20, active: 20 }, { group: 4, cnt: 15, active: 15 }, { group: 17, cnt: 20, active: 15 }]; for (let nIndex = 0; nIndex <= 5; nIndex++) { let stDaily = vecKind[nIndex]; let nCurCnt = CPubFunction.GetDefault(this.mapDailyCnt[stDaily.group], 0); let countNode = cc.find("labCnt", this.vecBtnEvent[nIndex]); if (SKUIUtil.isValid(countNode)) { let countLabel = countNode.getComponent(cc.Label); if (countLabel) { countLabel.string = `日次數:${nCurCnt}/${stDaily.cnt}`; } } let nCurActive = CPubFunction.GetDefault(this.mapActiveScore[stDaily.group], 0); let activeNode = cc.find(`labActive`, this.vecBtnEvent[nIndex]); if (SKUIUtil.isValid(activeNode)) { let activeLabel = activeNode.getComponent(cc.Label); if (activeLabel) { activeLabel.string = `活躍度:${Math.floor(nCurActive)}/${stDaily.active}`; } } } let vecFuBen = [{ taskid: 1001, active: 21 }, { taskid: 1002, active: 14 }, { taskid: 1004, active: 12 }]; for (let nIndex2 = 0; nIndex2 <= 2; nIndex2++) { let nBtnIndex = 6 + nIndex2; let stFuBen = vecFuBen[nIndex2]; let nCurActive = 0; if (nBtnIndex == 8) //地宮 { let nCur = this.IsAllReadyInceptFuBenTask(1004) + this.IsAllReadyInceptFuBenTask(1005) + this.IsAllReadyInceptFuBenTask(1006); cc.find(`labCnt`, this.vecBtnEvent[nBtnIndex]).getComponent(cc.Label).string = `日次數:${nCur}/3`; nCurActive = CPubFunction.GetDefault(this.mapActiveScore[1004], 0) + CPubFunction.GetDefault(this.mapActiveScore[1005], 0) + CPubFunction.GetDefault(this.mapActiveScore[1006], 0); } else { cc.find(`labCnt`, this.vecBtnEvent[nBtnIndex]).getComponent(cc.Label).string = `日次數:${this.IsAllReadyInceptFuBenTask(stFuBen.taskid)}/1`; nCurActive = CPubFunction.GetDefault(this.mapActiveScore[stFuBen.taskid], 0); } cc.find(`labActive`, this.vecBtnEvent[nBtnIndex]).getComponent(cc.Label).string = `活躍度:${nCurActive}/${stFuBen.active}`; } // 新增競技場活躍度顯示 let arena = { group: 16, cnt: 10, active: 20 } let nCurCnt = CPubFunction.GetDefault(this.mapDailyCnt[arena.group], 0); let countNode = cc.find("labCnt", this.vecBtnEvent[16]); if (SKUIUtil.isValid(countNode)) { let countLabel = countNode.getComponent(cc.Label); if (countLabel) { countLabel.string = `日次數:${nCurCnt}/${arena.cnt}`; } } let nCurActive = CPubFunction.GetDefault(this.mapActiveScore[arena.group], 0); let activeNode = cc.find(`labActive`, this.vecBtnEvent[16]); if (SKUIUtil.isValid(activeNode)) { let activeLabel = activeNode.getComponent(cc.Label); if (activeLabel) { activeLabel.string = `活躍度:${Math.floor(nCurActive)}/${arena.active}`; } } }, IsAllReadyInceptDailyTask(nTeam) { return SKDataUtil.hasProperty(this.mapDailyStart, nTeam); }, IsAllReadyInceptFuBenTask(nTask) { if (SKDataUtil.hasProperty(this.mapFuBenCnt, nTask)) return 1; return 0; }, SetPrizesInfo(goItem, nItem, nNum) { let stConfigInfo = ItemUtil.getItemData(nItem); cc.find('Icon', goItem).getComponent(cc.Sprite).spriteFrame = ItemUtil.getItemIcon(stConfigInfo.icon); cc.find('txLap', goItem).getComponent(cc.Label).string = SKDataUtil.transform(nNum); }, SetMoneyInfo() { // cc.find('layMoney/yinliang/ui_common_icon_yinliang/yinliangLabel', this.node).getComponent(cc.Label).string = GameModel.player.gameData.money; // cc.find('layMoney/xianyu/ui_common_icon_xianyu/xianyuLabel', this.node).getComponent(cc.Label).string = GameModel.player.gameData.jade; let topnode = cc.find('topInfo', this.node); let toplogic = topnode.getComponent('TopInfo'); toplogic.updateGameMoney(); }, CloseAndClickNpc(nNpc) { let stPos = CNpcMgr.GetNpcPos(nNpc); GameUtil.myPlayerToDo(stPos.nMap, stPos.nX, stPos.nY, () => { let temp = CNpcMgr.FindNpcByConfigID(nNpc); if (temp) { let npc = temp.getComponent("Npc"); npc.OnNpcClick(); } }); }, OnDailyEvent(e, i) { CPubFunction.FindAndDeleteNode(this.node, "ActiveDetailUI"); let goActiveDetailUI = SKUIUtil.createSubNode(this.node, cc.v2(-200, 215), this.ActiveDetailUI, 'ActiveDetailUI'); let conf = GameUtil.getDailyData(i + 1); if (conf == null) { return; } let desc = conf.desc; desc = desc.replace(/\\n/g, "\n"); let title = conf.name; let prize = SKDataUtil.getItemByList(this.vecPrize, i); let detail = goActiveDetailUI.getComponent('ActiveDetailUI'); if (detail) { detail.loadInfo(title, desc, prize); } }, OnGo(e, d) { if (d == 0) //幫派任務 { if (GameModel.player.bangid != 0) this.CloseAndClickNpc(10054); else MsgAlert.addMsg("請先加入幫派") } if (d == 1) //師門任務 { if (GameModel.player.race == 1) this.CloseAndClickNpc(30062); if (GameModel.player.race == 2) this.CloseAndClickNpc(10118); if (GameModel.player.race == 3) this.CloseAndClickNpc(30063); if (GameModel.player.race == 4) this.CloseAndClickNpc(30065); if (GameModel.player.race == 5) this.CloseAndClickNpc(70006); } if (d == 2) // 五環 { this.CloseAndClickNpc(10080); } if (d == 3) //鍾馗抓鬼 { this.CloseAndClickNpc(10112); } if (d == 4) //天庭降妖 { this.CloseAndClickNpc(10221); } if (d == 5) //寶圖 { this.CloseAndClickNpc(10013); } if (d == 6) //大雁塔 { this.CloseAndClickNpc(10062); } if (d == 7) //尋芳 { this.CloseAndClickNpc(10058); } if (d == 8) //地宮 { this.CloseAndClickNpc(10051); } if (d == 9) //野外封妖 { d; } if (d == 10) //三界妖王 { d; } if (d == 12) { this.CloseAndClickNpc(70004); } if (d == 13) { this.CloseAndClickNpc(80015); } if (d == 14) { this.CloseAndClickNpc(30138); } if (d == 15) { this.CloseAndClickNpc(70003); } if (d == 16) { this.CloseAndClickNpc(10240); } if (d == 19) { this.CloseAndClickNpc(60005); } }, Close() { AudioUtil.playCloseAudio(); this.node.destroy(); }, });