import GameModel from "../ts/core/GameModel"; import AudioUtil from "../ts/core/AudioUtil"; import MsgAlert from "../ts/game/msg/MsgAlert"; let GameDefine = require('../game/GameDefine'); let schemeArgs = require('./SchemeArgs'); cc.Class({ extends: cc.Component, properties: { scrollViewContent: cc.Node, scrollViewCategoryContent: cc.Node, sp_active:cc.Node, schemeItem: cc.Prefab, equipsPanel: cc.Node, propertyPanel: cc.Node, defendPanel: cc.Node, partnerPanel: cc.Node, btnCreateScheme: cc.Button, createSchemePanel: cc.Node, createSchemeNameBox: cc.EditBox, useSchemePanel: cc.Node, categorys: [cc.Node], lblNoScheme: cc.Label, btnActive: cc.Button }, onLoad() { this.modifySchemeName = ''; this.operate = 0; //0,新建,1,修改 this.initView(); }, start(){ this.activateSchemeId = -1; }, initView(){ this.categorys.forEach((e,index) =>{ switch(index){ case 0: e.comName = 'SchemeEquipsPanel'; break; case 1: e.comName = 'SchemePropertyPanel'; break; case 2: e.comName = 'SchemeDefendPanel'; break; case 3: e.comName = 'SchemePartnerPanel'; break; } }); }, // initSchemeList(data){ this.schemeList = []; this.schemeList = JSON.parse(data.schemeList); this.scrollViewContent.destroyAllChildren(); if(this.schemeList && this.schemeList.length == 0){ this.lblNoScheme.node.active = true; this.scrollViewCategoryContent.active = false; }else{ this.lblNoScheme.node.active = false; this.scrollViewCategoryContent.active = true; } this.schemeList.forEach((e,i) =>{ let schemeItem = cc.instantiate(this.schemeItem); if(schemeItem){ if(e.status == 1){ this.activateSchemeId = e.schemeId; } schemeItem.schemeId = e.schemeId; schemeItem.name = e.schemeName; let lblSchemeName = schemeItem.getChildByName('LblSchemeName'); if(lblSchemeName){ lblSchemeName.getComponent(cc.Label).string = e.schemeName; } var toggle = schemeItem.getChildByName('btnToggle').getComponent(cc.Toggle); let btnModify = schemeItem.getChildByName('btn_modify').getComponent(cc.Button); if(toggle && btnModify){ toggle.schemeId = e.schemeId; if(i == 0){ toggle.isChecked = true; this.selectSchemeId = schemeItem.schemeId; schemeArgs.schemeId = this.selectSchemeId; } var checkEventHandler = new cc.Component.EventHandler(); checkEventHandler.target = this; checkEventHandler.component = "SchemeListPanel"; checkEventHandler.handler = "onSelectScheme"; checkEventHandler.customEventData = schemeItem.schemeId; toggle.checkEvents.push(checkEventHandler); var clickModifyEventHandler = new cc.Component.EventHandler(); clickModifyEventHandler.target = this.node; clickModifyEventHandler.component = "SchemeListPanel"; clickModifyEventHandler.handler = "onClickSchemeModify"; clickModifyEventHandler.customEventData = schemeItem.schemeId; btnModify.clickEvents.push(clickModifyEventHandler); if(e.status == 1){ schemeItem.getChildByName('icon_activation').active = true; this.activateSchemeId = e.schemeId; this.btnActive.node.active = false; this.sp_active.active = true; }else if(e.status == -1){ // btnModify.interactable = false; toggle.interactable = false; var clickBtnEventHandler = new cc.Component.EventHandler(); clickBtnEventHandler.target = this.node; //這個 node 節點是你的事件處理代碼組件所屬的節點 clickBtnEventHandler.component = "SchemeListPanel";//這個是代碼文件名 clickBtnEventHandler.handler = "onClickedShowUseScheme"; clickBtnEventHandler.customEventData = schemeItem.schemeId; let node_disabled = schemeItem.getChildByName('node_disabled'); node_disabled.active = true; let button = node_disabled.getComponent(cc.Button); button.clickEvents.push(clickBtnEventHandler); } } schemeItem.parent = this.scrollViewContent; } }); if(this.schemeList.length > 0){ //請求第一個屬性方案詳情 GameModel.player.send('c2s_scheme_info',{ roleId: GameModel.player.roleid, schemeId: this.selectSchemeId.toString() }); } //this.scrollViewContent.height = Math.max(this.scrollViewContent.height, this.schemeItem.length * 30); }, useScheme(data){ let children = this.scrollViewContent.getChildren(); children.forEach((e,index) =>{ if(e.schemeId == data.schemeId){ let toggle = e.getChildByName('btnToggle').getComponent(cc.Toggle); toggle.interactable = true; e.getChildByName('node_disabled').active = false; let btnModify = e.getChildByName('btn_modify').getComponent(cc.Button); btnModify.interactable = true; } }); }, appendSchemeList(data){ let newScheme = JSON.parse(data.newSchemeInfo); let schemeItem = cc.instantiate(this.schemeItem); if(schemeItem){ let lblSchemeName = schemeItem.getChildByName('LblSchemeName'); if(lblSchemeName){ lblSchemeName.getComponent(cc.Label).string = newScheme.schemeName; } if(newScheme.status == 1){ schemeItem.getChildByName('icon_activation').active = true; } var toggle = schemeItem.getComponent(cc.Toggle); let btnModify = schemeItem.getChildByName('btn_modify').getComponent(cc.Button); if(toggle && btnModify){ toggle.schemeId = newScheme.schemeId; toggle.isChecked = true; var checkEventHandler = new cc.Component.EventHandler(); checkEventHandler.target = this; checkEventHandler.component = "SchemeListPanel"; checkEventHandler.handler = "onSelectScheme"; checkEventHandler.customEventData = newScheme.schemeId; toggle.checkEvents.push(checkEventHandler); var clickEventHandler = new cc.Component.EventHandler(); clickEventHandler.target = this.node; clickEventHandler.component = "SchemeListPanel"; clickEventHandler.handler = "onClickSchemeModify"; clickEventHandler.customEventData = newScheme.schemeId; btnModify.clickEvents.push(clickEventHandler); if(newScheme.status == 1){ schemeItem.getChildByName('icon_activation').active = true; this.activateSchemeId = newScheme.schemeId; }else if(newScheme.status == -1){ schemeItem.getChildByName('node_disable').active = true; btnModify.interactable = false; toggle.enabled = false; schemeItem.getComponent(cc.Button).interactable = true; } } schemeItem.parent = this.scrollViewContent; this.selectSchemeId = newScheme.schemeId; this.onSelectScheme(null,this.selectSchemeId); this.createSchemePanel.active = false; this.lblNoScheme.node.active = false; this.scrollViewCategoryContent.active = true; } }, showCreateSchemePanel(e,d){ if(d){ this.operate = Number(d); } if(this.operate == 1 && this.modifySchemeName != ''){ this.createSchemeNameBox.string = this.modifySchemeName; }else{ this.createSchemeNameBox.string = ''; } this.createSchemePanel.active = true; }, onClickSchemeModify(e,d){ this.modifySchemeId = Number(d); this.modifySchemeName = e.target.parent.getChildByName('LblSchemeName').getComponent(cc.Label).string; this.operate = 1; this.showCreateSchemePanel(); }, onClickedShowUseScheme(e,d){ if(GameModel.player.gameData.money < GameDefine.schemeUseMoney){ MsgAlert.addMsg(`激活方案需要消耗${GameDefine.schemeUseMoney}銀兩,銀兩不足!`); return; } this.useSchemeId = Number(d); this.useSchemePanel.active = true; }, onClickedUseScheme(e,d){ GameModel.player.send('c2s_scheme_use',{ roleId: GameModel.player.roleid, schemeId: this.useSchemeId.toString() }); }, onClickCancelUseScheme(e,d){ AudioUtil.playCloseAudio(); this.useSchemePanel.active = false; }, onSelectScheme(e,d){ let children = this.scrollViewContent.getChildren(); children.forEach((i,index) =>{ let toggle = i.getChildByName('btnToggle').getComponent(cc.Toggle); toggle.isChecked = e.node.parent.schemeId == i.schemeId; }); this.selectSchemeId = Number(d); schemeArgs.schemeId = this.selectSchemeId; GameModel.player.send('c2s_scheme_info',{ roleId: GameModel.player.roleid, schemeId: this.selectSchemeId.toString() }); this.onClickedCategoryToggle(null,0); }, onClickCreateScheme(e,d){ if (this.createSchemeNameBox.string == '' || this.createSchemeNameBox.string.length > 6){ MsgAlert.addMsg('名稱不能為空,並且最多6個字'); return; } if(this.operate == 0){ GameModel.player.send('c2s_scheme_create', { roleId: GameModel.player.roleid, name: this.createSchemeNameBox.string, }); }else{ GameModel.player.send('c2s_scheme_changeName', { roleId: GameModel.player.roleid, schemeId: this.modifySchemeId, name: this.createSchemeNameBox.string, }); } this.btnCreateScheme.interactable = false; this.btnCreateScheme.node.runAction(cc.sequence(cc.delayTime(1),cc.callFunc(() =>{ this.btnCreateScheme.interactable = true; }))); }, onClickCancelCreateScheme(e,d){ AudioUtil.playCloseAudio(); this.createSchemePanel.active = false; }, onClickedBtnActivate(e,d){ if(GameModel.player.gameData.money < GameDefine.schemeActiveMoney){ MsgAlert.addMsg(`銀兩不足,激活方案需${GameDefine.schemeActiveMoney}銀兩!`); return; } GameModel.player.send('c2s_scheme_activate',{ roleId: GameModel.player.roleid, schemeId: this.selectSchemeId.toString() }); this.sp_active.active = true; this.btnActive.node.active = false; }, onActivateScheme(data){ let children = this.scrollViewContent.getChildren(); children.forEach((e,index) =>{ if(e.schemeId == data.schemeId){ e.getChildByName('icon_activation').active = true; }else{ e.getChildByName('icon_activation').active = false; } }); }, setSchemeInfo(data){ data = JSON.parse(data.schemeInfo); this.categorys.forEach((e,index) =>{ let logic = e.getComponent(e.comName); if(logic){ logic.loadInfo(data); } e.active = index == 0 ? true : false; }); if(data.status == 1){ this.sp_active.active = true; this.btnActive.node.active = false; }else{ this.sp_active.active = false; this.btnActive.node.active = true; } }, setSchemeName(data){ let children = this.scrollViewContent.getChildren(); children.forEach((e,index) =>{ if(e.schemeId == data.schemeId){ let lblSchemeName = e.getChildByName('LblSchemeName'); if(lblSchemeName){ lblSchemeName.getComponent(cc.Label).string = data.newName; } } }); }, onClickedCategoryToggle(e,d){ this.categorys.forEach((m,index)=>{ if(index == Number(d)){ m.active = true; }else{ m.active = false; } }); let toggleList = this.scrollViewCategoryContent.getChildren(); toggleList.forEach(n =>{ n.getChildByName('toggleLabel').color = new cc.Color(114,16,18); if(!e){ n.getComponent(cc.Toggle).isChecked = false; if(n.name == 'toggle1'){ n.getChildByName('toggleLabel').color = cc.Color.WHITE; n.getComponent(cc.Toggle).isChecked = true; } } }); if(e) e.node.getChildByName('toggleLabel').color = cc.Color.WHITE; } });