SamsaraGame/assets/Script/panel/SchemeListPanel.js
2025-04-24 17:03:28 +08:00

414 lines
11 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
});