Files
fc/dev/project/library/imports/f6/f6093452-cfd8-4dd4-861f-c543f7b7bd5f.js
2026-05-24 10:21:26 +08:00

2808 lines
106 KiB
JavaScript

"use strict";
cc._RF.push(module, 'f6093RSz9hN1IYfxUP3t71f', 'cmp.battledrama.form');
// Scripts/mod/battle_drama/cmp/form/cmp.battledrama.form.js
"use strict";
var PathTool = require("pathtool");
var PartnerConst = require("partner_const");
var HeroConst = require("hero_const");
var HeroEvent = require("hero_event");
var PlanesafkController = require("planesafk_controller");
var HeavenEvent = require('heaven_event');
var PlanesafkEvent = require("planesafk_event");
var ElitematchEvent = require("elitematch_event");
var HeavenController = require("heaven_controller");
var ElitematchController = require("pvprank.mod");
var ElitematchConst = require("elitematch_const");
var GuildsecretareaController = require("guildsecretarea_controller");
var ElfinController = require("elfin_controller");
var ElfinEvent = require("elfin_event");
var HeroControl = require("hero_controller");
var BattleController = require("battle_controller");
var BCS = require("battle_const");
var ActEncounter = require("act.heronewchal.mod");
var GuildbossController = require("guildboss_controller");
var ElementController = require("element_controller");
var CampfightMod = require("campfight.mod");
var CampfightConst = require("campfight.const");
var GuildBatEvt = require("guildwar_event");
var StartowerController = require("startower.mod");
var BattleDramaController = require("battle_drama_controller");
var FxSVC = require("nx.fx.sv.expand");
// const BridgeWindow = require( "bridge.window" );
var FxTogs = require("nx.fx.togs");
var HCT = HeroConst.CampType;
var LadderController = require("ladder_controller");
var HeroVo = require("hero_vo");
var ArenaController = require("arena_controller");
var NxSpine = require("nx.fx.spine");
var BridgeComp = require("bridge.component");
var BattleDramaEvent = require("battle_drama_event");
cc.Class({
"extends": BridgeComp,
properties: {
togCamp: {
"default": null,
type: FxTogs,
displayName: "切换阵营英雄"
},
top_con: {
"default": null,
type: cc.Node
},
svcList: {
"default": null,
type: FxSVC
},
togArmy: {
"default": null,
type: FxTogs,
displayName: "切换战斗队伍"
},
togs: {
"default": [],
type: [cc.Node]
},
team_btns: {
"default": null,
type: cc.Node
},
hero_main: {
"default": null,
type: cc.Node
},
table_main: {
"default": null,
type: cc.Node
},
fabItemForm: {
"default": null,
type: cc.Prefab
},
select_btn: {
"default": null,
type: cc.Node
},
elfin_btn: {
"default": null,
type: cc.Node
},
fight_btn: {
"default": null,
type: cc.Node
},
save_btn: {
"default": null,
type: cc.Node
},
halo_btn: {
"default": null,
type: cc.Node
},
formation_btn: {
"default": null,
type: cc.Node
},
key_up_btn: {
"default": null,
type: cc.Node
},
hallow_btn: {
"default": null,
type: cc.Node
},
hallows_icon: {
"default": null,
type: cc.Sprite
},
down_time: {
"default": null,
type: cc.Label
},
powerNd: {
"default": null,
type: cc.Node
},
fight_label: {
"default": null,
type: cc.Label
},
move_node: {
"default": null,
type: cc.Node
},
move_circle_sk: {
"default": null,
type: NxSpine
}
},
// LIFE-CYCLE CALLBACKS:
onLoad: function onLoad() {
var _this$nine_position;
this.old_cfg = null;
this.partners = [];
this.cur_select_class = 0;
this.cur_tab_data = {};
//四個空白
this.four_blank_item_list = {};
//英雄對像位置的矩形區域
// this.pos_rect_list = {}
this.cur_power = 0;
//9個位置
this.all_pos_list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
this.nine_position = (_this$nine_position = {}, _this$nine_position[1] = cc.v2(221, 130), _this$nine_position[2] = cc.v2(176, 0), _this$nine_position[3] = cc.v2(141, -130), _this$nine_position[4] = cc.v2(41, 130), _this$nine_position[5] = cc.v2(-4, 0), _this$nine_position[6] = cc.v2(-39, -130), _this$nine_position[7] = cc.v2(-139, 130), _this$nine_position[8] = cc.v2(-184, 0), _this$nine_position[9] = cc.v2(-219, -130), _this$nine_position);
//[[陣型位置
// 7 4 1
// 8 5 2
// 9 6 3
// ]]
//formations 是 25605 協議下 formations 的結構體.
//用於劇情保存陣容下 多隊伍的數據 this.dic_more_team_data[PartnerConst.Fun_Form.Drama] = formations (目前用到的是 跨服競技場,巔峰冠軍賽)
this.dic_more_team_data = {};
// 精靈
this.pos_name_list = {}; // 五个编队各自的站位类型
this.hero_item_list = {}; // 五个编队英雄Item
this.five_hero_vo = {}; // 五个编队英雄hero_vo
this.hava_drag_item = null; // 当前正在拖拽的五个item之一
this.cur_camp = 0;
// this.cur_role_list = null;
this.select_team_index = 1; //多只布阵团队的参数
this.team_select_team_index = 1;
this.team_five_hero_vo = {};
this.team_data_list = {};
//--精靈對應的隊伍信息
this.elfin_team_data_list = {};
//-- 精靈
this.elfin_item_list = {};
this.fun_form_type = PartnerConst.Fun_Form.Drama;
this.formation_type = 1; //默认阵法
this.formation_pos = game.configs.formation_data.data_form_data[this.formation_type]; //[序号 ,位置]
//if pos=1,4,7 select form_heros[0];if pos=2,5,8 select form_heros[1];if pos=3,6,9 select form_heros[2];
this.ctrl = HeroControl.getInstance();
this.model = this.ctrl.getModel();
//事件
this.bindGEvent(HeroEvent.Update_Save_Form, this.upSaveForm.bind(this));
this.bindGEvent(HeroEvent.Update_Fun_Form, this.upFunForm.bind(this));
this.bindGEvent(ElitematchEvent.Update_Elite_Fun_Form, this.upEliteFunForm.bind(this));
// this.bindGEvent( ElitematchEvent.Update_Elite_Fun_Form2, this.upEliteFunForm.bind( this ) );
this.bindGEvent(ElitematchEvent.Update_Elite_Save_Form, this.upEliteSaveForm.bind(this));
this.bindGEvent(ElfinEvent.Get_Elfin_Tree_Data_Event, this.getElfinTreeData.bind(this));
this.bindGEvent(ElfinEvent.Elfin_Plan_From_Info_Event, this.elfinPlanFormInfo.bind(this));
this.bindGEvent(HeavenEvent.Update_Heaven_Fun_Form, this.upHeavenFunForm.bind(this));
this.bindGEvent(HeavenEvent.Save_Heaven_Fun_Form, this.saveHeavenFunForm.bind(this));
this.bindGEvent(CampfightConst.EVT_CAMP_UPDATE_FORM, this.upCampFightForm.bind(this));
this.hero_main.on(cc.Node.EventType.TOUCH_START, this.onClickFightHeroNode, this);
this.hero_main.on(cc.Node.EventType.TOUCH_CANCEL, this.onClickFightHeroNode, this);
this.hero_main.on(cc.Node.EventType.TOUCH_MOVE, this.onClickFightHeroNode, this);
this.hero_main.on(cc.Node.EventType.TOUCH_END, this.onClickFightHeroNode, this);
},
//----------------------------消息
skipCheck: function skipCheck(t) {
// let txtNd = nx.gui.find( t.node, "txt" );
// if( t.isCkecked ) {
// txtNd.active = true;
// this.scheduleOnce( () => {
// txtNd.active = false;
// }, 2 );
// }
},
saveHeavenFunForm: function saveHeavenFunForm() {
var chapter_id = this.setting.chapter_id;
var customs_id = this.setting.customs_id;
if (this.form_show_type == HeroConst.FormShowType.eFormFight && chapter_id && customs_id) {
HeavenController.getInstance().sender25205(chapter_id, customs_id);
this.onClickCloseBtn();
}
},
upHeavenFunForm: function upHeavenFunForm(data) {
if (!this.team_data_list[this.fun_form_type]) {
this.team_data_list[this.fun_form_type] = {};
}
if (data.formations.length > 0) {
this.team_data_list[this.fun_form_type][1] = data.formations[0];
if (this.tab_list[0].is_multiple) {
if (!data.formations[1]) {
this.team_data_list[this.fun_form_type][2] = nx.dt.objClone(this.team_data_list[this.fun_form_type][1]);
this.team_data_list[this.fun_form_type][2].order = 2;
this.team_data_list[this.fun_form_type][2].hallows_id = 0;
this.team_data_list[this.fun_form_type][2].pos_info = [];
} else {
this.team_data_list[this.fun_form_type][2] = data.formations[1];
}
}
this.initFormInfo(this.team_data_list[this.fun_form_type][this.select_team_index]);
this.updageFormType(this.team_data_list[this.fun_form_type][this.select_team_index].formation_type);
this.updateOtherFormation(this.team_data_list[this.fun_form_type][this.select_team_index]);
} else {
this.setEliteMatchDefaultInfo(2);
}
},
elfinPlanFormInfo: function elfinPlanFormInfo(data) {
this.initEflinInfoList(data);
},
getElfinTreeData: function getElfinTreeData() {
if (this.save_elfin_data) {
this.updateElfinList(this.save_elfin_data);
}
},
upEliteSaveForm: function upEliteSaveForm(data) {
// if( this.fun_form_type == PartnerConst.Fun_Form.EliteMatch ) {
// // --說明是在劇情佈陣的 不用關閉
// // --默認 常規賽的 如有王者賽需要該表支持
// let match_type = match_type || ElitematchConst.MatchType.eNormalMatch;
// ElitematchController.getInstance().sender24920( match_type );
// } else {
this.onClickCloseBtn();
// }
},
upCampFightForm: function upCampFightForm(data) {
if (!this.team_data_list[this.fun_form_type]) {
this.team_data_list[this.fun_form_type] = {};
}
if (data) {
this.team_data_list[this.fun_form_type][this.select_team_index] = data;
this.initFormInfo(this.team_data_list[this.fun_form_type][this.select_team_index]);
this.updageFormType(this.team_data_list[this.fun_form_type][this.select_team_index].formation_type);
this.updateOtherFormation(this.team_data_list[this.fun_form_type][this.select_team_index]);
} else {
this.team_data_list[this.fun_form_type][this.select_team_index] = {};
this.team_data_list[this.fun_form_type][this.select_team_index].formation_type = 1;
this.team_data_list[this.fun_form_type][this.select_team_index].hallows_id = 0;
this.team_data_list[this.fun_form_type][this.select_team_index].pos_info = [];
}
},
upSaveForm: function upSaveForm(data) {
if (this.form_show_type == HeroConst.FormShowType.eFormFight) {
this.gotoFight();
} else {
nx.tbox("msg_saveForm");
// if( data && data.type != PartnerConst.Fun_Form.Drama && data.type != PartnerConst.Fun_Form.Arena && data.type != PartnerConst.Fun_Form.Plense ) {
// this.onClickCloseBtn()
// }
}
gcore.GlobalEvent.fire(GuildBatEvt.UpddateGuildBatForm, this.team_data_list[this.fun_form_type][1].pos_info);
},
upFunForm: function upFunForm(from_data) {
if (!from_data) return;
if (!this.team_data_list[this.fun_form_type]) {
this.team_data_list[this.fun_form_type] = {};
}
this.team_data_list[this.fun_form_type][this.select_team_index] = from_data;
this.updageFormType(from_data.formation_type);
this.updateOtherFormation(from_data);
},
upEliteFunForm: function upEliteFunForm(data) {
if (!data) return;
if (this.fun_form_type == 93 || this.fun_form_type == 99 || this.fun_form_type == 101 || this.fun_form_type == 102) {
// --常規賽 1 王者赛 2 防禦 3 王者防禦 4
var _type = null;
if (this.fun_form_type == 93) {
_type = PartnerConst.Fun_Form.EliteMatch;
} else if (this.fun_form_type == 99) {
_type = PartnerConst.Fun_Form.EliteKingMatch;
} else if (this.fun_form_type == 101) {
_type = PartnerConst.Fun_Form.EliteDefend;
} else if (this.fun_form_type == 102) {
_type = PartnerConst.Fun_Form.EliteKingDefend;
}
_type = this.fun_form_type;
if (!this.team_data_list[this.fun_form_type]) {
this.team_data_list[this.fun_form_type] = {};
}
this.setEliteMatchDefaultInfo(2);
if (data.formations.length > 0) {
for (var _i = 0; _i < data.formations.length; _i++) {
var v = data.formations[_i];
v.type = _type;
this.model.setFormList(v, v.order);
this.team_data_list[this.fun_form_type][_i + 1] = v;
}
if (this.team_data_list[this.fun_form_type] && this.team_data_list[this.fun_form_type][this.select_team_index]) {
this.updageFormType(this.team_data_list[this.fun_form_type][this.select_team_index].formation_type);
this.updateOtherFormation(this.team_data_list[this.fun_form_type][this.select_team_index]);
}
// this.updateListSelectItem()
} else {
if (this.team_data_list[this.fun_form_type] && this.team_data_list[this.fun_form_type][this.select_team_index]) {
this.updageFormType(this.team_data_list[this.fun_form_type][this.select_team_index].formation_type);
this.updateOtherFormation(this.team_data_list[this.fun_form_type][this.select_team_index]);
} else {
this.setEliteMatchDefaultInfo(2);
this.updageFormType(this.team_data_list[this.fun_form_type][this.select_team_index].formation_type);
}
}
}
},
//----------------------------消息
start: function start() {},
//-------------------------战斗阵容切换
//0 pve 1 pvp
touchSelectClass: function touchSelectClass(_index) {
var cdn = this.select_btn.children;
var index = 0;
for (var _i2 in cdn) {
// if( !cdn[ i ].active ) {
index++;
cdn[_i2].getChildByName("on").active = true;
// }
}
//只有全部显示后才做选择
// if( index > 0 ) {
// return;
// }
this.cur_select_class = Number(_index) || 0;
for (var _i3 in cdn) {
if (_i3 != _index) {
cdn[_i3].getChildByName("on").active = false;
}
}
//刷新togs
this.freshTogs();
},
freshTogs: function freshTogs() {
var cfg = game.configs.partner_data.data_partner_form;
var tar = this.cur_select_class == 0 ? "PVE" : "PVP";
var togs_value = [];
for (var _i4 in cfg) {
if (cfg[_i4].group == tar) {
togs_value.push(cfg[_i4].form_type);
}
}
var index = togs_value.length;
for (var _i5 = 0; _i5 < this.togs.length; _i5++) {
if (index > 0) {
// this.togs[i].active = true;
//战斗类型配置
this.togs[_i5].fun_type = togs_value[_i5];
var txt = nx.gui.getComponent(this.togs[_i5], "txt", cc.Label);
var data = this.checkFromTypeData(togs_value[_i5]);
if (data) {
txt.string = data.name;
}
index--;
} else {
this.togs[_i5].fun_type = null;
}
}
//需要判断是否解锁
if (this.tab_list.length > 0) {
for (var _i6 = 0; _i6 < this.togs.length; _i6++) {
var tog = this.togs[_i6];
tog.active = false;
if (tog.fun_type != null) {
var is_use = false;
for (var j = 0; j < this.tab_list.length; j++) {
var _data2 = this.tab_list[j];
if (_data2.fun_form_type == tog.fun_type) {
is_use = true;
tog.active = !_data2.is_lock;
}
}
if (!is_use) {
tog.fun_type = null;
}
}
}
}
//设置首位展示
var order = 0;
for (var a = 0; a < this.togs.length; a++) {
if (this.togs[a].active) {
order = a;
break;
}
}
// this.togArmy.togTo( order, true );
this.onTogArmy(order);
},
checkFromTypeData: function checkFromTypeData(fun_form_type) {
var fight_list = game.configs.partner_data.data_partner_form;
for (var _i7 in fight_list) {
var fight_data = fight_list[_i7];
if (fight_data.form_type == fun_form_type) {
return fight_data;
}
}
return null;
},
clearOtherFocus: function clearOtherFocus() {
//是否需要清除原來的聚焦
if (this.team_data_list[this.fun_form_type] && this.cur_tab_data && !this.cur_tab_data.is_multiple) {
//只有一隊,需要清除聚焦
for (var k in this.five_hero_vo) {
var hero_vo = this.five_hero_vo[k];
hero_vo.is_ui_select = false;
}
this.svcList.cleanFocus();
}
},
onTogArmy: function onTogArmy(_index) {
var idx = parseInt(_index) || 0;
if (this.togs[idx].fun_type != null) {
this.clearOtherFocus();
this.fun_form_type = this.togs[idx].fun_type;
}
//显示多队伍按钮
var teams = PartnerConst.Get_Teams[this.fun_form_type];
var tog1 = this.team_btns.children[0];
tog1.getComponent(cc.Toggle).isChecked = true; //设置初始化选中
if (teams) {
this.team_btns.active = true;
for (var _i8 = 0; _i8 < this.team_btns.children.length; _i8++) {
if (_i8 < teams) {
this.team_btns.children[_i8].active = true;
} else {
this.team_btns.children[_i8].active = false;
}
}
} else {
this.team_btns.active = false;
}
this.freshList(); //刷新英雄列表
this.onTogTeam();
this.freshElfin();
},
freshElfin: function freshElfin() {
// --精靈佈陣的獲取
if (this.fun_form_type == PartnerConst.Fun_Form.EliteMatch) {
var match_type = this.setting.state || ElitematchConst.MatchType.eNormalMatch;
if (match_type == 1) {
ElfinController.getInstance().send26555(PartnerConst.Fun_Form.EliteMatch);
} else if (match_type == 2) {
ElfinController.getInstance().send26555(PartnerConst.Fun_Form.EliteKingMatch);
} else if (match_type == 3) {
ElfinController.getInstance().send26555(PartnerConst.Fun_Form.EliteDefend);
} else if (match_type == 4) {
ElfinController.getInstance().send26555(PartnerConst.Fun_Form.EliteKingDefend);
}
} else {
if (this.elfin_team_data_list[this.fun_form_type] && this.elfin_team_data_list[this.fun_form_type][this.select_team_index]) {
this.updateElfinList(this.elfin_team_data_list[this.fun_form_type][this.select_team_index]);
} else {
ElfinController.getInstance().send26555(this.fun_form_type);
}
}
},
onTogTeam: function onTogTeam(event) {
var idx = 1;
if (event) {
idx = event.checkEvents[0].customEventData;
}
this.onClickTeamTabBtn(Number(idx), true);
},
// 阵营切换
onTogCamp: function onTogCamp(_index) {
var idx = parseInt(_index) || 0;
if (this.cur_camp == idx) {
return;
}
nx.debug("[Hero]\u9635\u8425\u5207\u6362:" + this.cur_camp + " -> " + idx);
this.cur_camp = idx;
this.updateCamp();
// 整体刷新
this.freshList();
},
// 整体刷新
freshList: function freshList() {
var HC = HeroControl.getInstance();
var mod = HC.getModel();
if (!this.cur_role_list) {
return;
}
var role_list = [];
if (this.cur_camp == 0) {
// role_list = this.cur_role_list;
this.partners = this.cur_role_list;
} else {
// this.partners = [];
for (var _i9 in this.cur_role_list) {
if (this.cur_role_list[_i9].camp_type == this.cur_camp) {
role_list.push(this.cur_role_list[_i9]);
}
}
this.partners = role_list;
}
// role_list.sort( Utils.tableUpperSorter( [ "star", "lev", "flag" ] ) );
//上阵优先排序
this.fun_form_type == PartnerConst.Fun_Form.Planes ? this.partners.sort(Utils.tableUpperSorter(["star", "lev", "flag"])) : this.partners.sort(Utils.tableUpperSorter(["is_in_form", "quality", "lev"]));
nx.gui.setActive(this.svcList, "empty", nx.dt.arrEmpty(this.partners));
this.svcList.rebuild(this.partners);
this.updateListSelectItem();
},
// 选中切换
onFocusChanged: function onFocusChanged(_item) {
// 空
if (nx.dt.objEmpty(_item) || nx.dt.objEmpty(_item.mdata)) {
return;
}
nx.audio.playSFX("audios/effects/touchitem");
this.onClickHeroExhibiton(_item);
},
onEnable: function onEnable() {
if (this.old_cfg) {
this.initConfigs(this.old_cfg);
}
},
initConfigs: function initConfigs(params) {
var _this = this;
if (params.show_type && params.show_type == 3) {
this.old_cfg = params;
}
// let wdt = nx.gui.getComponent(this.node,"main",cc.Widget);
// if(params.show_type == 3 && wdt){
// wdt.left = 200;
// wdt.updateAlignment();
// }
var from_lock = true;
if (params.fun_form_type == null || params.fun_form_type == undefined) {
from_lock = false;
} else {
if (params.fun_form_type == PartnerConst.Fun_Form.Drama) {
from_lock = true;
} else if (params.fun_form_type == PartnerConst.Fun_Form.Arena) {
from_lock = true;
} else if (params.fun_form_type == PartnerConst.Fun_Form.Planes) {
from_lock = true;
} else if (params.fun_form_type == 12 || params.fun_form_type == 13 || params.fun_form_type == 14 || params.fun_form_type == 15 || params.fun_form_type == 16) {
//元素神殿
from_lock = true;
} else if (params.fun_form_type == 99) {
from_lock = true;
} else if (params.fun_form_type == 93) {
from_lock = true;
if (params.setting && params.setting.state == 2) {
// this.fun_form_type = 99;
params.fun_form_type = 99;
} else if (params.setting.state == 3) {
params.fun_form_type = 101;
} else if (params.setting.state == 4) {
params.fun_form_type = 102;
}
}
}
this.from_lock = from_lock;
this.fun_form_type = params.fun_form_type || PartnerConst.Fun_Form.Drama;
this.form_show_type = params.show_type || HeroConst.FormShowType.eFormFight;
this.setting = params.setting || {};
if (this.tween) {
this.tween.stop();
}
this.svcList.cleanFocus();
//生成空白位置
//设置缓存池9
this.pool = nx.pools.getPool(this.fabItemForm.name, this.fabItemForm, 9);
for (var _i10 = 1; _i10 <= 9; _i10++) {
var item = this.pool ? this.pool.get() : cc.instantiate(this.fabItemForm);
item.parent = this.hero_main;
this.hero_item_list[_i10] = item.getComponent("cmp.item.battledrama.form");
if (this.hero_item_list[_i10].rebind) {
this.hero_item_list[_i10].rebind(_i10, {}, "");
}
}
// --先初始化按鈕
//不同类型的战斗,隐藏战斗页签,直接触发战斗布阵
if (this.form_show_type == HeroConst.FormShowType.eFormSave) {
this.top_con.active = true;
if (this.setting.need_hide_top) {
this.top_con.active = false;
}
} else if (this.form_show_type == HeroConst.FormShowType.eFormFormation) {
this.top_con.active = false;
} else {
this.top_con.active = false;
}
//是否开启僚机
var open_cfg = game.configs.source_data.data_source_data[38].lev_limit;
var ret = nx.bridge.checkConditions([open_cfg]);
if (!ret.val) {
this.elfin_btn.active = true;
} else {
this.elfin_btn.active = false;
}
// //--先初始化按鈕
this.initTabBtnList();
this.updateCamp(); //加载英雄列表
this.scheduleOnce(function () {
_this.togCamp.posTog = _this.onTogCamp.bind(_this);
_this.togArmy.posTog = _this.onTogArmy.bind(_this);
_this.freshTogs();
_this.freshList();
//指尖特效
var spine_path = PathTool.getSpinePath("E80009", "action", false);
if (_this.move_circle_sk) {
_this.move_circle_sk.load(spine_path);
}
}, 0.2);
},
onDisable: function onDisable() {
// 监听事件释放
this.unbindGEvents();
this.svcList.rebuild([]);
this.hero_main.off(cc.Node.EventType.TOUCH_START, this);
this.hero_main.off(cc.Node.EventType.TOUCH_CANCEL, this);
this.hero_main.off(cc.Node.EventType.TOUCH_MOVE, this);
this.hero_main.off(cc.Node.EventType.TOUCH_END, this);
// 节点回收
if (this.pool) {
for (var _i11 in this.hero_item_list) {
var node = this.hero_item_list[_i11];
if (node.svItem) {
this.pool.put(node.svItem.node);
}
}
}
var hero_list = this.model.getHeroList();
for (var k in hero_list) {
var hero_vo = hero_list[k];
hero_vo.is_ui_select = false;
}
this.showMoveSk(false);
this.hero_item_list = {};
nx.bridge.NodeChidrenDestroy(this.hero_main);
},
//--------------------旧版本代码-------------------------
onClickElfinBtn: function onClickElfinBtn() {
var self = this;
if (!self.elfin_team_data_list[this.fun_form_type][self.select_team_index]) return;
if (!self.cur_tab_data) return;
var elfin_tree_data = ElfinController.getInstance().getModel().getElfinTreeData();
// --古樹信息沒有回來不給點
if (elfin_tree_data == null) return;
var setting = {};
setting.fun_form_type = self.cur_tab_data.fun_form_type;
self.setPlanSettingInfo(setting);
ElfinController.getInstance().openElfinAdjustWindow(true, this.fun_form_type, setting.team_index, setting);
},
setPlanSettingInfo: function setPlanSettingInfo(setting) {
var self = this;
if (!setting) return;
// --team_list結構參考 26555協議team_list
var _teamFilterInfo = function _teamFilterInfo(team_list, filter_index) {
var dic_item_id = {};
for (var _i12 in team_list) {
var v = team_list[_i12];
if (filter_index != v.team) {
if (v.sprites) {
for (var j in v.sprites) {
var _sp = v.sprites[j];
if (dic_item_id[_sp.item_bid] == null) {
dic_item_id[_sp.item_bid] = 1;
} else {
dic_item_id[_sp.item_bid] = dic_item_id[_sp.item_bid] + 1;
}
}
}
}
}
return dic_item_id;
};
if (self.fun_form_type == PartnerConst.Fun_Form.Drama) {
setting.dic_filter_item_id = {};
setting.cur_plan_data = self.elfin_team_data_list[this.fun_form_type][self.select_team_index];
setting.team_index = 1;
} else {
if (self.fun_form_type == PartnerConst.Fun_Form.CrossArenaDef || self.fun_form_type == PartnerConst.Fun_Form.CrossArena || self.fun_form_type == PartnerConst.Fun_Form.ArenapeakchampionDef) {
// --多隊伍 有總覽的 需要跳過總覽
setting.team_index = this.select_team_index;
setting.dic_filter_item_id = _teamFilterInfo(self.elfin_team_data_list[this.fun_form_type], setting.team_index);
setting.cur_plan_data = self.elfin_team_data_list[this.fun_form_type][setting.team_index];
setting.total_team_info = self.elfin_team_data_list[this.fun_form_type];
} else if (self.fun_form_type == PartnerConst.Fun_Form.HeavenBoss || self.fun_form_type == PartnerConst.Fun_Form.EliteKingMatch || self.fun_form_type == PartnerConst.Fun_Form.EliteKingDefend) {
//未处理
// --多隊伍沒有總覽的
setting.team_index = self.select_team_index;
setting.dic_filter_item_id = _teamFilterInfo(self.elfin_team_data_list[this.fun_form_type], setting.team_index);
setting.cur_plan_data = self.elfin_team_data_list[this.fun_form_type][self.select_team_index];
setting.total_team_info = self.elfin_team_data_list[this.fun_form_type];
} else if (self.fun_form_type == PartnerConst.Fun_Form.EliteMatch) {
//--段位賽
var match_type = self.setting.state || ElitematchConst.MatchType.eNormalMatch;
if (match_type == 1) {
//段位賽的
setting.dic_filter_item_id = {};
setting.cur_plan_data = self.elfin_team_data_list[this.fun_form_type][self.select_team_index];
setting.team_index = 1;
} else if (match_type == 2) {
//王者賽的
setting.team_index = self.select_team_index;
setting.dic_filter_item_id = _teamFilterInfo(self.elfin_team_data_list[this.fun_form_type], setting.team_index);
setting.cur_plan_data = self.elfin_team_data_list[this.fun_form_type][self.select_team_index];
setting.total_team_info = self.elfin_team_data_list[this.fun_form_type];
} else if (match_type == 3) {
setting.team_index = self.select_team_index;
setting.dic_filter_item_id = _teamFilterInfo(self.elfin_team_data_list[this.fun_form_type], setting.team_index);
setting.cur_plan_data = self.elfin_team_data_list[this.fun_form_type][self.select_team_index];
setting.total_team_info = self.elfin_team_data_list[this.fun_form_type];
} else if (match_type == 4) {
setting.team_index = self.select_team_index;
setting.dic_filter_item_id = _teamFilterInfo(self.elfin_team_data_list[this.fun_form_type], setting.team_index);
setting.cur_plan_data = self.elfin_team_data_list[this.fun_form_type][self.select_team_index];
setting.total_team_info = self.elfin_team_data_list[this.fun_form_type];
}
setting.match_type = match_type;
} else {
setting.dic_filter_item_id = {};
setting.cur_plan_data = self.elfin_team_data_list[this.fun_form_type][self.select_team_index];
setting.team_index = 1;
}
}
},
initEflinInfoList: function initEflinInfoList(data) {
// return;
var self = this;
if (!self.tab_list) return;
if (self.fun_form_type == PartnerConst.Fun_Form.Drama) {
for (var _i13 in self.tab_list) {
var v = this.tab_list[_i13];
if (v.fun_form_type == data.type) {
if (!this.elfin_team_data_list[v.fun_form_type]) {
self.elfin_team_data_list[v.fun_form_type] = {};
}
self.elfin_team_data_list[v.fun_form_type][v.index] = data.team_list[0];
if (self.select_team_index == v.index) {
self.updateElfinList(self.elfin_team_data_list[v.fun_form_type][v.index]);
}
break;
}
}
} else {
if (self.fun_form_type == data.type) {
var cur_index = self.select_team_index;
if (!this.elfin_team_data_list[this.fun_form_type]) {
this.elfin_team_data_list[this.fun_form_type] = {};
}
if (self.fun_form_type == PartnerConst.Fun_Form.CrossArenaDef ||
//未处理
self.fun_form_type == PartnerConst.Fun_Form.CrossArena ||
//未处理
self.fun_form_type == PartnerConst.Fun_Form.ArenapeakchampionDef) {
//未处理
//先分配隊伍
for (var index in data.team_list) {
var mv = data.team_list[index];
self.elfin_team_data_list[this.fun_form_type][mv.team] = mv;
}
//如果仍然有空隊伍,則需要設置缺省隊伍
for (var i2 = 2; i2 <= 4; i2++) {
if (self.elfin_team_data_list[this.fun_form_type][i2] == null) {
self.elfin_team_data_list[this.fun_form_type][i2] = self.getDefaultTeamInfo(i2);
}
}
} else if (self.fun_form_type == PartnerConst.Fun_Form.HeavenBoss || data.type == PartnerConst.Fun_Form.EliteKingMatch || data.type == PartnerConst.Fun_Form.EliteKingDefend) {
//天界副本 未处理
// --多隊伍沒有總覽的
for (var hea in data.team_list) {
var v1 = data.team_list[hea];
self.elfin_team_data_list[this.fun_form_type][v1.team] = v1;
}
for (var i3 = 1; i3 <= 2; i3++) {
if (self.elfin_team_data_list[this.fun_form_type][i3] == null) {
self.elfin_team_data_list[this.fun_form_type][i3] = self.getDefaultTeamInfo(i3);
}
}
} else if (self.fun_form_type == PartnerConst.Fun_Form.EliteMatch || self.fun_form_type == PartnerConst.Fun_Form.EliteDefend) {
//段位賽
if (this.from_lock) {
cur_index = self.select_team_index;
}
var match_type = self.setting.state || ElitematchConst.MatchType.eNormalMatch;
if (match_type == 1) {
//段位賽的
if (this.from_lock) {
self.elfin_team_data_list[this.fun_form_type][this.select_team_index] = data.team_list[0];
} else {
self.elfin_team_data_list[this.fun_form_type][this.select_team_index] = data.team_list[0];
}
} else {
self.elfin_team_data_list[this.fun_form_type][this.select_team_index] = data.team_list[0];
}
} else {
self.elfin_team_data_list[this.fun_form_type][this.select_team_index] = data.team_list[0];
}
// --設置內容
for (var _i14 in self.tab_list) {
var v2 = this.tab_list[_i14];
if (v2.fun_form_type == this.fun_form_type) {
self.updateElfinList(self.elfin_team_data_list[v2.fun_form_type][cur_index]);
}
}
} else if (data.type == PartnerConst.Fun_Form.EliteKingMatch || data.type == PartnerConst.Fun_Form.EliteKingDefend) {
//王者賽..比較特殊 = =
var _match_type = self.setting.state || ElitematchConst.MatchType.eNormalMatch;
if (_match_type == 2 || _match_type == 4) {
for (var king in data.team_list) {
var v3 = data.team_list[king];
self.elfin_team_data_list[v3.fun_form_type][v3.team] = v3;
}
for (var i4 = 1; i4 <= 2; i4++) {
if (self.elfin_team_data_list[this.fun_form_type][i4] == null) {
self.elfin_team_data_list[this.fun_form_type][i4] = self.getDefaultTeamInfo(i4);
}
}
for (var _i15 in self.tab_list) {
var v4 = this.tab_list[_i15];
if (v4.index == this.select_team_index) {
self.updateElfinList(self.elfin_team_data_list[v4.fun_form_type][this.select_team_index]);
}
}
}
}
}
},
getDefaultTeamInfo: function getDefaultTeamInfo(team_index) {
var self = this;
var default_elfin_info = {};
default_elfin_info.sprites = [];
for (var _i16 = 1; _i16 <= 4; _i16++) {
var item_bid = ElfinController.getInstance().getModel().getElfinItemByPos(_i16);
if (item_bid) {
default_elfin_info.sprites.push({
pos: _i16,
item_bid: 0
});
}
}
default_elfin_info.plan_id = 0;
default_elfin_info.team = team_index;
return default_elfin_info;
},
// -- 更新精靈
updateElfinList: function updateElfinList(data) {
// return;
var self = this;
if (!data) return;
self.save_elfin_data = data; //保存一下 用於古樹信息返回處理用的..
var elfin_bid_list = data.sprites;
var getElfinBidByPos = function getElfinBidByPos(pos) {
var elfin_bid;
for (var k in elfin_bid_list) {
var v = elfin_bid_list[k];
if (v.pos == pos) {
elfin_bid = v.item_bid;
break;
}
}
return elfin_bid;
};
var is_play_effect = false;
for (var _i17 = 1; _i17 <= 4; _i17++) {
var elfin_bid = getElfinBidByPos(_i17);
var elfin_item = this.elfin_btn.getChildByName(String(_i17));
self.elfin_item_list[_i17] = elfin_item;
// let item_bid = ElfinController.getInstance().getModel().getElfinItemByPos( i );
if (elfin_bid > 0) {
// || ( this.fun_form_type == PartnerConst.Fun_Form.Heaven || this.fun_form_type == PartnerConst.Fun_Form.HeavenBoss )
var bid = elfin_bid || 0;
var elfin_cfg = gdata("sprite_data", "data_elfin_data", bid);
elfin_item.active = true;
is_play_effect = true;
} else {
elfin_item.active = false;
}
}
this.updateElfinEffect(is_play_effect);
},
updateElfinEffect: function updateElfinEffect(is_play) {
var sps = nx.gui.getComponent(this.elfin_btn, "sp", sp.Skeleton);
if (!sps) return;
if (!is_play) {
sps.clearTracks();
sps.node.active = false;
} else {
sps.node.active = true;
var effect_path = PathTool.getSpinePath("E80006");
nx.res.loadRes(effect_path, sp.SkeletonData, function (_e, _p) {
if (_e) {
return;
}
if (sps && sps.skeletonData) {
sps.skeletonData = _p;
sps.setAnimation(0, "action", true);
}
});
}
},
// --其他佈陣信息
initFormInfo: function initFormInfo(data) {
var self = this;
if (!data) return;
var formation_config = game.configs.formation_data.data_form_data[data.formation_type];
if (!formation_config) return;
// --是否佈陣網絡信息返回
self.is_form_back = true;
self.formation_type = data.formation_type;
self.hallows_id = data.hallows_id || 1;
},
// --劇情界面多隊伍的按鈕
onClickTeamTabBtn: function onClickTeamTabBtn(index, is_check) {
var self = this;
// if( self.select_team_index && self.select_team_index == index ) return;
if (!this.cur_tab_data) return;
// --標誌是否需要更新數據 從 index =1 變到index = 非1的
var is_change_data = false;
self.team_cur_tab = self.team_btns.children[index - 1];
// this.team_formation_data = dic_more_team_data[ index ];
self.select_team_index = index;
//多只队伍需要再次配置cur_tab_data
for (var _i18 in this.tab_list) {
var tab = this.tab_list[_i18];
if (index == tab.index) {
this.cur_tab_data = tab;
}
}
if (self.team_cur_tab != null) {
self.team_cur_tab.getComponent(cc.Toggle).isCheck = true;
}
// --這裡要處理 把 可能會修改的英雄數據 分
if (!this.team_data_list[this.fun_form_type]) {
this.initFormatInfo();
} else {
var dic_more_team_data = this.team_data_list[this.fun_form_type][index];
if (!dic_more_team_data) return;
// --說明切換頁簽了
if (this.team_data_list[this.fun_form_type][this.select_team_index]) {
this.updageFormType(this.team_data_list[this.fun_form_type][this.select_team_index].formation_type);
this.updateOtherFormation(this.team_data_list[this.fun_form_type][this.select_team_index]);
this.updateListSelectItem();
}
}
//刷新僚機
if (this.elfin_team_data_list[this.fun_form_type] && this.elfin_team_data_list[this.fun_form_type][index]) {
this.updateElfinList(this.elfin_team_data_list[this.fun_form_type][index]);
}
},
// --設置精英賽佈陣信息的缺省數據 目前王者賽、天界副本boss關用
setEliteMatchDefaultInfo: function setEliteMatchDefaultInfo(max_team_count) {
var self = this;
if (!max_team_count) return;
for (var _i19 = 1; _i19 <= max_team_count; _i19++) {
if (this.fun_form_type == PartnerConst.Fun_Form.EliteKingMatch || self.fun_form_type == PartnerConst.Fun_Form.CrossArena || self.fun_form_type == PartnerConst.Fun_Form.CrossArenaDef || self.fun_form_type == PartnerConst.Fun_Form.ArenapeakchampionDef || this.fun_form_type == PartnerConst.Fun_Form.EliteKingDefend) {
// --目前只有王者賽有兩個隊伍
if (self.team_data_list[this.fun_form_type][_i19] == null) {
var data = {};
data.formation_type = 1;
data.hallows_id = 0;
data.order = _i19;
data.pos_info = [];
data.type = this.fun_form_type;
self.team_data_list[this.fun_form_type][_i19] = data;
}
} else if (self.fun_form_type == PartnerConst.Fun_Form.HeavenBoss) {
if (self.team_data_list[this.fun_form_type][_i19] == null) {
var _data3 = {};
_data3.formation_type = 1;
_data3.hallows_id = 0;
_data3.pos_info = [];
self.team_data_list[this.fun_form_type][_i19] = _data3;
}
}
}
},
initTabBtnList: function initTabBtnList() {
var self = this;
self.tab_list = [];
if (self.fun_form_type == PartnerConst.Fun_Form.Drama) {
if (self.form_show_type == HeroConst.FormShowType.eFormFight) {
//出戰
self.setTabData(self.fun_form_type, "隊伍", 1);
} else {
//--劇情保存佈陣 要顯示好多
var config_list = game.configs.partner_data.data_partner_form;
for (var k in config_list) {
var config = config_list[k];
var team_cfg = PartnerConst.Get_Teams[config.form_type];
self.setTabData(config.form_type, config.name, config.index, 1, team_cfg ? true : false, true);
}
}
} else if (self.fun_form_type == PartnerConst.Fun_Form.EliteMatch) {
self.setTabData(self.fun_form_type, "隊伍一", 1);
} else if (self.fun_form_type == PartnerConst.Fun_Form.EliteDefend) {
self.setTabData(self.fun_form_type, "隊伍一", 1);
} else if (self.fun_form_type == PartnerConst.Fun_Form.EliteKingMatch) {
self.setTabData(self.fun_form_type, "隊伍一", 1, 1, true);
self.setTabData(self.fun_form_type, "隊伍二", 2, 2, true);
} else if (self.fun_form_type == PartnerConst.Fun_Form.EliteKingDefend) {
self.setTabData(self.fun_form_type, "隊伍一", 1, 1, true);
self.setTabData(self.fun_form_type, "隊伍二", 2, 2, true);
} else if (self.fun_form_type == PartnerConst.Fun_Form.HeavenBoss) {
self.setTabData(self.fun_form_type, "隊伍一", 1, 1, true);
self.setTabData(self.fun_form_type, "隊伍二", 2, 2, true);
} else if (self.fun_form_type == PartnerConst.Fun_Form.ArenaTeam) {
self.setTabData(self.fun_form_type, "隊伍一", 1, 1, true);
self.setTabData(self.fun_form_type, "隊伍二", 2, 2, true);
self.setTabData(self.fun_form_type, "隊伍二", 3, 2, true);
} else if (self.fun_form_type == PartnerConst.Fun_Form.CrossArena || self.fun_form_type == PartnerConst.Fun_Form.CrossArenaDef || self.fun_form_type == PartnerConst.Fun_Form.ArenapeakchampionDef) {
self.setTabData(self.fun_form_type, "總覽", 1, 0, false);
self.setTabData(self.fun_form_type, "隊伍一", 2, 1, true);
self.setTabData(self.fun_form_type, "隊伍二", 3, 2, true);
self.setTabData(self.fun_form_type, "隊伍三", 4, 3, true);
} else {
self.setTabData(self.fun_form_type, "隊伍", 1);
}
var sort_func = Utils.tableLowerSorter(["sort_index"], ["index"]);
this.tab_list.sort(sort_func);
;
},
setTabData: function setTabData(fun_form_type, name, index, order, is_multiple, is_check) {
var self = this;
var tab_data = {};
tab_data.fun_form_type = fun_form_type; //陣法類型
tab_data.name = name; //--陣法名字
tab_data.index = index; //--陣法排序
tab_data.is_multiple = is_multiple || false; //是否會有多隊伍
tab_data.order = order || 1; //隊伍序號
// --是否要加一個需要加一個開啟顯示
if (is_check) {
tab_data.sort_index = 0;
tab_data.is_lock = false;
if (fun_form_type == PartnerConst.Fun_Form.Arena) {
//--競技場的 冠軍賽的開啟條件
var Arena_cfg = game.configs.source_data.data_source_data[42];
var obj = nx.bridge.checkConditions([Arena_cfg.lev_limit]);
tab_data.is_lock = obj.val ? true : false;
} else if (fun_form_type == PartnerConst.Fun_Form.ArenaChampion) {
var Cham_cfg = game.configs.source_data.data_source_data[80];
var _obj = nx.bridge.checkConditions([Cham_cfg.lev_limit]);
tab_data.is_lock = _obj.val ? true : false;
} else if (fun_form_type == PartnerConst.Fun_Form.Ladder) {
// --天梯
var Lad_cfg = game.configs.source_data.data_source_data[126];
var _obj2 = nx.bridge.checkConditions([Lad_cfg.lev_limit]);
tab_data.is_lock = _obj2.val ? true : false;
} else if (fun_form_type == PartnerConst.Fun_Form.EliteMatch || fun_form_type == PartnerConst.Fun_Form.EliteKingMatch) {
// --精英賽
var Elt_cfg = game.configs.source_data.data_source_data[115];
var _obj3 = nx.bridge.checkConditions([Elt_cfg.lev_limit]);
tab_data.is_lock = _obj3.val ? true : false;
} else if (fun_form_type == PartnerConst.Fun_Form.ArenaTeam) {
//組隊競技場
var Team_cfg = game.configs.source_data.data_source_data[123];
var _obj4 = nx.bridge.checkConditions([Team_cfg.lev_limit]);
tab_data.is_lock = _obj4.val ? true : false;
} else if (fun_form_type == PartnerConst.Fun_Form.CrossArenaDef) {
//跨服競技場
var Cross_cfg = game.configs.source_data.data_source_data[120];
var _obj5 = nx.bridge.checkConditions([Cross_cfg.lev_limit]);
tab_data.is_lock = _obj5.val ? true : false;
} else if (fun_form_type == PartnerConst.Fun_Form.ArenapeakchampionDef) {
//巔峰冠軍賽
var Peak_cfg = game.configs.source_data.data_source_data[124];
var _obj6 = nx.bridge.checkConditions([Peak_cfg.lev_limit]);
tab_data.is_lock = _obj6.val ? true : false;
}
} else {
tab_data.sort_index = 0;
tab_data.is_lock = false;
}
this.tab_list.push(tab_data);
},
updateCamp: function updateCamp() {
// console.log( "当前的类型是--->>>>" + this.fun_form_type );
this.cur_role_list = []; //英雄列表
if (this.fun_form_type == PartnerConst.Fun_Form.Expedit_Fight) {} else if (this.fun_form_type == PartnerConst.Fun_Form.EndLess) {
this.cur_role_list = this.model.getRestHeroListByCamp(this.cur_camp || 0);
var list = this.setting.has_hire_list || {};
var partner_config = game.configs.partner_data.data_partner_base;
for (var i in list) {
var v = list[i];
var config = partner_config[v.bid];
if (this.cur_camp == 0 || this.cur_camp == config.camp_type) {
var vo = new HeroVo();
vo.bid = v.bid;
vo.partner_id = v.id + 100000; //因为援助id与自己英雄id会冲突,所以就行特殊处理
vo.star = v.star;
vo.power = v.power;
vo.camp_type = config.camp_type;
vo.rid = v.rid;
vo.srv_id = v.srv_id;
vo.is_used = v.is_used;
vo.lev = v.lev;
vo.ext_data = v.ext_data;
vo.is_employ = true;
vo.is_endless = true;
vo.pos_type = partner_config[v.bid].pos_type;
this.cur_role_list.unshift(vo);
}
}
} else if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
var list = PlanesafkController.getInstance().getModel().getAllPlanesHeroData() || {};
var partner_config = game.configs.partner_data.data_partner_base;
for (var i in list) {
var v = list[i];
v.is_employ = v.flag == 1;
var config = partner_config[v.bid];
if (this.cur_camp == 0 || this.cur_camp == config.camp_type) {
v.camp_type = config.camp_type;
v.pos_type = config.pos_type;
this.cur_role_list.push(v);
}
}
if (this.cur_role_list.length > 0) {
this.cur_role_list.sort(Utils.tableUpperSorter(["star", "lev", "flag"]));
}
} else if (this.fun_form_type == PartnerConst.Fun_Form.YearBoss || this.fun_form_type == PartnerConst.Fun_Form.YearCross || this.fun_form_type == PartnerConst.Fun_Form.YearDefend) {
var tag_camp = this.setting.period;
var all_heros = [];
if (tag_camp == 1) {
//三系
var alls = this.model.getRestHeroListByCamp(0 || this.cur_camp);
var temp = [];
for (var p in alls) {
if (alls[p].camp_type == 1 || alls[p].camp_type == 2 || alls[p].camp_type == 3) {
temp.push(alls[p]);
}
}
for (var t in temp) {
if (temp[t].camp_type == this.cur_camp || this.cur_camp == 0) {
all_heros.push(temp[t]);
}
}
} else if (tag_camp == 3) {
//光暗
var alls2 = this.model.getRestHeroListByCamp(0 || this.cur_camp);
var temp2 = [];
for (var p2 in alls2) {
if (alls2[p2].camp_type == 4 || alls2[p2].camp_type == 5) {
temp2.push(alls2[p2]);
}
}
for (var t2 in temp2) {
if (temp2[t2].camp_type == this.cur_camp || this.cur_camp == 0) {
all_heros.push(temp2[t2]);
}
}
} else {
all_heros = this.model.getRestHeroListByCamp(this.cur_camp || 0);
}
// this.model.getRestHeroListByCamp( this.cur_camp || 0 );
this.cur_role_list = all_heros;
} else {
this.cur_role_list = this.model.getRestHeroListByCamp(this.cur_camp || 0);
this.cur_role_list.sort(Utils.tableUpperSorter(["star", "power", "lev", "flag"]));
}
var boold_type = null;
var from_type = HeroConst.ExhibitionItemType.eFormFight;
if (this.fun_form_type == PartnerConst.Fun_Form.Expedit_Fight) {
//远征
from_type = HeroConst.ExhibitionItemType.eExpeditFight;
boold_type = true;
} else if (this.fun_form_type == PartnerConst.Fun_Form.EndLess) {
//无尽试炼
from_type = HeroConst.ExhibitionItemType.eEndLessHero;
} else if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
//位面
from_type = HeroConst.ExhibitionItemType.ePlanes;
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteMatch) {
//段位賽
from_type = HeroConst.ExhibitionItemType.ePlanes;
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteKingMatch) {
//段位王者賽
from_type = HeroConst.ExhibitionItemType.ePlanes;
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteDefend) {
from_type = HeroConst.ExhibitionItemType.ePlanes;
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteKingDefend) {
from_type = HeroConst.ExhibitionItemType.ePlanes;
}
},
onClickHeroExhibiton: function onClickHeroExhibiton(click_item) {
if (!click_item) return;
if (this.is_play_item_action) return;
this.selectHero(click_item);
},
initFormatInfo: function initFormatInfo() {
// 视图类型
if (this.form_show_type == HeroConst.FormShowType.eFormSave || this.form_show_type == HeroConst.FormShowType.eFormFormation) {
this.key_up_btn.active = true;
this.save_btn.active = true;
this.fight_btn.active = false;
} else if (this.form_show_type == HeroConst.FormShowType.eFixedType) {
this.key_up_btn.active = false;
this.save_btn.active = false;
this.fight_btn.active = true;
this.hallow_btn.active = false;
// this.halo_btn.active = false;
this.elfin_btn.active = false;
this.powerNd.active = false;
this.formation_btn.active = false;
} else {
this.key_up_btn.active = true;
this.save_btn.active = false;
this.fight_btn.active = true;
}
if (this.fun_form_type == PartnerConst.Fun_Form.Drama) {
this.upateDramaFormation();
this.updateHallowsIcon();
} else if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
PlanesafkController.getInstance().sender28612();
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteMatch) {
ElitematchController.getInstance().sender24920(1);
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteKingMatch) {
ElitematchController.getInstance().sender24920(2);
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteDefend) {
ElitematchController.getInstance().sender24920(3);
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteKingDefend) {
ElitematchController.getInstance().sender24920(4);
} else if (this.fun_form_type == PartnerConst.Fun_Form.Heaven) {
HeavenController.getInstance().sender25210(1);
} else if (this.fun_form_type == PartnerConst.Fun_Form.HeavenBoss) {
HeavenController.getInstance().sender25210(2);
} else if (this.fun_form_type == PartnerConst.Fun_Form.YearBoss || this.fun_form_type == PartnerConst.Fun_Form.YearCross || this.fun_form_type == PartnerConst.Fun_Form.YearDefend) {
CampfightMod.getInstance().reqForm(this.fun_form_type, this.setting.period);
} else {
// 其他的都根据协议获取阵容
this.ctrl.sender11211(this.fun_form_type);
}
},
// 更新剧情布阵
upateDramaFormation: function upateDramaFormation() {
this.is_form_back = true;
this.formation_type = this.model.use_formation_type;
this.hallows_id = this.model.use_hallows_id;
this.formation_config = game.configs.formation_data.data_form_data[this.formation_type];
var pos_list = this.model.getMyPosList();
if (!this.team_data_list[this.fun_form_type]) {
this.team_data_list[this.fun_form_type] = {};
}
this.team_data_list[this.fun_form_type][1] = {};
this.team_data_list[this.fun_form_type][1].hallows_id = this.hallows_id;
this.team_data_list[this.fun_form_type][1].pos_info = pos_list;
this.team_data_list[this.fun_form_type][1].formation_type = this.formation_type;
if (!this.formation_config) return;
this.updateFormationStation(this.formation_config);
this.updateFiveHeroItem(pos_list, this.formation_config);
},
updateOtherFormation: function updateOtherFormation(from_data) {
this.formation_type = from_data.formation_type;
this.hallows_id = from_data.hallows_id;
this.formation_config = game.configs.formation_data.data_form_data[this.formation_type];
this.updateFormationStation(this.formation_config);
var pos_info = {};
for (var _i20 in from_data.pos_info) {
pos_info[from_data.pos_info[_i20].pos] = from_data.pos_info[_i20];
}
this.updateFiveHeroItem(pos_info, this.formation_config);
this.updateHallowsIcon();
},
// 更新战位信息
updateFormationStation: function updateFormationStation(formation_config) {
// 显示所有背景框
var cdn = this.table_main.children;
for (var _i21 in cdn) {
if (cdn[_i21]) {
cdn[_i21].opacity = 255;
var e = cdn[_i21].getChildByName("effect");
e.getComponent(sp.Skeleton).clearTracks();
e.active = false;
}
}
var dic_pos_index = {};
var temp_five_heros = this.five_hero_vo; //保存的临时数据
this.five_hero_vo = {};
for (var _i22 in formation_config.pos) {
var v = formation_config.pos[_i22];
var _index2 = v[0];
var pos = v[1];
dic_pos_index[pos] = _index2;
// --更新位置
if (this.hero_item_list[_index2]) {
cdn[pos - 1].form_index = pos;
var effect = cdn[pos - 1].getChildByName("effect");
effect.active = true;
effect.getComponent(sp.Skeleton).setAnimation(0, "action", true);
this.hero_item_list[_index2].index = pos;
this.hero_item_list[_index2].is_use = true;
this.hero_item_list[_index2].node.zIndex = pos;
this.hero_item_list[_index2].node.position = this.nine_position[pos];
//换位之后需要重新设置key
if (!nx.dt.objEmpty(temp_five_heros)) {
for (var key in temp_five_heros) {
if (this.hero_item_list[_index2].mdata) {
if (this.hero_item_list[_index2].mdata.partner_id == temp_five_heros[key].partner_id) {
var obj = temp_five_heros[key];
this.five_hero_vo[pos] = obj;
}
}
}
}
}
if (pos <= 3) {
//后 中 前
this.pos_name_list[_index2] = [1, pos]; //--位置 前
} else if (pos > 3 && pos <= 6) {
this.pos_name_list[_index2] = [2, pos]; //--位置 中
} else {
this.pos_name_list[_index2] = [3, pos]; //--位置 後
}
}
// --沒使用的要變灰變暗
var index = 6;
for (var _pos = 1; _pos <= 9; _pos++) {
if (dic_pos_index[_pos] == null) {
cdn[_pos - 1].opacity = 100;
index++;
if (index > 9) {
break;
}
}
}
var index2 = 6;
for (var pos2 = 1; pos2 <= 9; pos2++) {
if (dic_pos_index[pos2] == null) {
cdn[pos2 - 1].form_index = pos2;
this.hero_item_list[index2].index = pos2;
this.hero_item_list[index2].is_use = false;
this.hero_item_list[index2].node.zIndex = pos2;
this.hero_item_list[index2].node.position = this.nine_position[pos2];
index2++;
if (index2 > 9) {
break;
}
}
}
this.updateFormationIcon();
},
getHeroByIdPlane: function getHeroByIdPlane(id) {
if (!this.cur_role_list) return;
for (var _i23 in this.cur_role_list) {
if (id == this.cur_role_list[_i23].partner_id) {
return this.cur_role_list[_i23];
}
}
return {};
},
// 更新上阵英数据
updateFiveHeroItem: function updateFiveHeroItem(pos_info, formation_config) {
var hero_vo_list = {};
for (var pos_i in pos_info) {
var hero_vo = null;
if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
hero_vo = this.getHeroByIdPlane(pos_info[pos_i].id);
} else {
hero_vo = this.model.getHeroById(pos_info[pos_i].id);
}
var pos_key = null;
for (var _i24 in formation_config.pos) {
var v = formation_config.pos[_i24];
if (pos_i == v[0]) {
pos_key = v[1];
}
}
hero_vo_list[pos_key] = hero_vo;
}
// 更新英雄item数据
for (var item_i in this.hero_item_list) {
if (hero_vo_list[this.hero_item_list[item_i].index]) {
this.hero_item_list[item_i].rebind(this.hero_item_list[item_i].index, hero_vo_list[this.hero_item_list[item_i].index], "");
} else {
this.hero_item_list[item_i].rebind(this.hero_item_list[item_i].index, {}, "");
}
}
this.five_hero_vo = hero_vo_list;
//全部更新多隊伍設置
if (PartnerConst.Get_Teams[this.fun_form_type]) {
if (!this.team_five_hero_vo[this.fun_form_type]) {
this.team_five_hero_vo[this.fun_form_type] = {};
}
this.team_five_hero_vo[this.fun_form_type][this.select_team_index] = this.five_hero_vo;
}
this.updateListSelectItem();
this.updateFightPower(); // 更新战力
},
// 更新item_list信息
updateListSelectItem: function updateListSelectItem() {
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var list_index = this.getCurListIndexByParId(this.five_hero_vo[hero_i].partner_id);
if (list_index >= 0) {
this.partners[list_index].is_ui_select = true;
this.svcList.addFocus(list_index);
}
}
}
},
// 更新战力
updateFightPower: function updateFightPower() {
var power = 0;
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) power = power + this.five_hero_vo[hero_i].power || 0;
}
this.fight_label.string = power;
this.calculateCampHaloType();
if (this.fun_form_type == PartnerConst.Fun_Form.HeavenBoss || this.fun_form_type == PartnerConst.Fun_Form.Heaven) {
this.setPosInfoData();
}
gcore.GlobalEvent.fire(HeroEvent.Update_Tag_Fun_Form, power);
},
// 更新阵法图标
updateFormationIcon: function updateFormationIcon() {
// var form_icon_path = PathTool.getIconPath("form", "form_icon_" + this.formation_config.type);
// this.loadRes(form_icon_path, function(form_sf) {
// this.form_icon_sp.spriteFrame =
;
// }.bind(this));
},
// 选择英雄
selectHero: function selectHero(click_item) {
if (this.running_move_act) return;
var select_hero_vo = click_item.mdata;
if (this.fun_form_type == PartnerConst.Fun_Form.Expedit_Fight) {
var is_used = select_hero_vo.is_used || 0; //--expedit_model:getHireHeroIsUsed(select_hero_vo.partner_id, select_hero_vo.rid, select_hero_vo.srv_id)
if (is_used == 1) {
nx.tbox("lab_form_go_fight_window_tip1");
return;
}
}
// 英雄死亡就不可能点击
if (this.fun_form_type == PartnerConst.Fun_Form.Expedit_Fight) {
// var blood = HeroExpeditController.getInstance().getModel().getHeroBloodById( select_hero_vo.partner_id, select_hero_vo.rid, select_hero_vo.srv_id );
// if( blood <= 0 ) {
// return;
// }
} else if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
// -- 位面
var hp_per = select_hero_vo.hp_per; //PlanesafkController.getInstance().getModel().getMyPlanesHeroHpPer(select_hero_vo.partner_id, select_hero_vo.flag)
if (hp_per <= 0) {
nx.tbox("lab_form_go_fight_window_tip2");
return;
}
}
// 是否已经选中
var select_index = -1;
for (var five_i in this.five_hero_vo) {
if (this.five_hero_vo[five_i] && this.five_hero_vo[five_i].partner_id === select_hero_vo.partner_id) {
select_index = five_i;
break;
}
}
if (select_index !== -1) {
// 已在选中队列则取消选中
select_hero_vo.is_ui_select = false;
// 播放下阵动画
for (var _i25 in this.hero_item_list) {
if (this.hero_item_list[_i25].index == select_index && this.hero_item_list[_i25].is_use) {
this.hero_item_list[_i25].rebind(select_index, {}, "");
}
}
// this.hero_item_list[select_index].rebind(select_index,{},"");
delete this.five_hero_vo[select_index];
// --結束位置 设置下阵英雄
this.svcList.removeFocus(click_item.index);
this.updateFightPower();
} else {
// 分配战队位置
var have_num = 0;
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
if (select_hero_vo.bid == this.five_hero_vo[hero_i].bid) {
nx.tbox("tip_sameHero2");
return;
}
have_num++;
}
}
//基於多隊伍的是否選中
if (this.cur_tab_data && this.cur_tab_data.is_multiple) {
for (var teams in this.team_data_list[this.fun_form_type]) {
var team_partner = this.team_data_list[this.fun_form_type][teams];
for (var pid in team_partner.pos_info) {
if (select_hero_vo.partner_id == team_partner.pos_info[pid].id) {
nx.tbox("tip_sameHero2");
return;
}
}
}
}
if (have_num >= 5) {
nx.tbox("tip_fullPositions");
return;
}
// 同bid不能上阵
var best_index = this.getTheBestPos(select_hero_vo);
if (best_index < 0) {
// 没有上阵位置
nx.tbox("tip_noPosition");
return;
}
// 播放上阵动画
for (var _i26 in this.hero_item_list) {
if (this.hero_item_list[_i26].index == best_index && this.hero_item_list[_i26].is_use) {
this.hero_item_list[_i26].rebind(best_index, select_hero_vo, "");
this.hero_item_list[_i26].circlePlay(3);
}
}
// this.hero_item_list[best_index].rebind(best_index,select_hero_vo,"");
this.five_hero_vo[best_index] = select_hero_vo;
select_hero_vo.is_ui_select = true;
this.svcList.addFocus(click_item.index);
this.updateFightPower();
}
this.upFunFormTeam();
},
upFunFormTeam: function upFunFormTeam() {
var formations = this.team_data_list[this.fun_form_type][this.select_team_index];
if (!formations || !formations.pos_info) {
return nx.tbox("lab_mainUI_controller_tip1");
}
var pos_info = nx.dt.objClone(formations.pos_info);
var newpos_info = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i27 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i27][1]) {
pos_item.pos = this.formation_config.pos[_i27][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
newpos_info.push(pos_item);
}
}
formations.pos_info = newpos_info;
},
// 获取最佳上阵位置
getTheBestPos: function getTheBestPos(hero_vo) {
for (var _i28 in this.pos_name_list) {
if (hero_vo.pos_type == this.pos_name_list[_i28][0]) {
if (!this.five_hero_vo[this.pos_name_list[_i28][1]]) {
return this.pos_name_list[_i28][1];
}
}
}
if (hero_vo.pos_type == 3) {
for (var i2 = 1; i2 <= 6; i2++) {
for (var j in this.pos_name_list) {
if (i2 == this.pos_name_list[j][1]) {
if (!this.five_hero_vo[i2]) {
return i2;
}
}
}
}
}
if (hero_vo.pos_type == 2) {
for (var i3 = 1; i3 <= 9; i3++) {
for (var _j in this.pos_name_list) {
if (i3 == this.pos_name_list[_j][1]) {
if (!this.five_hero_vo[i3]) {
return i3;
}
}
}
}
}
if (hero_vo.pos_type == 1) {
for (var i4 = 1; i4 <= 9; i4++) {
for (var _j2 in this.pos_name_list) {
if (i4 == this.pos_name_list[_j2][1]) {
if (!this.five_hero_vo[i4]) {
return i4;
}
}
}
}
}
// 从1到3
return -1;
},
onClickSaveBtn: function onClickSaveBtn() {
this.onFightDrama();
},
//待定。。。。。。。。。。。。。。。。。。。。。
onClickKeyUpBtn: function onClickKeyUpBtn() {
if (this.running_move_act) return;
var hero_list;
if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
hero_list = PlanesafkController.getInstance().getModel().getAllPlanesHeroData();
} else if (this.fun_form_type == PartnerConst.Fun_Form.YearBoss || this.fun_form_type == PartnerConst.Fun_Form.YearCross || this.fun_form_type == PartnerConst.Fun_Form.YearDefend) {
var tag_camp = this.setting.period;
hero_list = [];
var alls = this.model.getDeepHeroListByCamp(HeroConst.CampType.eNone);
if (tag_camp == 1) {
//三系
var temp = [];
for (var p in alls) {
if (alls[p].camp_type == 1 || alls[p].camp_type == 2 || alls[p].camp_type == 3) {
temp.push(alls[p]);
}
}
for (var t in temp) {
if (temp[t].camp_type == this.cur_camp || this.cur_camp == 0) {
hero_list.push(temp[t]);
}
}
} else if (tag_camp == 3) {
//光暗
var temp2 = [];
for (var p2 in alls) {
if (alls[p2].camp_type == 4 || alls[p2].camp_type == 5) {
temp2.push(alls[p2]);
}
}
for (var t2 in temp2) {
if (temp2[t2].camp_type == this.cur_camp || this.cur_camp == 0) {
hero_list.push(temp2[t2]);
}
}
} else {
hero_list = alls;
}
} else {
hero_list = this.model.getDeepHeroListByCamp(HeroConst.CampType.eNone);
}
hero_list.sort(Utils.tableUpperSorter(["star", "power", "lev", "flag"]));
if (hero_list.length == 0) {
nx.tbox("tip_noHero");
return;
}
// 清空选中
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var list_index = this.getCurListIndexByParId(this.five_hero_vo[hero_i].partner_id);
if (list_index >= 0) {
this.partners[list_index].is_ui_select = false;
this.svcList.removeFocus(list_index);
// this.item_scrollview.updateItemData(list_index, this.cur_role_list[list_index]);
}
for (var _i29 in this.hero_item_list) {
if (this.hero_item_list[_i29].index == hero_i && this.hero_item_list[_i29].is_use) {
this.hero_item_list[_i29].rebind(hero_i, {}, "");
}
}
// this.hero_item_list[hero_i].rebind(hero_i,{},"");
delete this.five_hero_vo[hero_i];
}
}
var up_num = 0;
var heor_i = 0;
while (up_num < 5) {
var hero_vo = hero_list[heor_i]; //这里做列表区分 不能用一个剧情的 待改
var hero_pos = this.allocateHeroPos(hero_vo);
if (hero_pos >= 0) {
up_num++;
}
heor_i++;
if (heor_i == hero_list.length) break;
}
this.updateFightPower();
this.upFunFormTeam();
},
allocateHeroPos: function allocateHeroPos(hero_vo) {
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
if (hero_vo.bid == this.five_hero_vo[hero_i].bid) {
return -1;
}
}
}
// 同bid不能上阵
var best_index = this.getTheBestPos(hero_vo);
if (best_index < 0) {
// 没有上阵位置
return -1;
}
// 特殊英雄的判断
var more_team_data;
if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
more_team_data = PlanesafkController.getInstance().getModel().getAllPlanesHeroData();
} else if (this.fun_form_type == PartnerConst.Fun_Form.YearBoss || this.fun_form_type == PartnerConst.Fun_Form.YearCross || this.fun_form_type == PartnerConst.Fun_Form.YearDefend) {
var tag_camp = this.setting.period;
more_team_data = [];
var alls = this.model.getDeepHeroListByCamp(HeroConst.CampType.eNone);
if (tag_camp == 1) {
//三系
var temp = [];
for (var p in alls) {
if (alls[p].camp_type == 1 || alls[p].camp_type == 2 || alls[p].camp_type == 3) {
temp.push(alls[p]);
}
}
for (var t in temp) {
if (temp[t].camp_type == this.cur_camp || this.cur_camp == 0) {
more_team_data.push(temp[t]);
}
}
} else if (tag_camp == 3) {
//光暗
var temp2 = [];
for (var p2 in alls) {
if (alls[p2].camp_type == 4 || alls[p2].camp_type == 5) {
temp2.push(alls[p2]);
}
}
for (var t2 in temp2) {
if (temp2[t2].camp_type == this.cur_camp || this.cur_camp == 0) {
more_team_data.push(temp2[t2]);
}
}
} else {
more_team_data = alls;
}
} else {
more_team_data = this.model.getDeepHeroListByCamp(HeroConst.CampType.eNone);
}
var best = this.checkOtherCondition(hero_vo, this.fun_form_type, more_team_data);
if (!best) {
// 没有上阵位置
return -1;
}
this.five_hero_vo[best_index] = hero_vo;
for (var _i30 in this.hero_item_list) {
if (this.hero_item_list[_i30].index == best_index && this.hero_item_list[_i30].is_use) {
this.hero_item_list[_i30].rebind(best_index, hero_vo, "");
}
}
// this.hero_item_list[best_index].rebind(best_index,hero_vo,"");
var list_index = this.getCurListIndexByParId(this.five_hero_vo[best_index].partner_id);
if (list_index >= 0) {
this.partners[list_index].is_ui_select = true;
this.svcList.addFocus(list_index);
// this.item_scrollview.updateItemData(list_index, this.cur_role_list[list_index]);
}
return best_index;
},
checkOtherCondition: function checkOtherCondition(check_hero_vo, _fun_form_type, more_team_data) {
if (!this.five_hero_vo) {
return;
}
var fun_form_type = _fun_form_type || this.fun_form_type;
if (fun_form_type == PartnerConst.Fun_Form.CrossArena || fun_form_type == PartnerConst.Fun_Form.CrossArenaDef || fun_form_type == PartnerConst.Fun_Form.ArenapeakchampionDef) {
// 跨服竞技场,同类英雄在所有队伍中不能超过3个
var have_num = 0;
if (more_team_data) {
//剧情上面的多队伍
for (var k in more_team_data) {
var v = more_team_data[k];
var pos_info = v.pos_info || [];
for (var p in pos_info) {
var info = pos_info[p];
var hero_vo = this.model.getHeroById(info.id);
if (hero_vo) {
if (hero_vo.bid == check_hero_vo.bid) {
have_num = have_num + 1;
}
if (have_num >= 2) {
return false;
}
}
}
}
} else {
for (var i in this.five_hero_vo) {
var hero_datas = this.five_hero_vo[i];
for (var pos in hero_datas) {
var _hero_vo = hero_datas[pos];
if (_hero_vo.bid == check_hero_vo.bid) {
have_num = have_num + 1;
}
if (have_num >= 2) {
return false;
}
}
if (have_num >= 2) {
return false;
}
}
}
} else if (fun_form_type == PartnerConst.Fun_Form.Adventure_Mine_Def) {
//秘矿冒险
if (this.dic_mine_hero_list && this.dic_mine_hero_list[check_hero_vo.id]) {
return false;
}
} else if (fun_form_type == PartnerConst.Fun_Form.Planes) {
//位面
var con_cfg = gdata("planes_data", "data_const", "planes_filter_condition"); //game.configs.PlanesData.data_const["planes_filter_condition"]
var hp_per = 100;
if (check_hero_vo.hp_per <= 0) {
//血量为0不可上阵
return false;
} else if (con_cfg && con_cfg.val[1] && check_hero_vo.lev < con_cfg.val[1]) {
// 等级小于配置等级不可上阵
return false;
}
}
if (fun_form_type == PartnerConst.Fun_Form.Drama) {
var tab_data = this.tab_list[this.fun_form_type];
if (check_hero_vo.checkResonateHeroByFormType && check_hero_vo.checkResonateHeroByFormType(tab_data.fun_form_type, true)) {
return false;
}
} else if (check_hero_vo.checkResonateHeroByFormType && check_hero_vo.checkResonateHeroByFormType(this.fun_form_type, true)) {
return false;
}
return true;
},
// 保存上阵信息
saveForm: function saveForm() {
var pos_info = [];
var pos_n = 0;
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i31 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i31][1]) {
pos_item.pos = this.formation_config.pos[_i31][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
pos_info.push(pos_item);
pos_n++;
}
}
if (pos_n <= 0) nx.tbox("tip_minHeros");
this.ctrl.sender11212(this.fun_form_type, this.formation_type, pos_info, this.hallows_id);
},
getCurListIndexByParId: function getCurListIndexByParId(partner_id) {
for (var role_i in this.partners) {
if (this.partners[role_i].partner_id === partner_id) return role_i;
}
},
onClickChangeForm: function onClickChangeForm() {
this.ctrl.openFormationSelectPanel(true, this.formation_type, this.updageFormType.bind(this));
},
updageFormType: function updageFormType(form_type) {
this.formation_type = form_type;
if (this.fun_form_type == PartnerConst.Fun_Form.HeavenBoss || this.fun_form_type == PartnerConst.Fun_Form.Heaven || this.fun_form_type == PartnerConst.Fun_Form.EliteKingMatch || this.fun_form_type == PartnerConst.Fun_Form.EliteDefend || this.fun_form_type == PartnerConst.Fun_Form.EliteKingDefend || this.fun_form_type == PartnerConst.Fun_Form.EliteMatch) {
this.team_data_list[this.fun_form_type][this.select_team_index].formation_type = this.formation_type;
}
this.formation_config = game.configs.formation_data.data_form_data[this.formation_type];
this.updateFormationStation(this.formation_config);
},
onClickFightHeroNode: function onClickFightHeroNode(event) {
var touch_pos = this.hero_main.convertToNodeSpaceAR(event.touch.getLocation());
if (!this.hava_drag_item) {
for (var _i32 in this.hero_item_list) {
var item = this.hero_item_list[_i32];
var node = item.node;
if (node) {
//只判断可用位置,不判断空白位置
//触摸屏幕获取到的是世界坐标,需要转换为局部坐标再判断
var n_rect = node.getBoundingBox();
if (n_rect.contains(touch_pos)) {
//找到后直接跳出循环
if (nx.dt.objEmpty(item.mdata)) {
break;
}
this.hava_drag_item = item;
this.hava_drag_data = item.mdata;
this.hava_drag_item.player.active = false;
// this.showMoveSk(true,this.hava_drag_data.camp_type);
break;
}
}
}
}
if (event.type == cc.Node.EventType.TOUCH_START) {
if (this.hava_drag_item) {
this.hava_drag_item.circlePlay(1);
}
} else if (event.type == cc.Node.EventType.TOUCH_CANCEL) {
// 如果取消,则下阵
var self = this;
if (self.hava_drag_item) {
this.showMoveSk(false);
//模型位置复原
var select_pos = null;
var cdn = this.table_main.children;
for (var _i33 in cdn) {
var _node = cdn[_i33];
if (_node) {
if (_node.getBoundingBox().contains(touch_pos)) {
//找到后直接跳出循环
select_pos = _node.form_index;
break;
}
}
}
//不在规范区域内
if (!this.hero_main.getBoundingBox().contains(touch_pos) || select_pos == null) {
//模型位置复原
self.hava_drag_item.resetPlayerPos();
self.hava_drag_item = null;
self.hava_drag_data = null;
return;
}
if (select_pos == self.hava_drag_item.index) {
//没有找到需要交换的位置,英雄原位置下阵
self.selectStationHero(self.hava_drag_data);
} else {
if (self.hava_drag_item.index) {
self.selectStation(self.hava_drag_item.index, select_pos, self.hava_drag_data);
}
}
//模型位置复原
self.hava_drag_item.resetPlayerPos();
self.hava_drag_item = null;
self.hava_drag_data = null;
}
}
if (event.type === cc.Node.EventType.TOUCH_MOVE) {
//微缩模型跟随移动,最后只交换数据不交换位置
if (this.hava_drag_item) {
//先记录原来的位置
// let item_touch_pos = this.hava_drag_item.node.convertToNodeSpaceAR(event.touch.getLocation());
// let new_pos = cc.v2(item_touch_pos.x,item_touch_pos.y-30);
this.showMoveSk(true, this.hava_drag_data.camp_type, 2);
//控制边界
var new_pos = this.node.convertToNodeSpaceAR(event.touch.getLocation());
this.move_node.position = new_pos;
// this.hava_drag_item.player.position = new_pos;
}
}
if (event.type === cc.Node.EventType.TOUCH_END) {
// 如果结束则判断位置
var _self = this;
if (this.hava_drag_item) {
this.showMoveSk(false);
var _select_pos = null;
var _cdn = this.table_main.children;
for (var _i34 in _cdn) {
var _node2 = _cdn[_i34];
if (_node2) {
if (_node2.getBoundingBox().contains(touch_pos)) {
//找到后直接跳出循环
_select_pos = _node2.form_index;
break;
}
}
}
//不在规范区域内
if (!this.hero_main.getBoundingBox().contains(touch_pos) || _select_pos == null) {
//模型位置复原
_self.hava_drag_item.resetPlayerPos();
_self.hava_drag_item = null;
_self.hava_drag_data = null;
return;
}
if (_select_pos == _self.hava_drag_item.index) {
//没有找到需要交换的位置,英雄原位置下阵
_self.selectStationHero(_self.hava_drag_data);
} else {
if (_self.hava_drag_item.index) {
_self.selectStation(_self.hava_drag_item.index, _select_pos, _self.hava_drag_data);
}
}
//模型位置复原
_self.hava_drag_item.resetPlayerPos();
_self.hava_drag_item = null;
_self.hava_drag_data = null;
}
}
},
showMoveSk: function showMoveSk(status, camp, type) {
if (status) {
if (this.move_effect_type == type) return;
this.move_effect_type = type;
this.move_node.active = true;
var effect_id = "blue";
if (camp == 2) {
effect_id = "red";
} else if (camp == 3) {
effect_id = "green";
} else if (camp == 4) {
effect_id = "yellow";
} else if (camp == 5) {
effect_id = "puple";
}
var action_str = cc.js.formatStr("action%s_%s", type, effect_id);
this.move_circle_sk.action(action_str, true);
} else {
this.move_effect_type = -1;
this.move_circle_sk.stop();
this.move_node.active = false;
this.move_node.position = cc.v2(-1000, -1000);
}
},
selectStation: function selectStation(cur_index, select_pos, hero_vo) {
// 确定该位置在五个位置中的索引
if (!select_pos) {
this.five_hero_vo[cur_index] = {};
for (var _i35 in this.hero_item_list) {
if (this.hero_item_list[_i35].index == cur_index && this.hero_item_list[_i35].is_use) {
this.hero_item_list[_i35].rebind(cur_index, this.five_hero_vo[cur_index], "");
this.hero_item_list[_i35].circlePlay(3);
}
}
// this.hero_item_list[cur_index].rebind(cur_index,this.five_hero_vo[cur_index],"");
var list_index = this.getCurListIndexByParId(hero_vo.partner_id);
// this.cur_role_list[list_index].is_ui_select = false;
this.svcList.removeFocus(list_index);
return;
}
var five_index = null;
for (var pos_i in this.formation_config.pos) {
if (this.formation_config.pos[pos_i][1] == select_pos) {
five_index = this.formation_config.pos[pos_i][0];
break;
}
}
if (five_index !== null) {
// 选定合法战位
if (this.five_hero_vo[select_pos]) {
// 交换战位置 this.five_hero_vo[five_index]
// if(!this.five_hero_vo[five_index]){
// this.five_hero_vo[five_index] = {};
// }
this.five_hero_vo[cur_index] = this.five_hero_vo[select_pos];
this.five_hero_vo[select_pos] = hero_vo;
for (var _i36 in this.hero_item_list) {
if (this.hero_item_list[_i36].index == cur_index && this.hero_item_list[_i36].is_use) {
this.hero_item_list[_i36].rebind(cur_index, this.five_hero_vo[cur_index], "");
}
}
this.hero_item_list[five_index].rebind(select_pos, this.five_hero_vo[select_pos], "");
this.hero_item_list[five_index].circlePlay(3);
} else {
// 空战位
delete this.five_hero_vo[cur_index];
// this.five_hero_vo[cur_index] = {};
this.five_hero_vo[select_pos] = hero_vo;
for (var _i37 in this.hero_item_list) {
if (this.hero_item_list[_i37].index == cur_index && this.hero_item_list[_i37].is_use) {
this.hero_item_list[_i37].rebind(cur_index, this.five_hero_vo[cur_index], "");
}
}
// this.hero_item_list[cur_index].rebind(cur_index,this.five_hero_vo[cur_index],"");
this.hero_item_list[five_index].rebind(select_pos, this.five_hero_vo[select_pos], "");
this.hero_item_list[five_index].circlePlay(3);
}
} else {
this.five_hero_vo[cur_index] = hero_vo;
for (var _i38 in this.hero_item_list) {
if (this.hero_item_list[_i38].index == cur_index && this.hero_item_list[_i38].is_use) {
this.hero_item_list[_i38].rebind(cur_index, this.five_hero_vo[cur_index], "");
this.hero_item_list[_i38].circlePlay(3);
}
}
// this.hero_item_list[cur_index].rebind(cur_index,this.five_hero_vo[cur_index],"");
}
this.upFunFormTeam();
},
selectStationHero: function selectStationHero(hero_vo, star_pos, end_pos) {
// 是否已经选中
var select_index = -1;
for (var five_i in this.five_hero_vo) {
if (this.five_hero_vo[five_i] && this.five_hero_vo[five_i].partner_id === hero_vo.partner_id) select_index = five_i;
}
if (select_index !== -1) {
// 已在选中队列则取消选中
// 播放下阵动画
var list_index = this.getCurListIndexByParId(this.five_hero_vo[select_index].partner_id);
var cur_list_item = this.hava_drag_item;
if (list_index >= 0) {
this.partners[list_index].is_ui_select = false;
}
this.svcList.removeFocus(list_index);
for (var _i39 in this.hero_item_list) {
if (this.hero_item_list[_i39].index == select_index && this.hero_item_list[_i39].is_use) {
this.hero_item_list[_i39].circlePlay(1);
this.hero_item_list[_i39].rebind(select_index, {}, "");
}
}
// this.hero_item_list[select_index].rebind(select_index,{},"");
delete this.five_hero_vo[select_index];
this.updateFightPower();
this.upFunFormTeam();
}
},
// 计算光环类型
calculateCampHaloType: function calculateCampHaloType() {
var dic_camp = {};
for (var heor_i in this.five_hero_vo) {
if (this.five_hero_vo[heor_i]) {
if (!dic_camp[this.five_hero_vo[heor_i].camp_type]) {
if (!this.five_hero_vo[heor_i].camp_type) {
dic_camp[0] = 1;
} else {
dic_camp[this.five_hero_vo[heor_i].camp_type] = 1;
}
} else {
dic_camp[this.five_hero_vo[heor_i].camp_type]++;
}
}
}
var form_id_list = BattleController.getInstance().getModel().getFormIdListByCamp(dic_camp);
var halo_icon_config = BattleController.getInstance().getModel().getCampIconConfigByIds(form_id_list);
this.halo_form_id = form_id_list;
var halo_icon_path = null;
//重置状态
for (var ord = 1; ord <= 5; ord++) {
nx.gui.setActive(this.halo_btn, String(ord), false);
}
var num = 0;
for (var camp in dic_camp) {
var pnum = dic_camp[camp];
for (var _i40 = 1 + num; _i40 <= pnum + num; _i40++) {
if (camp != 0) {
var resPath = cc.path.join("prefab/battle/battledrama/star", cc.js.formatStr("%s_%s", camp, _i40));
nx.gui.setSpriteFrame(this.halo_btn, String(_i40), resPath);
}
nx.gui.setActive(this.halo_btn, String(_i40), true);
}
num += pnum;
}
},
updateHaloEffect: function updateHaloEffect(status, icon_sf) {
var sps = nx.gui.getComponent(this.halo_btn, "sp", sp.Skeleton);
if (status) {
sps.node.active = true;
var effect_path = PathTool.getSpinePath("E80005", "action", false);
nx.res.loadRes(effect_path, sp.SkeletonData, function (_e, _p) {
if (_e) {
return;
}
if (sps) {
sps.skeletonData = res;
sps.setAnimation(0, "action", true);
}
});
} else {
if (sps) {
sps.node.active = false;
sps.clearTracks();
}
}
},
onClickHallowsBtn: function onClickHallowsBtn() {
this.ctrl.openFormHallowsSelectPanel(true, this.hallows_id, this.updateHallow.bind(this));
},
updateHallow: function updateHallow(hallow_vo) {
if (!!hallow_vo) {
// 装配
this.hallows_id = hallow_vo.id;
} else {
// 取消装配
this.hallows_id = 0;
}
if (this.fun_form_type == PartnerConst.Fun_Form.HeavenBoss || this.fun_form_type == PartnerConst.Fun_Form.Heaven || this.fun_form_type == PartnerConst.Fun_Form.EliteMatch || this.fun_form_type == PartnerConst.Fun_Form.EliteKingDefend || this.fun_form_type == PartnerConst.Fun_Form.EliteKingMatch || this.fun_form_type == PartnerConst.Fun_Form.EliteDefend) {
for (var _i41 in this.team_data_list) {
var list = this.team_data_list[_i41];
if (_i41 == this.fun_form_type) {
for (var l in list) {
var show = list[l];
show.hallows_id = this.hallows_id;
}
}
}
}
this.updateHallowsIcon();
},
updateHallowsIcon: function updateHallowsIcon() {
var sps = nx.gui.getComponent(this.hallows_icon.node.parent, "sp", sp.Skeleton);
if (!sps) return;
if (this.hallows_id === 0) {
sps.node.active = false;
sps.clearTracks();
var empty_icon = "60001";
var res_path = PathTool.queryIconPath(empty_icon);
nx.gui.setSpriteFrame(this.hallows_icon, "", res_path);
} else {
sps.node.active = true;
var hallow_cfg = game.configs.hallows_data.data_base[this.hallows_id];
if (hallow_cfg) {
var _res_path = PathTool.queryIconPath(hallow_cfg.item_id);
nx.gui.setSpriteFrame(this.hallows_icon, "", _res_path);
}
var effect_path = PathTool.getSpinePath("E80006");
cc.loader.loadRes(effect_path, sp.SkeletonData, function (err, res) {
if (err) {
return;
}
if (sps) {
sps.skeletonData = res;
sps.setAnimation(0, "action", true);
}
});
}
},
onClickFightBtn: function onClickFightBtn() {
var pos_info = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i42 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i42][1]) {
pos_item.pos = this.formation_config.pos[_i42][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
pos_info.push(pos_item);
}
}
if (pos_info.length <= 0) {
nx.tbox("tip_minHeros");
return;
}
if (this.fun_form_type == PartnerConst.Fun_Form.Expedit_Fight) {
// 远征
this.onFightExpedit();
} else if (this.fun_form_type == PartnerConst.Fun_Form.EndLess) {
// 无尽试炼
this.onFightEndLess();
} else if (this.fun_form_type == PartnerConst.Fun_Form.GuildDun_AD) {
// 联盟副本
this.onFightGuildDun(pos_info);
} else if (this.fun_form_type == PartnerConst.Fun_Form.LimitExercise) {
// 试炼之境
this.onFightLimitExercise();
} else if (this.fun_form_type == PartnerConst.Fun_Form.Arena) {
// 试炼之境
this.onFightArena(pos_info);
} else if (this.fun_form_type == PartnerConst.Fun_Form.Ladder) {
// 试炼之境
this.onFightLadder(pos_info);
} else if (this.fun_form_type == PartnerConst.Fun_Form.GuildSecretArea) {
// 试炼之境
this.onFightGuildSecretArea();
} else if (this.fun_form_type == 12 || this.fun_form_type == 13 || this.fun_form_type == 14 || this.fun_form_type == 15 || this.fun_form_type == 16) {
this.onFightElement();
} else if (this.fun_form_type == PartnerConst.Fun_Form.Heaven || this.fun_form_type == PartnerConst.Fun_Form.HeavenBoss) {
// 天界副本
this.team_data_list[this.fun_form_type][this.select_team_index].pos_info = pos_info;
this.onFightHeaven();
} else if (this.fun_form_type == PartnerConst.Fun_Form.Encounter) {
this.onFightEncounter();
} else if (this.fun_form_type == PartnerConst.Fun_Form.YearCross) {
this.goCampfightCross();
} else {
// 默认剧情通关
this.onFightDrama(pos_info);
}
},
goCampfightCross: function goCampfightCross() {
var _this2 = this;
// let self = this;
if (!this.team_data_list[this.fun_form_type] || !this.team_data_list[this.fun_form_type][1]) return;
var pos_info = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i43 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i43][1]) {
pos_item.pos = this.formation_config.pos[_i43][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
pos_info.push(pos_item);
}
}
if (pos_info.length <= 0) {
nx.tbox("tip_minHeros");
return;
}
//pvp直接挑战
BattleController.getInstance().requestOpenBattleRelevanceWindow(BCS.Fight_Type.newYearCross, null, function (_data) {
if (_data) {
CampfightMod.getInstance().reqBat(_this2.formation_type, _this2.setting.period, pos_info, _this2.hallows_id, _this2.setting.bat_data.rid, _this2.setting.bat_data.srv_id);
// self.delayClose();
gcore.GlobalEvent.fire(BattleDramaEvent.AbnormalShutDownForm);
}
});
// CampfightMod.getInstance().reqBat(this.formation_type,this.setting.period,pos_info,this.hallows_id,this.setting.bat_data.rid,this.setting.bat_data.srv_id);
},
onFightEncounter: function onFightEncounter() {
var pos_info = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i44 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i44][1]) {
pos_item.pos = this.formation_config.pos[_i44][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
pos_info.push(pos_item);
}
}
if (pos_info.length <= 0) {
nx.tbox("tip_minHeros");
return;
}
this.cbClose = null;
ActEncounter.getInstance().send31001({
id: this.setting.id,
formation_type: this.formation_type,
pos_info: pos_info,
hallows_id: this.hallows_id
}, function (_data) {});
},
gotoFight: function gotoFight() {
if (this.fun_form_type != PartnerConst.Fun_Form.LimitExercise) {
this.onClickCloseBtn();
}
if (this.fun_form_type === PartnerConst.Fun_Form.Drama) {
BattleDramaController.getInstance().send13003(0);
} else if (this.fun_form_type == PartnerConst.Fun_Form.Startower) {
// 试练塔 --星命塔
this.onFightStarTower();
}
},
onFightExpedit: function onFightExpedit() {
// var pos_info = [];
// for( var i in this.five_hero_vo ) {
// if( this.five_hero_vo[ i ] ) {
// var tab = {};
// tab.pos = i;
// tab.owner_id = this.five_hero_vo[ i ].rid;
// tab.owner_srv_id = this.five_hero_vo[ i ].srv_id;
// if( this.five_hero_vo[ i ].partner_id > 100000 ) {
// tab.id = this.five_hero_vo[ i ].partner_id - 100000;
// } else {
// tab.id = this.five_hero_vo[ i ].partner_id;
// }
// pos_info.push( tab );
// }
// }
// HeroExpeditController.getInstance().sender24403( this.formation_type, pos_info, this.hallows_id )
// this.onClickCloseBtn()
},
onFightEndLess: function onFightEndLess() {
var pos_info = [];
var pos_dir = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i45 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i45][1]) {
pos_item.pos = this.formation_config.pos[_i45][0];
}
}
// pos_item.pos = hero_i;
if (this.five_hero_vo[hero_i].partner_id > 100000) {
pos_item.id = this.five_hero_vo[hero_i].partner_id - 100000;
} else {
pos_item.id = this.five_hero_vo[hero_i].partner_id;
}
pos_item.owner_id = this.five_hero_vo[hero_i].rid;
pos_item.owner_srv_id = this.five_hero_vo[hero_i].srv_id;
pos_info.push(pos_item);
}
}
for (var i = 0; i < pos_info.length; i++) {
pos_dir[i] = pos_info[i];
}
var EndlessTrailController = require("endless_trail_controller");
EndlessTrailController.getInstance().send23901(this.formation_type, pos_dir, this.hallows_id);
this.onClickCloseBtn();
},
// 发送试练塔
onFightStarTower: function onFightStarTower() {
var tower = this.setting.tower_lev || 0;
// let is_vip_skip = nx.storage.get( "vip_skip" );
// let auto = Number( is_vip_skip ) || 0;
StartowerController.getInstance().sender11322(tower, 0);
},
onFightGuildDun: function onFightGuildDun(pos_info) {
var boss_id = this.setting.boss_id;
GuildbossController.getInstance().send21308(boss_id, this.formation_type, pos_info, this.hallows_id);
this.onClickCloseBtn();
},
onFightArena: function onFightArena(pos_info) {
var AC = ArenaController.getInstance();
var rid = this.setting.fight.rid;
var srv_id = this.setting.fight.srv_id;
this.ctrl.sender11212(this.fun_form_type, this.formation_type, pos_info, this.hallows_id);
AC.sender20203(rid, srv_id);
this.onClickCloseBtn();
},
onFightLadder: function onFightLadder(pos_info) {
var LC = LadderController.getInstance();
var rid = this.setting.fight.rid;
var srv_id = this.setting.fight.srv_id;
this.ctrl.sender11212(this.fun_form_type, this.formation_type, pos_info, this.hallows_id);
LC.requestChallengeEnemy(rid, srv_id);
this.onClickCloseBtn();
},
onFightDrama: function onFightDrama() {
var pos_info = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i46 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i46][1]) {
pos_item.pos = this.formation_config.pos[_i46][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
// -- 位面(雇佣的英雄也要加入阵容)
pos_item.flag = this.five_hero_vo[hero_i].flag || 0;
}
pos_info.push(pos_item);
}
}
if (pos_info.length <= 0) {
nx.tbox("tip_minHeros");
return;
}
if (this.fun_form_type == PartnerConst.Fun_Form.Planes) {
// 位面
var planes_pos_info = [];
for (var i in this.five_hero_vo) {
var v = this.five_hero_vo[i];
var d = {};
for (var j in this.formation_config.pos) {
if (i == this.formation_config.pos[j][1]) {
d.pos = this.formation_config.pos[j][0];
}
}
// d.pos = i
d.id = v.partner_id;
if (v.flag && v.flag == 1) {
d.data = v;
}
planes_pos_info.push(d);
}
// 更新守卫界面数据
gcore.GlobalEvent.fire(PlanesafkEvent.Update_Form_Data_Event, this.formation_type, planes_pos_info);
PlanesafkController.getInstance().sender28611(this.formation_type, pos_info, this.hallows_id);
} else if (this.fun_form_type == PartnerConst.Fun_Form.YearBoss || this.fun_form_type == PartnerConst.Fun_Form.YearCross || this.fun_form_type == PartnerConst.Fun_Form.YearDefend) {
//阵营大战
this.onFightCampfight();
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteMatch) {
this.onFightEliteMatch(1);
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteKingMatch) {
this.onFightEliteMatch(2);
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteDefend) {
this.onFightEliteMatch(3);
} else if (this.fun_form_type == PartnerConst.Fun_Form.EliteKingDefend) {
this.onFightEliteMatch(4);
} else {
this.ctrl.sender11212(this.fun_form_type, this.formation_type, pos_info, this.hallows_id);
}
},
onFightCampfight: function onFightCampfight() {
if (!this.team_data_list[this.fun_form_type] || !this.team_data_list[this.fun_form_type][1]) return;
var pos_info = [];
var form_data = this.team_data_list[this.fun_form_type][1];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i47 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i47][1]) {
pos_item.pos = this.formation_config.pos[_i47][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
pos_info.push(pos_item);
}
}
if (pos_info.length <= 0) {
nx.tbox("tip_minHeros");
return;
}
//即时保存队伍信息
if (this.fun_form_type == PartnerConst.Fun_Form.YearDefend) {
CampfightMod.getInstance().setDefendForm(this.formation_type, this.setting.period, pos_info, this.hallows_id);
} else {
CampfightMod.getInstance().sendForm(this.formation_type, this.setting.period, pos_info, this.hallows_id);
}
},
// --發送精英賽
onFightEliteMatch: function onFightEliteMatch(match_type) {
var self = this;
// if( (match_type == 2 || match_type == 4) && !this.team_five_hero_vo[ this.fun_form_type ] ) return;
var _type = match_type || self.setting.state;
var formations = [];
var team_lists = this.team_data_list[this.fun_form_type];
for (var _i48 in team_lists) {
var team = team_lists[_i48];
var data = {};
data.order = team.order;
data.formation_type = team.formation_type;
data.hallows_id = team.hallows_id;
data.pos_info = team.pos_info;
formations.push(data);
}
if (_type == ElitematchConst.MatchType.eKingMatch || _type == 4) {
// --表示王者賽
var is_tips = false;
if (!formations[1]) {
is_tips = true;
}
for (i in formations) {
var v = formations[i];
if (v.pos_info.length <= 0) {
is_tips = true;
break;
}
}
if (is_tips) {
// --第二隊伍未空.需要提示
var str = nx.text.getKey("tip_minHeros");
nx.mbox(str, ["cancel", "confirm", function (_key, _box) {
if (_key == "confirm") {
ElitematchController.getInstance().sender24921(_type, formations);
}
}]);
} else {
ElitematchController.getInstance().sender24921(_type, formations);
}
} else {
console.log("當前的隊伍信息" + JSON.stringify(formations));
ElitematchController.getInstance().sender24921(_type, formations);
}
},
//试炼之境的出战
onFightLimitExercise: function onFightLimitExercise() {
var pos_info = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i49 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i49][1]) {
pos_item.pos = this.formation_config.pos[_i49][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
pos_info.push(pos_item);
}
}
if (pos_info.length <= 0) {
nx.tbox("tip_minHeros");
return;
}
this.ctrl.sender11212(PartnerConst.Fun_Form.LimitExercise, this.formation_type, pos_info, this.hallows_id);
},
onFightElement: function onFightElement() {
var pos_info = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
for (var _i50 in this.formation_config.pos) {
if (hero_i == this.formation_config.pos[_i50][1]) {
pos_item.pos = this.formation_config.pos[_i50][0];
}
}
pos_item.id = this.five_hero_vo[hero_i].partner_id;
pos_info.push(pos_item);
}
}
if (pos_info.length <= 0) {
nx.tbox("tip_minHeros");
return;
}
//即时保存队伍信息
this.saveForm();
ElementController.getInstance().checkJoinHeavenBattle(this.setting.ele_type, this.setting.customs_id, this.formation_type, pos_info, this.hallows_id);
},
//發送公會秘境boss
onFightGuildSecretArea: function onFightGuildSecretArea() {
var pos_info = [];
for (var hero_i in this.five_hero_vo) {
if (this.five_hero_vo[hero_i]) {
var pos_item = {};
pos_item.pos = hero_i;
pos_item.id = this.five_hero_vo[hero_i].partner_id;
pos_info.push(pos_item);
}
}
if (pos_info.length <= 0) {
nx.tbox("tip_minHeros");
return;
}
var boss_id = this.setting.boss_id;
GuildsecretareaController.getInstance().sender26802(boss_id, this.formation_type, pos_info, this.hallows_id);
this.onClickCloseBtn();
},
// 天界副本
onFightHeaven: function onFightHeaven() {
if (!this.team_data_list[this.fun_form_type][this.select_team_index]) {
return;
}
var _type = 1;
if (this.fun_form_type == PartnerConst.Fun_Form.HeavenBoss) {
_type = 2;
}
var tab_data = this.tab_list[this.select_team_index - 1];
var dic_team_data = this.getDicTeamData(tab_data);
var formations = [];
for (var _i51 in dic_team_data) {
var team_data = dic_team_data[_i51];
var data = {};
data.order = team_data.order;
var pos_info = team_data.pos_info;
data.formation_type = team_data.formation_type;
data.hallows_id = team_data.hallows_id;
data.pos_info = pos_info;
Utils.tableInsert(formations, data);
}
var have_hero = false;
for (var _i52 in formations) {
var v = formations[_i52];
if (v.pos_info.length > 0) {
have_hero = true;
break;
}
}
if (!have_hero) {
nx.tbox("DispatchMemeberEmpty");
return;
}
if (_type == 2) {
// boss關
var is_tips = false;
if (!formations[1]) {
is_tips = true;
}
for (var _i53 in formations) {
var _v = formations[_i53];
if (_v.pos_info.length == 0) {
is_tips = true;
break;
}
}
if (is_tips) {
var str = nx.text.getKey("lab_formTeamTips");
nx.mbox(str, ["cancel", "confirm"], function (_key, _box) {
_box.close();
if (_key == "confirm") {
HeavenController.getInstance().checkJoinHeavenBattle(_type, formations);
}
});
} else {
HeavenController.getInstance().checkJoinHeavenBattle(_type, formations);
}
} else {
HeavenController.getInstance().checkJoinHeavenBattle(_type, formations);
}
},
getDicTeamData: function getDicTeamData(tab_data) {
if (!tab_data) {
return {};
}
var dic_team_data = {};
var more_team_data = null;
if (tab_data.is_multiple) {
for (var _i54 in this.tab_list) {
var v = this.tab_list[_i54];
if (tab_data.fun_form_type == v.fun_form_type) dic_team_data[Number(_i54)] = this.team_data_list[tab_data.fun_form_type][Number(_i54) + 1];
}
} else {
dic_team_data[this.select_team_index] = this.team_data_list[tab_data.fun_form_type][this.select_team_index];
if (this.fun_form_type == PartnerConst.Fun_Form.Drama && (tab_data.fun_form_type == PartnerConst.Fun_Form.CrossArenaDef || tab_data.fun_form_type == PartnerConst.Fun_Form.ArenapeakchampionDef))
//剧情布阵 多队伍之跨服竞技场 巅峰冠军赛
more_team_data = this.dic_more_team_data[tab_data.fun_form_type];
}
return dic_team_data;
},
setPosInfoData: function setPosInfoData() {
if (this.team_data_list[this.select_team_index - 1]) {
var pos_info = [];
for (var j in this.five_hero_vo) {
var pos_item = {};
for (var _i55 in this.formation_config.pos) {
if (j == this.formation_config.pos[_i55][1]) {
pos_item.pos = this.formation_config.pos[_i55][0];
}
}
pos_item.id = this.five_hero_vo[j].partner_id;
pos_info.push(pos_item);
}
this.team_data_list[this.select_team_index - 1].pos_info = pos_info;
}
},
onClickCloseBtn: function onClickCloseBtn() {
this.ctrl.openFormGoFightPanel(false);
},
// onClickElfin:function(){
// ElfinController.getInstance().send26556();
// ElfinController.getInstance().openElfinAdjustWindow( true, 2, 1);
// },
onClickHaloView: function onClickHaloView() {
BattleController.getInstance().openBattleCampView(true, this.halo_form_id);
},
onTouchSkip: function onTouchSkip() {
if (this.tween) {
this.tween.stop();
}
var nod = nx.gui.find(this.skip_tog, "txt");
nod.scale = 0;
nx.gui.setActive(nod, "", true);
this.tween = cc.tween(nod).to(0.3, {
scaleX: -1,
scaleY: 1
}).delay(3).to(0.3, {
scale: 0
}).call(function () {
nx.gui.setActive(nod, "", false);
}).start();
},
onTouchRecommend: function onTouchRecommend() {
nx.bridge.createPanel("WndPopRecommend");
}
// EncounterPlotCells(){
// let children = this.svcList.bindSCV.content.children;
// //需要引導的英雄
// let heros = game.configs.fake_battle_data.data_const.guide_partner.val;
// for(let i=0;i<heros.length;i++){
// let id = heros[i];
// if(id){
// for(let c in children){
// let partner = children[c];
// if(partner.svItem && partner.svItem.mdata.partner_id == id){
// let plot = nx.gui.ge tComponent(partner.children[0],"plot","cmp.plot.trigger");
// if(plot){
// plot.pID = "fake_" + id;
// plot.regist();
// break;
// }
// }
// }
// }
// }
// }
});
cc._RF.pop();