1971 lines
68 KiB
TypeScript
1971 lines
68 KiB
TypeScript
import AudioUtil from "../core/AudioUtil";
|
||
import GameModel from "../core/GameModel";
|
||
import MsgAlert from "../game/msg/MsgAlert";
|
||
import FGAlert from "../gear_2.3.4/fgui/FGAlert";
|
||
import FGUtil from "../gear_2.3.4/fgui/FGUtil";
|
||
import SKUIUtil from "../gear_2.3.4/util/SKUIUtil";
|
||
import VIPUtil from "../game/role/VIPUtil";
|
||
import GameUtil from "../core/GameUtil";
|
||
import SKDataUtil from "../gear_2.3.4/util/SKDataUtil";
|
||
import WingUtil from "../wing/WingUtil";
|
||
import WeaponUtil from "../weapon/WeaponUtil";
|
||
import CPubFunction = require('../../game/PubFunction');
|
||
import CMainPlayerInfo = require('../../game/MainPlayerInfo');
|
||
import { EAttrTypeL1 } from "../core/EEnum";
|
||
import ItemUtil from "../core/ItemUtil";
|
||
import SkillUtil from "../game/skill/core/SkillUtil";
|
||
|
||
const { ccclass, property } = cc._decorator;
|
||
export default class TeamPanel extends cc.Component {
|
||
|
||
/**
|
||
* 隊伍單例實例
|
||
*/
|
||
public static Instance : TeamPanel = null;
|
||
/**
|
||
* 是否已加入隊伍
|
||
*/
|
||
hasTeam : Boolean = false;
|
||
/**
|
||
* 隊伍ID
|
||
*/
|
||
teamId : number = 0;
|
||
/**
|
||
* 是否為隊長
|
||
*/
|
||
isLeader : Boolean = false;
|
||
/**
|
||
* 自定義目標名稱
|
||
*/
|
||
targetCustomName : string = "無目標";
|
||
/**
|
||
* 招募種族限制列表
|
||
*/
|
||
raceLimit : any = [];
|
||
/**
|
||
* 招募面板中標籤名稱
|
||
*/
|
||
recruitLabelList : any = ["來男鬼", "來手動", "女人", "女魔", "來輸出", "男人", "男魔"];
|
||
/**
|
||
* 組隊大廳任務目標子節點
|
||
*/
|
||
taskTargetItemList : any = [];
|
||
/**
|
||
* 匹配隊伍限制
|
||
*/
|
||
matchTeamLimit : any = {
|
||
level: {
|
||
"startZhuan": "0轉",
|
||
"endZhuan": "3轉",
|
||
"startLevel": "0級",
|
||
"endLevel": "180級"
|
||
}, target: {}, beLeader: false
|
||
};
|
||
/**
|
||
* 匹配任務限制
|
||
*/
|
||
matchTaskLimit : any = [
|
||
[
|
||
{ name: "無目標", type: 1 },
|
||
{ name: "鍾旭抓鬼", type: 2, all: 0 },
|
||
{ name: "遊蕩妖魔", type: 2, all: 0 },
|
||
{ name: "三界妖王", type: 2, all: 0 },
|
||
{ name: "地煞星", type: 0, start: 1, end: 17, unit: "星", setStart: 1, setEnd: 17 },
|
||
{ name: "種情花", type: 2, all: 0 },
|
||
{ name: "劇情任務", type: 1 }
|
||
], [
|
||
{ name: "大雁塔", type: 0, start: 1, end: 8, unit: "層", setStart: 1, setEnd: 8 },
|
||
{ name: "尋芳", type: 0, start: 1, end: 16, unit: "關", setStart: 1, setEnd: 16 }
|
||
], [
|
||
{ name: "幫派強盜", type: 1 }
|
||
]
|
||
];
|
||
/**
|
||
* 目標起始範圍節點列表
|
||
*/
|
||
targetStartRangeList : any = [];
|
||
/**
|
||
* 目標起始範圍節點列表
|
||
*/
|
||
targetEndRangeList : any = [];
|
||
/**
|
||
* 申請列表
|
||
*/
|
||
requestList : any = [];
|
||
/**
|
||
* 當前查看的隊伍列表類型
|
||
*/
|
||
teamListType : string = "無目標";
|
||
/**
|
||
* 是否在匹配中
|
||
*/
|
||
isMatching : Boolean = false;
|
||
/**
|
||
* 隊伍面板
|
||
*/
|
||
teamPanel : fgui.GComponent = null;
|
||
/**
|
||
* 隊伍面板中目标名称
|
||
*/
|
||
teamTargetText : fgui.GTextField = null;
|
||
/**
|
||
* 隊伍面板中招募信息
|
||
*/
|
||
teamRecruitText : fgui.GTextField = null;
|
||
/**
|
||
* 申請列表面板
|
||
*/
|
||
requestListPanel : fgui.GComponent = null;
|
||
/**
|
||
* 隊伍面板中目标面板
|
||
*/
|
||
teamTargetPanel : fgui.GComponent = null;
|
||
/**
|
||
* 隊伍面板中目标面板中的自定义目标名称
|
||
*/
|
||
customTargetNameText : fgui.GTextField = null;
|
||
/**
|
||
* 改變目標名稱面板
|
||
*/
|
||
changeTargetNamePanel : fgui.GComponent = null;
|
||
/**
|
||
* 套裝技能和寵物信息面板
|
||
*/
|
||
suitSkillAndPetPanel : fgui.GComponent = null;
|
||
/**
|
||
* 夥伴替換列表面板
|
||
*/
|
||
remainPartnerPanel : fgui.GComponent = null;
|
||
/**
|
||
* 招募面板
|
||
*/
|
||
recruitPanel : fgui.GComponent = null;
|
||
/*
|
||
* 招募面板中目標名稱
|
||
*/
|
||
recruitPanelTeamTargetText : fgui.GTextField = null;
|
||
/**
|
||
* 種族面板
|
||
*/
|
||
racePanel : fgui.GComponent = null;
|
||
/**
|
||
* 編輯標籤面板
|
||
*/
|
||
editLabelPanel : fgui.GComponent = null;
|
||
/**
|
||
* 組隊大廳面板
|
||
*/
|
||
matchHallPanel : fgui.GComponent = null;
|
||
/**
|
||
* 自動匹配面板
|
||
*/
|
||
autoMatchPanel : fgui.GComponent = null;
|
||
/**
|
||
* 隊伍匹配面板
|
||
*/
|
||
teamMatchPanel : fgui.GComponent = null;
|
||
/**
|
||
* 選擇等級面板
|
||
*/
|
||
selectLevelPanel : fgui.GComponent = null;
|
||
/**
|
||
* 選擇目標範圍面板
|
||
*/
|
||
targetRangePanel : fgui.GComponent = null;
|
||
/**
|
||
* 確認彈框
|
||
*/
|
||
alertPanel : fgui.GComponent = null;
|
||
/**
|
||
* 隊伍設置面板
|
||
*/
|
||
teamSettingPanel : fgui.GComponent = null;
|
||
/**
|
||
* 自動歸隊
|
||
*/
|
||
autoRecall : boolean = false;
|
||
popList : any = [];
|
||
vecPartnerCard : any = [];
|
||
prefabObject : any = {};
|
||
|
||
|
||
onLoad() {
|
||
if (TeamPanel.Instance === null) {
|
||
TeamPanel.Instance = this;
|
||
this.loadPrefab();
|
||
} else {
|
||
this.destroy();
|
||
return;
|
||
}
|
||
}
|
||
/**
|
||
* 加載預製體
|
||
*/
|
||
loadPrefab() {
|
||
// 加載所需的預製體
|
||
var prefabList = [
|
||
{ url: "Prefabs/PartnerUI", name: "PartnerUI" },
|
||
{ url: "Prefabs/goPartnerCard_1", name: "goPartnerCard_1" },
|
||
{ url: "Prefabs/goPartnerCard_2", name: "goPartnerCard_2" },
|
||
{ url: "Prefabs/goTeamBtnAdd", name: "goTeamBtnAdd" }
|
||
]
|
||
this.prefabObject = {}
|
||
for (let item of prefabList) {
|
||
cc.loader.loadRes(item.url, cc.Prefab, (err, prefab) => {
|
||
if (err)
|
||
console.warn(err);
|
||
else {
|
||
this.prefabObject[item.name] = prefab;
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 打開隊伍面板
|
||
* @param refresh 是否為只刷新
|
||
* @returns
|
||
*/
|
||
public openTeamMainPanel(refresh : Boolean = false) : void {
|
||
if (!this.teamPanel || (this.teamPanel && !this.teamPanel.node && !SKUIUtil.isValid(this.teamPanel.node))) {
|
||
// 創建隊伍面板並添加
|
||
this.teamPanel = FGUtil.create("main_ui", "team_main_panel");
|
||
FGUtil.root().addChild(this.teamPanel);
|
||
this.teamPanel.node.addChild(new cc.Node("team_member_node"));
|
||
this.teamPanel.node.addChild(new cc.Node("my_partner_node"));
|
||
this.stopCocosNodeButton(this.teamPanel);
|
||
this.teamPanel.makeFullScreen();
|
||
}
|
||
// 設置是否有隊伍、是否為隊長;關閉速度顯示 B
|
||
this.isLeader = GameModel.player.isleader;
|
||
this.teamId = GameModel.player.teamid;
|
||
this.hasTeam = this.teamId > 0;
|
||
//FGUtil.getComponent(this.teamPanel, "alert/n38").visible = false;
|
||
FGUtil.getControl(this.teamPanel, "alert/isLeader").selectedIndex = this.isLeader ? 1 : 0;
|
||
FGUtil.getControl(this.teamPanel, "alert/hasTeam").selectedIndex = this.hasTeam ? 1 : 0;
|
||
FGUtil.getControl(this.teamPanel, "alert/showSpeed").selectedIndex = 0;
|
||
|
||
var memberList = GameModel.player.teamInfo.objlist;
|
||
for (let i in memberList) {
|
||
if (SKDataUtil.hasProperty(memberList[i], "onlyid")) {
|
||
if (memberList[i].accountid == GameModel.player.roleid) {
|
||
FGUtil.getControl(this.teamPanel, "alert/temp_leave").selectedIndex = memberList[i].pause == 1 ? 1 : 0
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (this.hasTeam)
|
||
FGUtil.getComponent(this.teamPanel, "alert/setTarget").width = this.isLeader ? 438 : 538;
|
||
if (this.requestList && this.requestList.length > 0) {
|
||
FGUtil.getComponent(this.teamPanel, "alert/hasTeamBtnGroup/applyNumber").visible = true;
|
||
FGUtil.getComponent(this.teamPanel, "alert/hasTeamBtnGroup/applyNumber").text = this.requestList.length;
|
||
}
|
||
|
||
// 隊伍面板中目標名稱
|
||
this.teamTargetText = FGUtil.getTextField(this.teamPanel, "alert/setTarget/targetName");
|
||
this.teamTargetText.text = GameModel.player.teamInfo.type ? GameModel.player.teamInfo.type : "無目標";
|
||
// 隊伍面板中招募信息
|
||
this.teamRecruitText = FGUtil.getTextField(this.teamPanel, "alert/hasTeamBtnGroup/recruitBar/recruit_info");
|
||
if (!GameModel.player.teamInfo.content || GameModel.player.teamInfo.content == "")
|
||
this.teamRecruitText.text = "點擊編輯招募信息";
|
||
else
|
||
this.teamRecruitText.text = GameModel.player.teamInfo.content;
|
||
|
||
if (GameModel.player.teamInfo.teamcnt > 1) {
|
||
FGUtil.getTextField(this.teamPanel, "alert/setTarget/number").text = `(${GameModel.player.teamInfo.teamcnt}/5)`
|
||
} else {
|
||
FGUtil.getComponent(this.teamPanel, "alert/setTarget/number").text = "";
|
||
}
|
||
|
||
// 刷新到此為止
|
||
if (refresh) {
|
||
this.showTeamMember();
|
||
return;
|
||
}
|
||
|
||
// 設置目標組件點擊事件
|
||
var setTeamTargetCom = FGUtil.getComponent(this.teamPanel, "alert/setTarget");
|
||
setTeamTargetCom.onClick(() => {
|
||
this.openTeamTargetPanel({});
|
||
}, this)
|
||
|
||
// 設置遮罩和關閉按鈕點擊事件
|
||
var mask = FGUtil.getComponent(this.teamPanel, "mask");
|
||
var close = FGUtil.getButton(this.teamPanel, "alert/closeBtn");
|
||
this.pushCloseEvent(mask, this.teamPanel);
|
||
this.pushCloseEvent(close, this.teamPanel);
|
||
|
||
// 創建隊伍按鈕
|
||
var createTeamBtn = FGUtil.getButton(this.teamPanel, "alert/create_team_btn");
|
||
createTeamBtn.onClick(() => { this.createTeam() }, this);
|
||
|
||
// 離開隊伍按鈕
|
||
var levaeTeamBtn = FGUtil.getButton(this.teamPanel, "alert/hasTeamBtnGroup/leave_team_btn");
|
||
var leaderLevaeTeamBtn = FGUtil.getButton(this.teamPanel, "alert/hasTeamBtnGroup/leader_leave_team_btn");
|
||
levaeTeamBtn.onClick(this.leaveTeam, this);
|
||
leaderLevaeTeamBtn.onClick(this.leaveTeam, this);
|
||
// 暫離隊伍
|
||
FGUtil.getButton(this.teamPanel, "alert/hasTeamBtnGroup/temp_leave_team_btn").onClick(this.pauseTeam, this);
|
||
// 队伍设置
|
||
FGUtil.getButton(this.teamPanel, "alert/hasTeamBtnGroup/set").onClick(this.setTeamOption, this);
|
||
|
||
// 我的伙伴按鈕
|
||
var myPartnerBtn = FGUtil.getButton(this.teamPanel, "alert/partner_btn");
|
||
myPartnerBtn.onClick(() => {
|
||
this.createPrefab(this.teamPanel.node, { x: 0, y: 0 }, "PartnerUI", "PartnerUI");
|
||
}, this)
|
||
|
||
// 組隊大廳按鈕
|
||
var matchHallBtn = FGUtil.getButton(this.teamPanel, "alert/match_hall_btn");
|
||
matchHallBtn.onClick(() => { this.openMatchHallPanel() }, this)
|
||
|
||
// 招募信息按鈕和條
|
||
var recruitBar = FGUtil.getComponent(this.teamPanel, "alert/hasTeamBtnGroup/recruitBar");
|
||
var recruitBtn = FGUtil.getComponent(this.teamPanel, "alert/hasTeamBtnGroup/teamTalkBtn");
|
||
recruitBar.onClick(() => { this.openRecruitPanel() }, this);
|
||
recruitBtn.onClick(() => { this.openRecruitPanel() }, this);
|
||
|
||
// 顯示速度按鈕
|
||
var showSpdBtn = FGUtil.getComponent(this.teamPanel, "alert/hasTeamBtnGroup/speedBtn");
|
||
var hideSpdBtn = FGUtil.getComponent(this.teamPanel, "alert/hasTeamBtnGroup/speedBackBtn");
|
||
showSpdBtn.onClick(() => {
|
||
try {
|
||
var pNode = this.teamPanel.node.getChildByName("team_member_node");
|
||
for (let temp of pNode.children) {
|
||
if (temp.name == "goPartnerCard_1") {
|
||
temp.getChildByName("normal").active = false;
|
||
temp.getChildByName("info").active = true;
|
||
}
|
||
}
|
||
FGUtil.getControl(this.teamPanel, "alert/showSpeed").selectedIndex = 1;
|
||
} catch (err) {
|
||
console.log(err)
|
||
}
|
||
}, this);
|
||
hideSpdBtn.onClick(() => {
|
||
try {
|
||
var pNode = this.teamPanel.node.getChildByName("team_member_node");
|
||
for (let temp of pNode.children) {
|
||
if (temp.name == "goPartnerCard_1") {
|
||
temp.getChildByName("normal").active = true;
|
||
temp.getChildByName("info").active = false;
|
||
}
|
||
}
|
||
FGUtil.getControl(this.teamPanel, "alert/showSpeed").selectedIndex = 0;
|
||
} catch (err) {
|
||
console.log(err)
|
||
}
|
||
}, this);
|
||
|
||
// 顯示申請列表
|
||
var requestListBtn = FGUtil.getComponent(this.teamPanel, "alert/hasTeamBtnGroup/teamApplyBtn");
|
||
requestListBtn.onClick(() => {
|
||
this.openRequestList();
|
||
}, this);
|
||
|
||
// 播放音效
|
||
AudioUtil.playOpenAudio();
|
||
GameModel.send('c2s_team_requeslist', {});
|
||
GameModel.send('c2s_ask_partner_list', { nRoleID: GameModel.player.roleid });
|
||
}
|
||
|
||
/**
|
||
* 打開隊伍申請列表
|
||
*/
|
||
openRequestList() {
|
||
if (GameModel.player.mapid == 4004 || GameModel.player.mapid == 1213) {
|
||
MsgAlert.addMsg("本地圖不可進行此操作")
|
||
return
|
||
}
|
||
if (this.teamPanel && this.teamPanel.node) {
|
||
FGUtil.getComponent(this.teamPanel, "alert/hasTeamBtnGroup/applyNumber").visible = false;
|
||
}
|
||
if (!this.requestList || this.requestList.length <= 0)
|
||
return;
|
||
if (!this.requestListPanel || (this.requestListPanel && !this.requestListPanel.node && !SKUIUtil.isValid(this.requestListPanel.node))) {
|
||
// 創建隊伍面板並添加
|
||
this.requestListPanel = FGUtil.create("main_ui", "apply_list_panel");
|
||
FGUtil.root().addChild(this.requestListPanel);
|
||
this.stopCocosNodeButton(this.requestListPanel);
|
||
this.requestListPanel.makeFullScreen();
|
||
}
|
||
|
||
var mask = FGUtil.getComponent(this.requestListPanel, "mask");
|
||
|
||
this.pushCloseEvent(mask, this.requestListPanel);
|
||
|
||
var list = FGUtil.getList(this.requestListPanel, "alert/list");
|
||
list.removeChildrenToPool();
|
||
|
||
for (let i in this.requestList) {
|
||
let item = list.addItemFromPool().asCom;
|
||
FGUtil.getTextField(item, "player_name").text = this.requestList[i].name;
|
||
FGUtil.getTextField(item, "level").text = this.getReliveText(this.requestList[i].relive, this.requestList[i].level);
|
||
FGUtil.getLoader(item, "race").url = "ui://main_ui/icon_race1";
|
||
FGUtil.getLoader(item, "ava").texture = GameModel.getRoleHead(this.requestList[i].resid)
|
||
let btn = FGUtil.getButton(item, "n8");
|
||
btn.data = this.requestList[i].roleid
|
||
btn.clearClick()
|
||
btn.onClick(() => {
|
||
if (GameModel.player.mapid == 4004 || GameModel.player.mapid == 1213) {
|
||
MsgAlert.addMsg("本地圖不可進行此操作")
|
||
return
|
||
}
|
||
let roleid = btn.data
|
||
GameModel.send('c2s_operteam', {
|
||
operation: 1,
|
||
roleid: roleid,
|
||
teamid: GameModel.player.teamid
|
||
});
|
||
this.requestList.splice(i, 1)
|
||
list.removeChildToPool(item)
|
||
if (list.numChildren == 0) {
|
||
FGUtil.dispose(this.requestListPanel);
|
||
this.recoveryCocosNodeButton();
|
||
}
|
||
|
||
}, this)
|
||
let btn1 = FGUtil.getButton(item, "n9");
|
||
btn1.data = this.requestList[i].roleid
|
||
btn1.clearClick()
|
||
btn1.onClick(() => {
|
||
let roleid = btn1.data
|
||
GameModel.send('c2s_operteam', {
|
||
operation: 0,
|
||
roleid: roleid,
|
||
teamid: GameModel.player.teamid
|
||
});
|
||
this.requestList.splice(i, 1)
|
||
list.removeChildToPool(item)
|
||
if (list.numChildren == 0) {
|
||
FGUtil.dispose(this.requestListPanel);
|
||
this.recoveryCocosNodeButton();
|
||
}
|
||
}, this)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 創建隊伍
|
||
*/
|
||
private createTeam() {
|
||
if (this.hasTeam)
|
||
return;
|
||
// 沒有隊伍時創建隊伍
|
||
if (GameModel.player.prisonTime > 0) {
|
||
MsgAlert.addMsg('傳說罪孽深重的人是創建不了隊伍的!');
|
||
return;
|
||
}
|
||
if (GameModel.player.teamid > 0) {
|
||
return;
|
||
}
|
||
GameModel.send('c2s_create_team', {
|
||
roleid: GameModel.player.roleid,
|
||
type: this.teamTargetText.text
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 離開隊伍
|
||
*/
|
||
private leaveTeam() {
|
||
if (!this.hasTeam)
|
||
return;
|
||
if (GameModel.player.mapid == 4004 || GameModel.player.mapid == 1213) {
|
||
MsgAlert.addMsg("本地圖不可進行此操作")
|
||
return
|
||
}
|
||
this.showAlert("離開隊伍?", () => {
|
||
}, () => {
|
||
GameModel.send('c2s_leave_team', {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: GameModel.player.teamid
|
||
});
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 暫離隊伍
|
||
*/
|
||
pauseTeam() {
|
||
var isLeave = FGUtil.getControl(this.teamPanel, "alert/temp_leave");
|
||
if (isLeave.selectedIndex == 0) {
|
||
if (GameModel.player.isleader) {
|
||
MsgAlert.addMsg("隊長不可暫離隊伍");
|
||
return;
|
||
}
|
||
GameModel.send('c2s_pause_team', {
|
||
roleid: GameModel.player.roleid
|
||
});
|
||
isLeave.selectedIndex = 1;
|
||
GameModel.player.tempLeave = true
|
||
}
|
||
else {
|
||
GameModel.send('c2s_recall_confirm', {
|
||
roleid: GameModel.player.roleid
|
||
});
|
||
isLeave.selectedIndex = 0;
|
||
GameModel.player.tempLeave = false
|
||
}
|
||
}
|
||
|
||
setTeamOption() {
|
||
if (!SKUIUtil.isFGUIValid(this.teamSettingPanel)) {
|
||
this.teamSettingPanel = FGUtil.create("main_ui", "set_team_panel");
|
||
FGUtil.root().addChild(this.teamSettingPanel);
|
||
this.stopCocosNodeButton(this.teamSettingPanel);
|
||
this.teamSettingPanel.makeFullScreen();
|
||
|
||
FGUtil.getControl(this.teamSettingPanel, "alert/n2/selected").selectedIndex = this.autoRecall ? 1 : 0;
|
||
|
||
FGUtil.getButton(this.teamSettingPanel, "alert/n2").onClick(() => {
|
||
this.autoRecall = !this.autoRecall;
|
||
FGUtil.getControl(this.teamSettingPanel, "alert/n2/selected").selectedIndex = this.autoRecall ? 1 : 0;
|
||
GameModel.send(`c2s_ischeck_${this.autoRecall ? 'on' : 'off'}`, {
|
||
roleid: GameModel.player.roleid
|
||
})
|
||
}, this)
|
||
|
||
var mask = FGUtil.getComponent(this.teamSettingPanel, "mask")
|
||
this.pushCloseEvent(mask, this.teamSettingPanel)
|
||
}
|
||
}
|
||
/**
|
||
* 顯示隊伍成員
|
||
*/
|
||
showTeamMember() {
|
||
SKUIUtil.destroyList(this.vecPartnerCard);
|
||
if (!this.vecPartnerCard)
|
||
this.vecPartnerCard = [];
|
||
let goContent = this.teamPanel.node.getChildByName("team_member_node");
|
||
goContent.destroyAllChildren();
|
||
var offset = (this.teamPanel.node.width - 1024) / 2
|
||
let stStart = { nX: 190 + offset, nY: -305 };
|
||
// 沒有隊伍
|
||
if (GameModel.player.teamid == 0) {
|
||
//----------- 主角 -------------
|
||
let goCard = this.CreateCard(GameModel.player);
|
||
cc.find('normal/picPtFlag', goCard).active = false;
|
||
this.vecPartnerCard.push(goCard);
|
||
|
||
//------------ 夥伴 ------------
|
||
let index = 0;
|
||
for (let item of CMainPlayerInfo.vecChuZhan) {
|
||
if (item <= 0) {
|
||
continue;
|
||
}
|
||
let stInfo = CMainPlayerInfo.GetPartner(item);
|
||
let goCard = this.CreateCard(stInfo);
|
||
goCard.on("click", () => { this.openRemainPartnerPanel(goCard.x) }, this);
|
||
this.vecPartnerCard.push(goCard);
|
||
index++;
|
||
}
|
||
// 有未出戰且當前隊伍人數不足5人
|
||
if (this.vecPartnerCard.length < 5 && CMainPlayerInfo.vecPartnerInfo.length - index > 0) {
|
||
let goBtnAdd = this.createPrefab(goContent, { x: stStart.nX + this.vecPartnerCard.length * 150, y: -305 }, "goTeamBtnAdd", "goTeamBtnAdd");
|
||
goBtnAdd.on("click", () => { this.openRemainPartnerPanel(goBtnAdd.x) }, this);
|
||
this.vecPartnerCard.push(goBtnAdd);
|
||
}
|
||
}
|
||
else {
|
||
// 有隊伍
|
||
if (GameModel.player.teamInfo == null || GameModel.player.teamInfo.objlist == null) {
|
||
return;
|
||
}
|
||
let partnerPos = 0, leader = 0;
|
||
for (const obj of GameModel.player.teamInfo.objlist) {
|
||
if (obj.pause == 1) continue;
|
||
let goCard = this.CreateCard(obj);
|
||
if (obj.livingtype == 1) {
|
||
if (leader == 0) {
|
||
cc.find('normal/picPtFlag', goCard).active = true;
|
||
leader = 1;
|
||
}
|
||
}
|
||
else {
|
||
goCard.on("click", () => { this.openRemainPartnerPanel(goCard.x) }, this);
|
||
partnerPos++;
|
||
}
|
||
this.vecPartnerCard.push(goCard);
|
||
}
|
||
// 隊伍不足5人,且有未出戰夥伴
|
||
if (this.vecPartnerCard.length < 5 && this.isLeader && CMainPlayerInfo.vecPartnerInfo.length - partnerPos > 0) {
|
||
let goBtnAdd = this.createPrefab(goContent, { x: stStart.nX + this.vecPartnerCard.length * 150, y: -305 }, "goTeamBtnAdd", "goTeamBtnAdd");
|
||
goBtnAdd.on("click", () => { this.openRemainPartnerPanel(goBtnAdd.x) }, this);
|
||
this.vecPartnerCard.push(goBtnAdd);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 創建隊伍面板角色卡片
|
||
* @param roleInfo 角色信息
|
||
* @returns
|
||
*/
|
||
CreateCard(roleInfo) {
|
||
var offset = (this.teamPanel.node.width - 1024) / 2
|
||
let stStart = { nX: 190 + offset, nY: -305 };
|
||
let goPanel = this.teamPanel.node.getChildByName("team_member_node");
|
||
let prefab = roleInfo.livingtype == 1 ? "goPartnerCard_1" : "goPartnerCard_2";
|
||
let strPrefab = roleInfo.livingtype == 1 ? 'goPartnerCard_1' : 'goPartnerCard_2';
|
||
let base_url = roleInfo.livingtype == 1 ? 'normal/' : '';
|
||
let gap = 0;
|
||
|
||
if (this.vecPartnerCard) {
|
||
gap = this.vecPartnerCard.length;
|
||
} else {
|
||
cc.warn(`$警告:夥伴列表為空!`);
|
||
}
|
||
|
||
let goCard = this.createPrefab(goPanel, { x: stStart.nX + gap * 150, y: -305 }, prefab, strPrefab);
|
||
let role = goCard
|
||
if (roleInfo.livingtype == 1) {
|
||
role = cc.find("normal", goCard)
|
||
}
|
||
let roleNode = cc.find(base_url + 'role', goCard);
|
||
let maskNode = cc.find(base_url + 'role/mask', goCard);
|
||
let effNode = cc.find('eff', roleNode);
|
||
|
||
CPubFunction.SetAnimation(roleNode, roleInfo.resid, 'stand_1');
|
||
if (maskNode && (roleInfo.color1 != 0 || roleInfo.color2 != 0)) {
|
||
CPubFunction.SetMaskAnimation(maskNode, roleInfo.resid, 'stand_1');
|
||
maskNode.active = true
|
||
this.showColorMask(maskNode, this.hxcolorTransfrom(roleInfo.color1), this.hxcolorTransfrom(roleInfo.color2))
|
||
} else {
|
||
if (maskNode)
|
||
maskNode.active = false
|
||
}
|
||
this.playeffect(effNode, roleInfo)
|
||
let stData = GameModel.conf_res_anchor[roleInfo.resid];
|
||
if (stData) {
|
||
roleNode.anchorY = stData.anchorY;
|
||
if (maskNode) maskNode.anchorY = stData.anchorY;
|
||
}
|
||
let nameRT = cc.find('labName', goCard).getComponent(cc.RichText);
|
||
let title = `${roleInfo.name}`;
|
||
let vipLevel = VIPUtil.getVipLevel(roleInfo.chargesum);
|
||
if (vipLevel > 0) {
|
||
title = `<img src='vip_${vipLevel}' />${title}`;
|
||
}
|
||
nameRT.string = title;
|
||
let level_lb = cc.find('labLevel', goCard).getComponent(cc.Label);
|
||
GameUtil.setReliveLabel(level_lb, 0, roleInfo.relive, roleInfo.level);
|
||
SKUIUtil.setSpriteFrame(cc.find('picRace', goCard), 'Common/ui_common', CPubFunction.GetRaceFileName(roleInfo.race));
|
||
let weaponNode = cc.find("weapon", roleNode);
|
||
if (roleInfo.account || roleInfo.accountid) {
|
||
roleNode.active = true;
|
||
//if (this.isDoubleWeapon(roleInfo.resid, roleInfo.weapon)) {
|
||
let weaponNode1 = cc.find("weapon1", roleNode.parent);
|
||
weaponNode1.active = true
|
||
CPubFunction.addWeaponAnimation(roleInfo.weapon, weaponNode, roleNode, this, roleInfo.resid, "stand", 1, true);
|
||
//CPubFunction.addWeaponAnimation(roleInfo.weapon, weaponNode1, roleNode, this, roleInfo.resid, "stand", 1, "_r", true);
|
||
//} else {
|
||
//CPubFunction.addWeaponAnimation(roleInfo.weapon, weaponNode, roleNode, this, roleInfo.resid, "stand", 1, "", true);
|
||
//}
|
||
|
||
let wingId = roleInfo.wingId;
|
||
if (wingId >= 8000) {
|
||
wingId = SKDataUtil.findByDict(GameModel.game_conf.wing, "resid", roleInfo.wingId, "id", 0);
|
||
}
|
||
WingUtil.playAni(role, roleInfo.roleid, 1, "stand", 0, wingId);
|
||
} else {
|
||
roleNode.active = false;
|
||
weaponNode.active = false;
|
||
}
|
||
|
||
// 非夥伴卡片
|
||
if (strPrefab == "goPartnerCard_1") {
|
||
if (this.hasTeam) {
|
||
let infoNode = cc.find('info', goCard);
|
||
// 套裝
|
||
cc.find("suitLabel", infoNode).getComponent(cc.Label).string = roleInfo.schemename;
|
||
// 人物速度
|
||
cc.find("roleSpd", infoNode).getComponent(cc.Label).string = roleInfo.spd;
|
||
// 默認技能
|
||
let skillIcon = cc.find("skillIcon", infoNode);
|
||
skillIcon.getComponent(cc.Sprite).spriteFrame = SkillUtil.getSkillIcon(roleInfo.lastSkill);
|
||
|
||
if (roleInfo.curPet != "") {
|
||
// 寵物速度
|
||
cc.find("petSpd", infoNode).getComponent(cc.Label).string = roleInfo.curPet.spd;
|
||
// 寵物頭像
|
||
cc.find("normal/petIcon", goCard).getComponent(cc.Sprite).spriteFrame = ItemUtil.getItemIcon(roleInfo.curPet.resid);
|
||
cc.find("normal/petIcon", goCard).on("click", () => {
|
||
this.openSuitSkillAndPetInfoPanel(goCard.x, roleInfo)
|
||
}, this)
|
||
} else {
|
||
// 沒有寵物,隱藏節點
|
||
cc.find("petSpd", infoNode).active = false;
|
||
cc.find("spdLabel2", infoNode).active = false;
|
||
cc.find("normal/petIcon", goCard).active = false;
|
||
cc.find("normal/petBorder", goCard).active = false;
|
||
}
|
||
} else {
|
||
cc.find("normal/petIcon", goCard).active = false;
|
||
cc.find("normal/petBorder", goCard).active = false;
|
||
}
|
||
}
|
||
return goCard;
|
||
}
|
||
|
||
playeffect(effNode, roleInfo) {
|
||
var effectid = roleInfo.effectid;
|
||
if (roleInfo.isMy) effectid = roleInfo.bodyEffectId;
|
||
if (effNode) {
|
||
if (effectid == 0) {
|
||
effNode.active = false;
|
||
return
|
||
}
|
||
var name = `${effectid}`;
|
||
|
||
let anim = effNode.getComponent(cc.Animation);
|
||
if (!anim) {
|
||
return;
|
||
}
|
||
let clips = anim.getClips();
|
||
for (let clip of clips) {
|
||
if (clip.name == name) {
|
||
effNode.active = true;
|
||
effNode.getComponent(cc.Animation).play(name);
|
||
return;
|
||
}
|
||
}
|
||
effNode.active = false;
|
||
|
||
let url = `body_eff/${name}`;
|
||
cc.loader.loadRes(url, cc.SpriteAtlas, (error, atlas) => {
|
||
if (error) {
|
||
cc.warn(`$警告:加載角色動畫資源失敗${url}`);
|
||
return;
|
||
}
|
||
let curFrames = atlas.getSpriteFrames();
|
||
let curClip = cc.AnimationClip.createWithSpriteFrames(curFrames, 10);
|
||
curClip.name = name;
|
||
curClip.wrapMode = cc.WrapMode.Loop;
|
||
try {
|
||
if (!SKUIUtil.isValid(effNode)) return
|
||
if (!effNode.getComponent(cc.Animation)) return
|
||
let nodeAni = effNode.getComponent(cc.Animation);
|
||
if (nodeAni) {
|
||
nodeAni.addClip(curClip);
|
||
nodeAni.play(name);
|
||
}
|
||
effNode.active = true;
|
||
this.scheduleOnce(() => {
|
||
if (SKUIUtil.isValid(effNode)) {
|
||
effNode.scaleX = 450 / effNode.width;
|
||
effNode.scaleY = 450 / effNode.height;
|
||
}
|
||
}, 0);
|
||
} catch (err) {
|
||
console.warn(err)
|
||
}
|
||
|
||
});
|
||
|
||
}
|
||
}
|
||
hxcolorTransfrom(color) {
|
||
// let num = parseInt(color, 16);
|
||
let num = color;
|
||
let r = Math.floor(num / 256 / 256);
|
||
let g = Math.floor(num / 256 % 256);
|
||
let b = Math.floor(num % 256);
|
||
return new cc.Color(r, g, b);
|
||
}
|
||
showColorMask(maskNode, color1, color2) {
|
||
if (!maskNode || maskNode.active == false) return
|
||
|
||
if (!maskNode || maskNode.active == false) return
|
||
|
||
let logic = maskNode.getComponent('role_color');
|
||
if (color1.r != 0 || color1.g != 0 || color1.b != 0) {
|
||
let t = Math.floor(color1.r) * 1000000 + Math.floor(color1.g) * 1000 + Math.floor(color1.b);
|
||
logic.dH1 = t;
|
||
} else {
|
||
logic.dH1 = 0;
|
||
}
|
||
|
||
if (color2.r != 0 || color2.g != 0 || color2.b != 0) {
|
||
let t = Math.floor(color2.r) * 1000000 + Math.floor(color2.g) * 1000 + Math.floor(color2.b);
|
||
logic.dH2 = t;
|
||
} else {
|
||
logic.dH2 = 0;
|
||
}
|
||
|
||
}
|
||
isDoubleWeapon(resid, weaponInfo = null) {
|
||
var arr = [1111];
|
||
if (weaponInfo)
|
||
if (SKDataUtil.jsonBy(weaponInfo).level == 5) return false
|
||
for (let i in arr) {
|
||
if (resid == arr[i]) return true
|
||
}
|
||
return false
|
||
}
|
||
/**
|
||
* 打開套裝技能和寵物信息面板
|
||
*/
|
||
openSuitSkillAndPetInfoPanel(x, info : any = {}) {
|
||
if (!this.suitSkillAndPetPanel || (this.suitSkillAndPetPanel && !this.suitSkillAndPetPanel.node && !SKUIUtil.isValid(this.suitSkillAndPetPanel.node))) {
|
||
this.suitSkillAndPetPanel = FGUtil.create("main_ui", "team_pet_panel");
|
||
FGUtil.root().addChild(this.suitSkillAndPetPanel);
|
||
this.stopCocosNodeButton(this.suitSkillAndPetPanel);
|
||
FGUtil.getComponent(this.suitSkillAndPetPanel, "alert").x = x + 50;
|
||
this.suitSkillAndPetPanel.makeFullScreen();
|
||
}
|
||
|
||
var mask = FGUtil.getComponent(this.suitSkillAndPetPanel, "mask");
|
||
this.pushCloseEvent(mask, this.suitSkillAndPetPanel);
|
||
|
||
if (info.curPet) {
|
||
FGUtil.getLoader(this.suitSkillAndPetPanel, "alert/ava").texture = ItemUtil.getItemIcon(info.curPet.resid)
|
||
FGUtil.getTextField(this.suitSkillAndPetPanel, "alert/name").text = info.curPet.name;
|
||
FGUtil.getTextField(this.suitSkillAndPetPanel, "alert/level").text = this.getReliveText(info.curPet.relive, info.curPet.level)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 打開未出戰夥伴面板
|
||
* @param posX 觸發事件的伙伴卡片的位置
|
||
*/
|
||
openRemainPartnerPanel(posX) {
|
||
// 檢測是否有未出戰夥伴
|
||
var fightPanterCount = 0;
|
||
for (var temp of CMainPlayerInfo.vecChuZhan) {
|
||
if (temp <= 0) {
|
||
continue;
|
||
}
|
||
fightPanterCount++;
|
||
}
|
||
if (CMainPlayerInfo.vecPartnerInfo.length - fightPanterCount <= 0) return;
|
||
|
||
if (!this.remainPartnerPanel || (this.remainPartnerPanel && !this.remainPartnerPanel.node && !SKUIUtil.isValid(this.remainPartnerPanel.node))) {
|
||
this.remainPartnerPanel = FGUtil.create("main_ui", "partner_panel");
|
||
FGUtil.root().addChild(this.remainPartnerPanel);
|
||
this.stopCocosNodeButton(this.remainPartnerPanel);
|
||
this.remainPartnerPanel.makeFullScreen();
|
||
}
|
||
var offset = (this.teamPanel.node.width - 1024) / 2
|
||
let id = (posX - (190 + offset)) / 150;
|
||
if (GameModel.player.teamInfo && GameModel.player.teamInfo.teamid && GameModel.player.teamInfo.teamid != 0) {
|
||
let wj = 0;//玩家
|
||
for (let i in GameModel.player.teamInfo.objlist) {
|
||
if (GameModel.player.teamInfo.objlist[i].livingtype == 1)
|
||
wj++;
|
||
}
|
||
id -= wj;
|
||
} else {
|
||
id -= 1;
|
||
}
|
||
FGUtil.getComponent(this.remainPartnerPanel, "alert").x = posX - 30;
|
||
|
||
var mask = FGUtil.getComponent(this.remainPartnerPanel, "mask");
|
||
this.pushCloseEvent(mask, this.remainPartnerPanel);
|
||
|
||
let list = FGUtil.getList(this.remainPartnerPanel, "alert/list");
|
||
let count = 0;
|
||
for (let index in CMainPlayerInfo.vecPartnerInfo) {
|
||
if (CMainPlayerInfo.GetParterChuZhanPos(CMainPlayerInfo.vecPartnerInfo[index].id) != -1) {
|
||
continue;
|
||
}
|
||
|
||
let item = list.addItemFromPool().asCom;
|
||
// 頭像
|
||
cc.loader.loadRes("Common/huoban", cc.SpriteAtlas, function (err, atlas) {
|
||
var frame = atlas.getSpriteFrame('huoban_' + CMainPlayerInfo.vecPartnerInfo[index].resid);
|
||
FGUtil.getLoader(item, "ava").texture = frame;
|
||
});
|
||
// 種族
|
||
FGUtil.getLoader(item, "race").url = "ui://main_ui/icon_race" + CMainPlayerInfo.vecPartnerInfo[index].race;
|
||
|
||
FGUtil.getTextField(item, "name").text = CMainPlayerInfo.vecPartnerInfo[index].name;
|
||
FGUtil.getTextField(item, "level").text = this.getReliveText(CMainPlayerInfo.vecPartnerInfo[index].relive, CMainPlayerInfo.vecPartnerInfo[index].level);
|
||
FGUtil.getTextField(item, "level").color = this.getReliveColor(CMainPlayerInfo.vecPartnerInfo[index].relive, 0);
|
||
this.pushCloseEvent(item, this.remainPartnerPanel, () => {
|
||
CMainPlayerInfo.vecChuZhan[id] = CMainPlayerInfo.vecPartnerInfo[index].id;
|
||
GameModel.send('c2s_change_partner_state', { nPartnerID: CMainPlayerInfo.vecPartnerInfo[index].id, nPos: id });
|
||
})
|
||
count++;
|
||
// SKUIUtil.setSpriteFrame(cc.find('HeadPic/Icon', goPartner), 'Common/huoban', );
|
||
}
|
||
let h = Math.min(200, count * 60);
|
||
list.height = h;
|
||
}
|
||
|
||
// 設置0轉0級文本
|
||
getReliveText(relive : number, level : number) {
|
||
let prefix = "";
|
||
if (relive > 3) {
|
||
prefix = "飛升";
|
||
} else {
|
||
prefix = `${relive}轉`;
|
||
}
|
||
let result = `${prefix}${level}級`;
|
||
return result;
|
||
}
|
||
|
||
//type=0 人物和夥伴顏色,type=1召喚獸顏色
|
||
getReliveColor(relive : number, type = 0) : cc.Color {
|
||
if (relive == 0) {
|
||
if (type == 0) return SKUIUtil.colorOfString("#10df08");
|
||
if (type == 1) return SKUIUtil.colorOfString("#ef6518");
|
||
} else if (relive == 1) {
|
||
if (type == 0) return SKUIUtil.colorOfString("#ff7d00");
|
||
if (type == 1) return SKUIUtil.colorOfString("#e792de");
|
||
} else if (relive == 2) {
|
||
if (type == 0) return SKUIUtil.colorOfString("#7bfbff");
|
||
if (type == 1) return SKUIUtil.colorOfString("#a569f7");
|
||
} else if (relive == 3) {
|
||
if (type == 0) return SKUIUtil.colorOfString("#de0421");
|
||
if (type == 1) return SKUIUtil.colorOfString("#292cef");
|
||
} else if (relive == 4) {
|
||
if (type == 0) return SKUIUtil.colorOfString("#F05EE0");
|
||
if (type == 1) return SKUIUtil.colorOfString("#F05EE0");
|
||
}
|
||
return cc.Color.BLACK;
|
||
}
|
||
|
||
/**
|
||
* 打開隊伍面板中目标面板
|
||
*/
|
||
public openTeamTargetPanel(targetList : {}, refresh : Boolean = false) {
|
||
if (GameModel.player.mapid == 4004 || GameModel.player.mapid == 1213) {
|
||
MsgAlert.addMsg("本地圖不可進行此操作")
|
||
return
|
||
}
|
||
if (!this.teamTargetPanel || (this.teamTargetPanel && !this.teamTargetPanel.node && !SKUIUtil.isValid(this.teamTargetPanel.node))) {
|
||
this.teamTargetPanel = FGUtil.create("main_ui", "team_target_panel");
|
||
FGUtil.root().addChild(this.teamTargetPanel);
|
||
this.stopCocosNodeButton(this.teamTargetPanel);
|
||
this.teamTargetPanel.makeFullScreen();
|
||
}
|
||
|
||
// 清除所有目標按鈕
|
||
let listCom = FGUtil.getList(this.teamTargetPanel, "alert/taskList")
|
||
listCom.removeChildrenToPool();
|
||
|
||
let customItem = listCom.addItemFromPool().asCom;
|
||
customItem.getController("isCustom").selectedIndex = 1;
|
||
// 玩家自定義目標名字
|
||
this.customTargetNameText = FGUtil.getTextField(customItem, "custom_group/custom_title");
|
||
this.customTargetNameText.text = this.targetCustomName;
|
||
|
||
this.pushCloseEvent(customItem, this.teamTargetPanel, () => {
|
||
listCom.removeChildrenToPool()
|
||
if (this.recruitPanel && this.recruitPanel.node) {
|
||
// 如果是發布招募面板
|
||
this.recruitPanelTeamTargetText.text = this.targetCustomName;
|
||
} else if (this.teamTargetText.text != this.targetCustomName) {
|
||
this.teamTargetText.text = this.targetCustomName;
|
||
GameModel.send("c2s_issue_recruit", {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: GameModel.player.teamid,
|
||
datum: JSON.stringify({
|
||
type: "無目標",
|
||
content: GameModel.player.teamInfo.content
|
||
})
|
||
})
|
||
// GameModel.send("c2s_game_chat", {
|
||
// scale: 1,
|
||
// msg: `[${this.teamTargetText.text}@${GameModel.player.teamid}@9](${GameModel.player.teamInfo.teamcnt}/5)${GameModel.player.teamInfo.content}[join@${GameModel.player.teamid}@10]`
|
||
// })
|
||
}
|
||
})
|
||
|
||
|
||
// 自定義目標按鈕上的修改按鈕
|
||
FGUtil.getButton(customItem, "custom_group/modify_btn").onClick((eve) => {
|
||
eve.stopPropagation();//防點擊穿透
|
||
this.openChangeTargetNameComponent();
|
||
}, this)
|
||
|
||
var allTargetObj = JSON.parse(JSON.stringify(GameModel.game_conf.daily));
|
||
let allTargetList = [];
|
||
for (let i in allTargetObj) {
|
||
if (targetList[(parseInt(i) - 1).toString()])
|
||
allTargetObj[i].total -= targetList[(parseInt(i) - 1).toString()];
|
||
if (allTargetObj[i].total > 0)
|
||
allTargetList.push(allTargetObj[i])
|
||
}
|
||
// 未完成任務統計
|
||
FGUtil.getTextField(this.teamTargetPanel, "alert/taskNum").text = `未完成的任務(${allTargetList.length.toString()})`;
|
||
|
||
for (let i = 0; i < allTargetList.length; i++) {
|
||
let item = listCom.addItemFromPool().asCom;
|
||
// 任務目標item初始化
|
||
FGUtil.getTextField(item, "title").text = allTargetList[i].name;
|
||
this.pushCloseEvent(item, this.teamTargetPanel, () => {
|
||
var str = FGUtil.getTextField(item, "custom_group/custom_title").text;
|
||
|
||
listCom.removeChildrenToPool();
|
||
if (this.recruitPanel && this.recruitPanel.node) {
|
||
this.recruitPanelTeamTargetText.text = str == "" ? FGUtil.getTextField(item, "title").text : str;
|
||
//FGUtil.getControl(this.recruitPanel, "alert/target_race/need_screen_race").selectedIndex = i > 2 ? 1 : 0;
|
||
} else {
|
||
this.teamTargetText.text = str == "" ? FGUtil.getTextField(item, "title").text : str;
|
||
GameModel.send("c2s_issue_recruit", {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: GameModel.player.teamid,
|
||
datum: JSON.stringify({
|
||
type: this.teamTargetText.text,
|
||
content: GameModel.player.teamInfo.content
|
||
})
|
||
})
|
||
// GameModel.send("c2s_game_chat", {
|
||
// scale: 1,
|
||
// msg: `[${this.teamTargetText.text}@${GameModel.player.teamid}@9](${GameModel.player.teamInfo.teamcnt}/5)${GameModel.player.teamInfo.content}[join@${GameModel.player.teamid}@10]`
|
||
// })
|
||
}
|
||
})
|
||
}
|
||
|
||
|
||
if (refresh) return;
|
||
|
||
// 遮罩關閉
|
||
this.pushCloseEvent(FGUtil.getComponent(this.teamTargetPanel, "mask"), this.teamTargetPanel, () => {
|
||
listCom.removeChildrenToPool()
|
||
});
|
||
|
||
GameModel.send('c2s_ask_daily_info', {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: GameModel.player.teamid
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 打開修改自定義目標名字面板
|
||
*/
|
||
openChangeTargetNameComponent() {
|
||
if (!this.changeTargetNamePanel || (this.changeTargetNamePanel && !this.changeTargetNamePanel.node && !SKUIUtil.isValid(this.changeTargetNamePanel.node))) {
|
||
this.changeTargetNamePanel = FGUtil.create("main_ui", "change_target_name_panel");
|
||
FGUtil.root().addChild(this.changeTargetNamePanel);
|
||
this.stopCocosNodeButton(this.changeTargetNamePanel);
|
||
this.changeTargetNamePanel.makeFullScreen();
|
||
}
|
||
//輸入或清除按鈕
|
||
let input_clear_btn = FGUtil.getButton(this.changeTargetNamePanel, "alert/input_clear");
|
||
input_clear_btn.onClick(() => {
|
||
if (customName.text.length == 0) {
|
||
customName.requestFocus();
|
||
} else {
|
||
customName.text = "";
|
||
input_clear_btn.getController("showClear").selectedIndex = 0;
|
||
}
|
||
}, this)
|
||
//輸入框
|
||
var customName = FGUtil.getTextInput(this.changeTargetNamePanel, "alert/input");
|
||
customName.promptText = `[color=#CDA587]${this.targetCustomName}[/color]`;
|
||
customName.on("text-changed", () => {
|
||
if (customName.text.length > 0) {
|
||
input_clear_btn.getController("showClear").selectedIndex = 1;
|
||
} else {
|
||
input_clear_btn.getController("showClear").selectedIndex = 0;
|
||
}
|
||
}, this)
|
||
// 遮罩、取消和關閉按鈕
|
||
var mask = FGUtil.getComponent(this.changeTargetNamePanel, "mask");
|
||
var closeBtn = FGUtil.getButton(this.changeTargetNamePanel, "alert/close_btn");
|
||
var cancelBtn = FGUtil.getButton(this.changeTargetNamePanel, "alert/cancel_btn");
|
||
this.pushCloseEvent(mask, this.changeTargetNamePanel);
|
||
this.pushCloseEvent(closeBtn, this.changeTargetNamePanel);
|
||
this.pushCloseEvent(cancelBtn, this.changeTargetNamePanel);
|
||
//確認按鈕
|
||
var sureBtn = FGUtil.getButton(this.changeTargetNamePanel, "alert/sure_btn");
|
||
this.pushCloseEvent(sureBtn, this.changeTargetNamePanel, () => {
|
||
this.targetCustomName = customName.text.length > 0 ? customName.text : "無目標";
|
||
// this.teamTargetText.text = this.targetCustomName;
|
||
this.customTargetNameText.text = this.targetCustomName;
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 打開招募面板
|
||
*/
|
||
public openRecruitPanel() {
|
||
if (GameModel.player.mapid == 4004 || GameModel.player.mapid == 1213) {
|
||
MsgAlert.addMsg("本地圖不可進行此操作")
|
||
return
|
||
}
|
||
if (!this.recruitPanel || (this.recruitPanel && !this.recruitPanel.node && !SKUIUtil.isValid(this.recruitPanel.node))) {
|
||
this.recruitPanel = FGUtil.create("main_ui", "team_recruit_panel");
|
||
FGUtil.root().addChild(this.recruitPanel);
|
||
this.stopCocosNodeButton(this.recruitPanel);
|
||
this.recruitPanel.makeFullScreen();
|
||
}
|
||
var mask = FGUtil.getComponent(this.recruitPanel, "mask");
|
||
var close = FGUtil.getButton(this.recruitPanel, "alert/close_btn");
|
||
this.pushCloseEvent(mask, this.recruitPanel);
|
||
this.pushCloseEvent(close, this.recruitPanel);
|
||
|
||
var targetBtn = FGUtil.getButton(this.recruitPanel, "alert/target_race/target_btn");
|
||
var raceBtn = FGUtil.getButton(this.recruitPanel, "alert/target_race/race_btn");
|
||
targetBtn.onClick(() => {
|
||
this.openTeamTargetPanel({});
|
||
var alert = FGUtil.getComponent(this.teamTargetPanel, "alert");
|
||
alert.x = 250;
|
||
alert.y = 175;
|
||
}, this);
|
||
raceBtn.onClick(() => {
|
||
this.openRacePanel();
|
||
}, this);
|
||
|
||
// 隊伍目標
|
||
this.recruitPanelTeamTargetText = FGUtil.getTextField(this.recruitPanel, "alert/target_race/target_btn/title");
|
||
this.recruitPanelTeamTargetText.text = GameModel.player.teamInfo.type;
|
||
if (GameModel.player.teamInfo.teamcnt > 1) {
|
||
FGUtil.getTextField(this.recruitPanel, "alert/target_race/target_btn/number").text = `(${GameModel.player.teamInfo.teamcnt}/5)`
|
||
} else {
|
||
FGUtil.getComponent(this.recruitPanel, "alert/target_race/target_btn/number").text = "";
|
||
}
|
||
|
||
// 字數提示
|
||
var tipLength = FGUtil.getTextField(this.recruitPanel, "alert/length_tip");
|
||
// 輸入框
|
||
var contentEdit = FGUtil.getTextInput(this.recruitPanel, "alert/content_edit");
|
||
contentEdit.on("text-changed", () => {
|
||
tipLength.text = `共24字,還剩${24 - contentEdit.text.length}個字`;
|
||
if (contentEdit.text.length > 0) {
|
||
FGUtil.getControl(this.recruitPanel, "alert/showClear").selectedIndex = 1;
|
||
} else {
|
||
FGUtil.getControl(this.recruitPanel, "alert/showClear").selectedIndex = 0;
|
||
}
|
||
}, this)
|
||
// 清除按鈕
|
||
var clearBtn = FGUtil.getButton(this.recruitPanel, "alert/clear_btn");
|
||
clearBtn.onClick(() => {
|
||
contentEdit.text = ""
|
||
tipLength.text = `共24字,還剩24個字`;
|
||
FGUtil.getControl(this.recruitPanel, "alert/showClear").selectedIndex = 0;
|
||
}, this)
|
||
// 標籤組
|
||
var labelGroup = FGUtil.getComponent(this.recruitPanel, "alert/label_group");
|
||
for (let i = 1; i < 8; i++) {
|
||
let item = FGUtil.getButton(labelGroup.asCom, `label${i}`);
|
||
item.text = this.recruitLabelList[i - 1];
|
||
item.onClick(() => {
|
||
if (item.text == "") return;
|
||
var str = contentEdit.text == "" ? item.text : (contentEdit.text + ";" + item.text);
|
||
if (str.length > 24)
|
||
str = str.substring(0, 24)
|
||
contentEdit.text = str;
|
||
tipLength.text = `共24字,還剩${24 - contentEdit.text.length}個字`;
|
||
}, this);
|
||
}
|
||
FGUtil.getButton(labelGroup.asCom, "edit_label_btn").onClick(() => {
|
||
this.openEditLabelPanel();
|
||
}, this)
|
||
// 發布按鈕
|
||
var publishBtn = FGUtil.getButton(this.recruitPanel, "alert/publish_btn");
|
||
this.pushCloseEvent(publishBtn, this.recruitPanel, () => {
|
||
if (!GameModel.player.isleader) return
|
||
if (this.teamRecruitText && this.teamRecruitText.node) {
|
||
this.teamRecruitText.text = contentEdit.text
|
||
}
|
||
var recruinObj = { type: "", content: "" };
|
||
var typeStr = this.recruitPanelTeamTargetText.text;
|
||
|
||
if (typeStr == this.targetCustomName || typeStr == "點擊選擇目標") recruinObj.type = "無目標"
|
||
|
||
recruinObj.type = this.recruitPanelTeamTargetText.text == "點擊選擇目標" ? "無目標" : this.recruitPanelTeamTargetText.text
|
||
recruinObj.content = contentEdit.text
|
||
GameModel.send("c2s_issue_recruit", {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: GameModel.player.teamid,
|
||
datum: JSON.stringify(recruinObj)
|
||
})
|
||
// GameModel.send("c2s_game_chat", {
|
||
// scale: 1,
|
||
// msg: `[${recruinObj.type}@${GameModel.player.teamid}@9](${GameModel.player.teamInfo.teamcnt}/5)${recruinObj.content}[join@${GameModel.player.teamid}@10]`
|
||
// })
|
||
})
|
||
|
||
}
|
||
|
||
/**
|
||
* 生成種族面板
|
||
*/
|
||
openRacePanel() {
|
||
if (!this.racePanel || (this.racePanel && !this.racePanel.node && !SKUIUtil.isValid(this.racePanel.node))) {
|
||
this.racePanel = FGUtil.create("main_ui", "race_panel");
|
||
FGUtil.root().addChild(this.racePanel);
|
||
this.stopCocosNodeButton(this.racePanel);
|
||
this.racePanel.makeFullScreen();
|
||
}
|
||
|
||
var mask = FGUtil.getComponent(this.racePanel, "mask");
|
||
this.pushCloseEvent(mask, this.racePanel, () => {
|
||
var str = "";
|
||
for (var n in this.raceLimit) {
|
||
if (this.raceLimit[n].getController("selected").selectedIndex == 1) {
|
||
str = str + this.raceLimit[n].text + ";";
|
||
}
|
||
}
|
||
|
||
if (str != "" && this.recruitPanel && this.recruitPanel.node) {
|
||
var raceText = FGUtil.getTextField(this.recruitPanel, "alert/target_race/race_btn/title");
|
||
raceText.text = str;
|
||
}
|
||
this.raceLimit = [];
|
||
})
|
||
|
||
var allRaceBtn = FGUtil.getButton(this.racePanel, "alert/all_btn");
|
||
for (let i = 1; i <= 10; i++) {
|
||
let item = FGUtil.getButton(this.racePanel, "alert/race" + i.toString());
|
||
item.onClick(() => {
|
||
var select = item.getController("selected").selectedIndex;
|
||
item.getController("selected").selectedIndex = select == 1 ? 0 : 1;
|
||
})
|
||
this.raceLimit.push(item);
|
||
}
|
||
allRaceBtn.onClick(() => {
|
||
if (allRaceBtn.getController("selected").selectedIndex == 0) {
|
||
allRaceBtn.getController("selected").selectedIndex = 1;
|
||
for (var n in this.raceLimit) {
|
||
this.raceLimit[n].getController("selected").selectedIndex = 1;
|
||
}
|
||
} else {
|
||
allRaceBtn.getController("selected").selectedIndex = 0;
|
||
for (var n in this.raceLimit) {
|
||
this.raceLimit[n].getController("selected").selectedIndex = 0;
|
||
}
|
||
}
|
||
}, this)
|
||
}
|
||
/**
|
||
* 生成編輯標籤面板
|
||
*/
|
||
openEditLabelPanel() {
|
||
if (!this.editLabelPanel || (this.editLabelPanel && !this.editLabelPanel.node && !SKUIUtil.isValid(this.editLabelPanel.node))) {
|
||
this.editLabelPanel = FGUtil.create("main_ui", "edit_label_panel");
|
||
FGUtil.root().addChild(this.editLabelPanel);
|
||
this.stopCocosNodeButton(this.editLabelPanel);
|
||
this.editLabelPanel.makeFullScreen();
|
||
}
|
||
var mask = FGUtil.getComponent(this.editLabelPanel, "mask");
|
||
this.pushCloseEvent(mask, this.editLabelPanel);
|
||
var list = FGUtil.getList(this.editLabelPanel, "alert/labelList");
|
||
for (let i = 0; i < 7; i++) {
|
||
let item = list.getChildAt(i).asCom;
|
||
item.getController("isCustom").selectedIndex = 1;
|
||
FGUtil.getTextField(item, "custom_group/custom_title").text = this.recruitLabelList[i];
|
||
FGUtil.getButton(item, "custom_group/modify_btn").onClick(() => {
|
||
this.openEditLabelInputPanel(i, FGUtil.getTextField(item, "custom_group/custom_title").text);
|
||
})
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 生成編輯標籤輸入面板
|
||
*/
|
||
openEditLabelInputPanel(index : number, defineText : string) {
|
||
if (!this.changeTargetNamePanel || (this.changeTargetNamePanel && !this.changeTargetNamePanel.node && !SKUIUtil.isValid(this.changeTargetNamePanel.node))) {
|
||
this.changeTargetNamePanel = FGUtil.create("main_ui", "change_target_name_panel");
|
||
FGUtil.root().addChild(this.changeTargetNamePanel);
|
||
this.stopCocosNodeButton(this.changeTargetNamePanel);
|
||
this.changeTargetNamePanel.makeFullScreen();
|
||
}
|
||
FGUtil.getTextField(this.changeTargetNamePanel, "alert/title").text = "編輯招募標籤";
|
||
FGUtil.getTextField(this.changeTargetNamePanel, "alert/tip").text = "標籤最多6個字";
|
||
//輸入框
|
||
var customName = FGUtil.getTextInput(this.changeTargetNamePanel, "alert/input");
|
||
customName.maxLength = 6;
|
||
//輸入或清除按鈕
|
||
let input_clear_btn = FGUtil.getButton(this.changeTargetNamePanel, "alert/input_clear");
|
||
customName.text = defineText;
|
||
customName.on("text-changed", () => {
|
||
if (customName.text.length > 0) {
|
||
input_clear_btn.getController("showClear").selectedIndex = 1;
|
||
} else {
|
||
input_clear_btn.getController("showClear").selectedIndex = 0;
|
||
}
|
||
}, this)
|
||
input_clear_btn.getController("showClear").selectedIndex = (customName.text.length == 0) ? 0 : 1;
|
||
input_clear_btn.onClick(() => {
|
||
if (customName.text.length == 0) {
|
||
customName.requestFocus();
|
||
} else {
|
||
customName.text = "";
|
||
input_clear_btn.getController("showClear").selectedIndex = 0;
|
||
}
|
||
}, this)
|
||
// 遮罩、取消和關閉按鈕
|
||
var mask = FGUtil.getComponent(this.changeTargetNamePanel, "mask");
|
||
var closeBtn = FGUtil.getButton(this.changeTargetNamePanel, "alert/close_btn");
|
||
var cancelBtn = FGUtil.getButton(this.changeTargetNamePanel, "alert/cancel_btn");
|
||
this.pushCloseEvent(mask, this.changeTargetNamePanel);
|
||
this.pushCloseEvent(closeBtn, this.changeTargetNamePanel);
|
||
this.pushCloseEvent(cancelBtn, this.changeTargetNamePanel);
|
||
//確認按鈕
|
||
var sureBtn = FGUtil.getButton(this.changeTargetNamePanel, "alert/sure_btn");
|
||
this.pushCloseEvent(sureBtn, this.changeTargetNamePanel, () => {
|
||
this.refreshRecruitPanelLabel(index, customName.text);
|
||
this.refreshEditLabelPanelLabel(index, customName.text);
|
||
this.recruitLabelList[index] = customName.text;
|
||
});
|
||
}
|
||
/**
|
||
* 刷新組隊招募面板編輯標籤
|
||
*/
|
||
refreshEditLabelPanelLabel(index : number, labelStr : string) {
|
||
if (!this.editLabelPanel || !this.editLabelPanel.node) {
|
||
console.warn("找不到‘edit_label_panel’");
|
||
return;
|
||
}
|
||
var list = FGUtil.getList(this.editLabelPanel, "alert/labelList");
|
||
FGUtil.getTextField(list.getChildAt(index).asCom, "custom_group/custom_title").text = labelStr;
|
||
}
|
||
/**
|
||
* 刷新組隊招募面板標籤
|
||
*/
|
||
refreshRecruitPanelLabel(index : number, labelStr : string) {
|
||
if (!this.recruitPanel || !this.recruitPanel.node) {
|
||
console.warn("找不到‘team_recruit_panel’");
|
||
return;
|
||
}
|
||
FGUtil.getButton(this.recruitPanel, `alert/label_group/label${index - 1}`).text = labelStr;
|
||
}
|
||
/**
|
||
* 打開組隊大廳面板
|
||
*/
|
||
public openMatchHallPanel(targetList : any = {}, refreshTargetList : Boolean = false, teamList : any = [], refreshTeamList : Boolean = false) {
|
||
if (GameModel.player.mapid == 4004 || GameModel.player.mapid == 1213) {
|
||
MsgAlert.addMsg("本地圖不可進行此操作")
|
||
return
|
||
}
|
||
if (!this.matchHallPanel || (this.matchHallPanel && !this.matchHallPanel.node && !SKUIUtil.isValid(this.matchHallPanel.node))) {
|
||
this.matchHallPanel = FGUtil.create("main_ui", "match_hall_panel");
|
||
FGUtil.root().addChild(this.matchHallPanel);
|
||
this.stopCocosNodeButton(this.matchHallPanel);
|
||
this.matchHallPanel.makeFullScreen();
|
||
this.taskTargetItemList = [];
|
||
}
|
||
var mask = FGUtil.getComponent(this.matchHallPanel, "mask");
|
||
var close = FGUtil.getButton(this.matchHallPanel, "alert/closeBtn");
|
||
this.pushCloseEvent(mask, this.matchHallPanel);
|
||
this.pushCloseEvent(close, this.matchHallPanel);
|
||
|
||
if (refreshTargetList) {
|
||
this.taskTargetItemList = [];
|
||
let taskTargetList = FGUtil.getList(this.matchHallPanel, "alert/target_list");
|
||
taskTargetList.removeChildrenToPool();
|
||
let item = taskTargetList.addItemFromPool().asCom;
|
||
item.clearClick();
|
||
this.taskTargetItemList.push(item);
|
||
item.text = "無目標";
|
||
item.getController("selected").selectedIndex = 1;
|
||
item.onClick(() => {
|
||
for (let i = 0; i < this.taskTargetItemList.length; i++) {
|
||
if (i == 0) {
|
||
this.taskTargetItemList[0].getController("selected").selectedIndex = 1;
|
||
continue;
|
||
}
|
||
this.taskTargetItemList[i].getController("selected").selectedIndex = 0;
|
||
}
|
||
this.teamListType = "無目標";
|
||
GameModel.send('c2s_hall_list', {
|
||
roleid: GameModel.player.roleid,
|
||
type: "無目標"
|
||
});
|
||
this.getTeamList();
|
||
})
|
||
|
||
// 顯示全部任務
|
||
if (FGUtil.getControl(this.matchHallPanel, "alert/show_over_task/selected").selectedIndex == 1) {
|
||
var allTargetObj = JSON.parse(JSON.stringify(GameModel.game_conf.daily));
|
||
let listArr = [];
|
||
let taskTargetList = FGUtil.getList(this.matchHallPanel, "alert/target_list");
|
||
|
||
for (let i in allTargetObj) {
|
||
listArr.push(allTargetObj[i])
|
||
}
|
||
for (let i in listArr) {
|
||
let item = taskTargetList.addItemFromPool().asCom;
|
||
item.getController("selected").selectedIndex = 0;
|
||
item.clearClick();
|
||
this.taskTargetItemList.push(item);
|
||
item.onClick(() => {
|
||
for (let j = 0; j < this.taskTargetItemList.length; j++) {
|
||
if (j == parseInt(i) + 1) {
|
||
this.taskTargetItemList[j].getController("selected").selectedIndex = 1;
|
||
continue;
|
||
}
|
||
this.taskTargetItemList[j].getController("selected").selectedIndex = 0;
|
||
}
|
||
this.teamListType = listArr[i].name;
|
||
GameModel.send('c2s_hall_list', {
|
||
roleid: GameModel.player.roleid,
|
||
type: listArr[i].name
|
||
});
|
||
this.getTeamList();
|
||
})
|
||
}
|
||
} else {
|
||
// 只顯示未完成任務
|
||
var allTargetObj = JSON.parse(JSON.stringify(GameModel.game_conf.daily));
|
||
let unOverTargetList = [];
|
||
for (let i in allTargetObj) {
|
||
if (targetList[(parseInt(i) - 1).toString()])
|
||
allTargetObj[i].total -= targetList[(parseInt(i) - 1).toString()];
|
||
if (allTargetObj[i].total > 0)
|
||
unOverTargetList.push(allTargetObj[i])
|
||
}
|
||
for (let n in unOverTargetList) {
|
||
let item = taskTargetList.addItemFromPool().asCom;
|
||
item.getController("selected").selectedIndex = 0;
|
||
item.clearClick();
|
||
item.text = unOverTargetList[n].name;
|
||
this.taskTargetItemList.push(item);
|
||
item.onClick(() => {
|
||
for (let j = 0; j < this.taskTargetItemList.length; j++) {
|
||
if (j == parseInt(n) + 1) {
|
||
this.taskTargetItemList[j].getController("selected").selectedIndex = 1;
|
||
continue;
|
||
}
|
||
this.taskTargetItemList[j].getController("selected").selectedIndex = 0;
|
||
}
|
||
this.teamListType = unOverTargetList[n].name;
|
||
GameModel.send('c2s_hall_list', {
|
||
roleid: GameModel.player.roleid,
|
||
type: unOverTargetList[n].name
|
||
});
|
||
this.getTeamList();
|
||
})
|
||
}
|
||
}
|
||
}
|
||
|
||
if (refreshTeamList) {
|
||
this.getTeamList(teamList)
|
||
}
|
||
|
||
if (refreshTargetList || refreshTeamList)
|
||
return;
|
||
|
||
|
||
FGUtil.getComponent(this.matchHallPanel, "alert/refresh").onClick(() => {
|
||
|
||
GameModel.send('c2s_hall_list', {
|
||
roleid: GameModel.player.roleid,
|
||
type: this.teamListType
|
||
});
|
||
// for (let i in this.taskTargetItemList) {
|
||
// if (this.taskTargetItemList[i].getController("selected").selectedIndex == 1) {
|
||
// console.log(`刷新第${i}項列表`)
|
||
// this.getTeamList();
|
||
// return
|
||
// }
|
||
// }
|
||
}, this)
|
||
FGUtil.getComponent(this.matchHallPanel, "alert/edit_recruit").onClick(() => {
|
||
this.openRecruitPanel();
|
||
}, this)
|
||
FGUtil.getComponent(this.matchHallPanel, "alert/one_key").onClick(() => {
|
||
console.log("一鍵申請")
|
||
}, this)
|
||
FGUtil.getComponent(this.matchHallPanel, "alert/eazy_match").onClick(() => {
|
||
if (this.isMatching)
|
||
this.openTeamAutoMatchPanel();
|
||
else
|
||
this.openTeamMatchPanel();
|
||
}, this)
|
||
FGUtil.getComponent(this.matchHallPanel, "alert/show_over_task").onClick(() => {
|
||
var btn = FGUtil.getComponent(this.matchHallPanel, "alert/show_over_task")
|
||
if (btn.getController("selected").selectedIndex == 1)
|
||
btn.getController("selected").selectedIndex = 0;
|
||
else
|
||
btn.getController("selected").selectedIndex = 1;
|
||
|
||
GameModel.send('c2s_ask_daily_info', {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: GameModel.player.teamid
|
||
});
|
||
GameModel.send('c2s_hall_list', {
|
||
roleid: GameModel.player.roleid,
|
||
type: "無目標"
|
||
});
|
||
}, this)
|
||
|
||
GameModel.send('c2s_hall_list', {
|
||
roleid: GameModel.player.roleid,
|
||
type: "無目標"
|
||
});
|
||
|
||
GameModel.send('c2s_ask_daily_info', {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: GameModel.player.teamid
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 獲取隊伍列表
|
||
*/
|
||
getTeamList(listData : any = []) {
|
||
var num = listData.length;
|
||
if (num == 0) {
|
||
console.log("沒有隊伍")
|
||
FGUtil.getControl(this.matchHallPanel, "alert/noTeam").selectedIndex = 1;
|
||
} else {
|
||
let list = FGUtil.getList(this.matchHallPanel, "alert/team_list");
|
||
list.removeChildrenToPool();
|
||
FGUtil.getControl(this.matchHallPanel, "alert/noTeam").selectedIndex = 0;
|
||
for (let i = 0; i < num; i++) {
|
||
console.log(listData[i])
|
||
// 是隊長且已經加入此隊伍
|
||
if (this.isLeader && listData[i].teamid == this.teamId) continue;
|
||
let item = list.addItemFromPool().asCom;
|
||
|
||
// 隊長頭像
|
||
FGUtil.getLoader(item, "leader/icon").texture = GameModel.getRoleHead(listData[i].resid)
|
||
// 隊員頭像
|
||
let membersList = FGUtil.getComponent(item, "team_list");
|
||
var m = 1;
|
||
var members = JSON.parse(listData[i].teamMembers)
|
||
for (let key in members) {
|
||
if (members[key] == listData[i].resid) continue;
|
||
FGUtil.getLoader(membersList, `m${m}/icon`).texture = GameModel.getRoleHead(members[key]);
|
||
m++;
|
||
}
|
||
|
||
FGUtil.getButton(item, "join_btn").clearClick();
|
||
if (listData[i].teamid == this.teamId) {
|
||
// 不是隊長但是已經加入此隊伍
|
||
FGUtil.getTextField(item, "join_btn/title").text = "已加入";
|
||
} else {
|
||
// 沒有加入此隊伍
|
||
FGUtil.getTextField(item, "join_btn/title").text = "加入";
|
||
FGUtil.getButton(item, "join_btn").onClick(() => {
|
||
GameModel.send('c2s_requst_team', {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: listData[i].teamid
|
||
});
|
||
})
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 打開自動匹配面板
|
||
*/
|
||
openTeamAutoMatchPanel() {
|
||
if (!this.autoMatchPanel || (this.autoMatchPanel && !this.autoMatchPanel.node && !SKUIUtil.isValid(this.autoMatchPanel.node))) {
|
||
this.autoMatchPanel = FGUtil.create("main_ui", "team_automatch_panel");
|
||
FGUtil.root().addChild(this.autoMatchPanel);
|
||
this.stopCocosNodeButton(this.autoMatchPanel);
|
||
this.autoMatchPanel.makeFullScreen();
|
||
}
|
||
|
||
var mask = FGUtil.getComponent(this.autoMatchPanel, "mask");
|
||
var close = FGUtil.getButton(this.autoMatchPanel, "alert/close");
|
||
this.pushCloseEvent(mask, this.autoMatchPanel);
|
||
this.pushCloseEvent(close, this.autoMatchPanel);
|
||
|
||
}
|
||
|
||
/**
|
||
* 打開隊伍匹配面板
|
||
*/
|
||
openTeamMatchPanel() {
|
||
if (!this.teamMatchPanel || (this.teamMatchPanel && !this.teamMatchPanel.node && !SKUIUtil.isValid(this.teamMatchPanel.node))) {
|
||
this.teamMatchPanel = FGUtil.create("main_ui", "team_match_panel");
|
||
FGUtil.root().addChild(this.teamMatchPanel);
|
||
this.stopCocosNodeButton(this.teamMatchPanel);
|
||
this.teamMatchPanel.makeFullScreen();
|
||
}
|
||
|
||
var mask = FGUtil.getComponent(this.teamMatchPanel, "mask");
|
||
var close = FGUtil.getButton(this.teamMatchPanel, "alert/close_btn");
|
||
this.pushCloseEvent(mask, this.teamMatchPanel);
|
||
this.pushCloseEvent(close, this.teamMatchPanel);
|
||
|
||
var typeList = FGUtil.getList(this.teamMatchPanel, "alert/type_list");
|
||
var typeNameArr = ["日常活動", "日常副本", "限時活動"];
|
||
for (let i = 0; i < 3; i++) {
|
||
var item = typeList.addItemFromPool().asCom
|
||
item.getController("hideArrow").selectedIndex = 1;
|
||
item.text = typeNameArr[i]
|
||
item.onClick(() => {
|
||
this.getTaskList(i);
|
||
}, this)
|
||
}
|
||
|
||
var allMatchBtn = FGUtil.getComponent(this.teamMatchPanel, "alert/n52");
|
||
allMatchBtn.asButton.onClick(() => {
|
||
FGUtil.getControl(allMatchBtn, "selected").selectedIndex = FGUtil.getControl(allMatchBtn, "selected").selectedIndex == 1 ? 0 : 1;
|
||
})
|
||
|
||
var beLeader = FGUtil.getComponent(this.teamMatchPanel, "alert/n53");
|
||
FGUtil.getControl(beLeader, "selected").selectedIndex = this.matchTeamLimit.beLeader ? 1 : 0
|
||
beLeader.asButton.onClick(() => {
|
||
var control = FGUtil.getControl(beLeader, "selected");
|
||
if (control.selectedIndex == 1) {
|
||
control.selectedIndex = 0;
|
||
this.matchTeamLimit.beLeader = false;
|
||
} else {
|
||
control.selectedIndex = 1;
|
||
this.matchTeamLimit.beLeader = true;
|
||
}
|
||
|
||
})
|
||
|
||
FGUtil.getButton(this.teamMatchPanel, "alert/set_level").onClick(() => {
|
||
this.openSelectLevelPanel();
|
||
}, this)
|
||
|
||
FGUtil.getButton(this.teamMatchPanel, "alert/publish_btn").onClick(() => {
|
||
console.log(this.matchTeamLimit)
|
||
this.isMatching = true;
|
||
}, this)
|
||
|
||
this.getTaskList(0);
|
||
}
|
||
|
||
/**
|
||
* 獲取任務列表
|
||
*/
|
||
getTaskList(idx) {
|
||
var num = this.matchTaskLimit[idx].length;
|
||
var list = FGUtil.getList(this.teamMatchPanel, "alert/target_list");
|
||
list.removeChildrenToPool();
|
||
|
||
for (let i = 0; i < num; i++) {
|
||
let item = list.addItemFromPool().asCom;
|
||
FGUtil.getTextField(item, "title").text = this.matchTaskLimit[idx][i].name;
|
||
if (this.matchTeamLimit.target[FGUtil.getTextField(item, "title").text])
|
||
FGUtil.getControl(item, "selected_btn/selected").selectedIndex = 1;
|
||
else
|
||
FGUtil.getControl(item, "selected_btn/selected").selectedIndex = 0;
|
||
|
||
// 無條件只顯示名字
|
||
if (this.matchTaskLimit[idx][i].type == 1)
|
||
FGUtil.getControl(item, "type").selectedIndex = 1;
|
||
else if (this.matchTaskLimit[idx][i].type == 2) {
|
||
// 滿次和無條件
|
||
FGUtil.getControl(item, "type").selectedIndex = 0;
|
||
if (this.matchTaskLimit[idx][i].all == 0)
|
||
FGUtil.getTextField(item, "limit").text = "無條件";
|
||
else
|
||
FGUtil.getTextField(item, "limit").text = "滿次";
|
||
}
|
||
else {
|
||
FGUtil.getControl(item, "type").selectedIndex = 0;
|
||
FGUtil.getTextField(item, "limit").text = `${this.matchTaskLimit[idx][i].setStart}${this.matchTaskLimit[idx][i].unit} - ${this.matchTaskLimit[idx][i].setEnd}${this.matchTaskLimit[idx][i].unit}`
|
||
}
|
||
|
||
item.clearClick();
|
||
item.onClick(() => {
|
||
var con = FGUtil.getControl(item, "selected_btn/selected")
|
||
if (con.selectedIndex == 0) {
|
||
var temp = {}
|
||
if (this.matchTaskLimit[idx][i].type == 2) {
|
||
temp = { all: this.matchTaskLimit[idx][i].all }
|
||
} else if (this.matchTaskLimit[idx][i].type == 0) {
|
||
temp = {
|
||
setStart: this.matchTaskLimit[idx][i].setStart,
|
||
setEnd: this.matchTaskLimit[idx][i].setEnd,
|
||
}
|
||
}
|
||
this.matchTeamLimit.target[FGUtil.getTextField(item, "title").text] = temp;
|
||
con.selectedIndex = 1;
|
||
} else {
|
||
delete this.matchTeamLimit.target[FGUtil.getTextField(item, "title").text]
|
||
con.selectedIndex = 0;
|
||
}
|
||
}, this)
|
||
FGUtil.getButton(item, "edit_btn").clearClick()
|
||
FGUtil.getButton(item, "edit_btn").onClick((eve) => {
|
||
eve.stopPropagation();
|
||
if (this.matchTaskLimit[idx][i].type == 0)
|
||
this.openTargetRangePanel(this.matchTaskLimit[idx][i], item);
|
||
})
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 打開目標範圍面板
|
||
*/
|
||
openTargetRangePanel(info, obj) {
|
||
if (!this.targetRangePanel || (this.targetRangePanel && !this.targetRangePanel.node && !SKUIUtil.isValid(this.targetRangePanel.node))) {
|
||
this.targetRangePanel = FGUtil.create("main_ui", "target_range_panel");
|
||
FGUtil.root().addChild(this.targetRangePanel);
|
||
this.stopCocosNodeButton(this.targetRangePanel);
|
||
this.targetRangePanel.makeFullScreen();
|
||
this.targetStartRangeList = [];
|
||
this.targetEndRangeList = [];
|
||
}
|
||
|
||
var mask = FGUtil.getComponent(this.targetRangePanel, "mask");
|
||
this.pushCloseEvent(mask, this.targetRangePanel);
|
||
|
||
let startList = FGUtil.getList(this.targetRangePanel, "alert/start_list");
|
||
let endList = FGUtil.getList(this.targetRangePanel, "alert/end_list");
|
||
startList.removeChildrenToPool();
|
||
endList.removeChildrenToPool();
|
||
for (let i = info.start; i <= info.end; i++) {
|
||
let sitem = startList.addItemFromPool().asCom;
|
||
this.targetStartRangeList.push(sitem);
|
||
|
||
if (i == info.setStart)
|
||
FGUtil.getControl(sitem, "selected").selectedIndex = 1;
|
||
|
||
sitem.clearClick()
|
||
sitem.text = i.toString() + info.unit;
|
||
sitem.onClick(() => {
|
||
if (i > info.setEnd) return
|
||
this.changeUnSelectedState(this.targetStartRangeList);
|
||
FGUtil.getControl(sitem, "selected").selectedIndex = 1;
|
||
info.setStart = i;
|
||
FGUtil.getTextField(obj, "limit").text = `${info.setStart}${info.unit} - ${info.setEnd}${info.unit}`
|
||
if (this.matchTeamLimit.target[info.name]) {
|
||
this.matchTeamLimit.target[info.name].setStart = info.setStart
|
||
}
|
||
console.log(this.matchTeamLimit)
|
||
})
|
||
|
||
let eitem = endList.addItemFromPool().asCom;
|
||
this.targetEndRangeList.push(eitem);
|
||
|
||
if (i == info.setEnd)
|
||
FGUtil.getControl(eitem, "selected").selectedIndex = 1;
|
||
|
||
eitem.clearClick()
|
||
eitem.text = i.toString() + info.unit;
|
||
eitem.onClick(() => {
|
||
if (i < info.setStart) return
|
||
this.changeUnSelectedState(this.targetEndRangeList);
|
||
FGUtil.getControl(eitem, "selected").selectedIndex = 1;
|
||
info.setEnd = i;
|
||
FGUtil.getTextField(obj, "limit").text = `${info.setStart}${info.unit} - ${info.setEnd}${info.unit}`
|
||
if (this.matchTeamLimit.target[info.name]) {
|
||
this.matchTeamLimit.target[info.name].setEnd = info.setEnd
|
||
}
|
||
console.log(this.matchTeamLimit)
|
||
})
|
||
}
|
||
}
|
||
/**
|
||
* 關閉所有選擇狀態
|
||
*/
|
||
changeUnSelectedState(list) {
|
||
for (let i in list) {
|
||
FGUtil.getControl(list[i], "selected").selectedIndex = 0
|
||
}
|
||
}
|
||
/**
|
||
* 打開選擇等級面板
|
||
*/
|
||
openSelectLevelPanel() {
|
||
if (!this.selectLevelPanel || (this.selectLevelPanel && !this.selectLevelPanel.node && !SKUIUtil.isValid(this.selectLevelPanel.node))) {
|
||
this.selectLevelPanel = FGUtil.create("main_ui", "team_grade_select_panel");
|
||
FGUtil.root().addChild(this.selectLevelPanel);
|
||
this.stopCocosNodeButton(this.selectLevelPanel);
|
||
this.selectLevelPanel.makeFullScreen();
|
||
}
|
||
|
||
var mask = FGUtil.getComponent(this.selectLevelPanel, "mask");
|
||
this.pushCloseEvent(mask, this.selectLevelPanel, () => {
|
||
var str = FGUtil.getButton(this.selectLevelPanel, "alert/start_zhuan_btn").text
|
||
+ FGUtil.getButton(this.selectLevelPanel, "alert/start_level_btn").text + " - "
|
||
+ FGUtil.getButton(this.selectLevelPanel, "alert/end_zhuan_btn").text
|
||
+ FGUtil.getButton(this.selectLevelPanel, "alert/end_level_btn").text
|
||
FGUtil.getTextField(this.teamMatchPanel, "alert/set_level/targetName").text = str;
|
||
this.matchTeamLimit.level["startZhuan"] = FGUtil.getButton(this.selectLevelPanel, "alert/start_zhuan_btn").text;
|
||
this.matchTeamLimit.level["startLevel"] = FGUtil.getButton(this.selectLevelPanel, "alert/start_level_btn").text;
|
||
this.matchTeamLimit.level["endZhuan"] = FGUtil.getButton(this.selectLevelPanel, "alert/end_zhuan_btn").text;
|
||
this.matchTeamLimit.level["endLevel"] = FGUtil.getButton(this.selectLevelPanel, "alert/end_level_btn").text;
|
||
FGUtil.getList(this.selectLevelPanel, "n2/list").removeChildrenToPool();
|
||
});
|
||
var allLevelBtn = FGUtil.getButton(this.selectLevelPanel, "alert/all_level");
|
||
allLevelBtn.onClick(() => {
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/start_zhuan_btn").text = "0轉";
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/start_level_btn").text = "0級";
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/end_zhuan_btn").text = "3轉";
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/end_level_btn").text = "180級";
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = false;
|
||
FGUtil.getList(this.selectLevelPanel, "n2/list").removeChildrenToPool();
|
||
}, this)
|
||
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/start_zhuan_btn").text = this.matchTeamLimit.level["startZhuan"];
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/start_zhuan_btn").onClick(() => {
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = true;
|
||
var list = FGUtil.getList(this.selectLevelPanel, "n2/list");
|
||
for (let i = 0; i < 4; i++) {
|
||
let item = list.addItemFromPool().asCom;
|
||
item.clearClick();
|
||
item.text = i.toString() + "轉";
|
||
item.onClick(() => {
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/start_zhuan_btn").text = i.toString() + "轉";
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = false;
|
||
FGUtil.getList(this.selectLevelPanel, "n2/list").removeChildrenToPool();
|
||
}, this)
|
||
}
|
||
}, this)
|
||
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/end_zhuan_btn").text = this.matchTeamLimit.level["endZhuan"];
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/end_zhuan_btn").onClick(() => {
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = true;
|
||
var list = FGUtil.getList(this.selectLevelPanel, "n2/list");
|
||
for (let i = 0; i < 4; i++) {
|
||
let item = list.addItemFromPool().asCom;
|
||
item.clearClick();
|
||
item.text = i.toString() + "轉";
|
||
item.onClick(() => {
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/end_zhuan_btn").text = i.toString() + "轉";
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = false;
|
||
FGUtil.getList(this.selectLevelPanel, "n2/list").removeChildrenToPool();
|
||
}, this)
|
||
}
|
||
}, this)
|
||
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/start_level_btn").text = this.matchTeamLimit.level["startLevel"];
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/start_level_btn").onClick(() => {
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = true;
|
||
var list = FGUtil.getList(this.selectLevelPanel, "n2/list");
|
||
for (let i = 0; i < 19; i++) {
|
||
let item = list.addItemFromPool().asCom;
|
||
item.clearClick();
|
||
item.text = (i * 10).toString() + "級";
|
||
item.onClick(() => {
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/start_level_btn").text = (i * 10).toString() + "級";
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = false;
|
||
FGUtil.getList(this.selectLevelPanel, "n2/list").removeChildrenToPool();
|
||
}, this)
|
||
}
|
||
}, this)
|
||
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/end_level_btn").text = this.matchTeamLimit.level["endLevel"];
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/end_level_btn").onClick(() => {
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = true;
|
||
var list = FGUtil.getList(this.selectLevelPanel, "n2/list");
|
||
for (let i = 0; i < 19; i++) {
|
||
let item = list.addItemFromPool().asCom;
|
||
item.clearClick();
|
||
item.text = (i * 10).toString() + "級";
|
||
item.onClick(() => {
|
||
FGUtil.getButton(this.selectLevelPanel, "alert/end_level_btn").text = (i * 10).toString() + "級";
|
||
FGUtil.getComponent(this.selectLevelPanel, "n2").visible = false;
|
||
FGUtil.getList(this.selectLevelPanel, "n2/list").removeChildrenToPool();
|
||
}, this)
|
||
}
|
||
}, this)
|
||
}
|
||
|
||
/**
|
||
* 創建添加預製體
|
||
* @param parent 父節點
|
||
* @param pos 位置
|
||
* @param prefabName 預製體名稱
|
||
* @param nodeName 節點名稱
|
||
* @returns
|
||
*/
|
||
createPrefab(parent : cc.Node, pos : any, prefabName : string, nodeName : string) : cc.Node {
|
||
if (!this.prefabObject[prefabName]) {
|
||
console.warn("沒有找到預製體————" + prefabName);
|
||
return;
|
||
}
|
||
let Item = cc.instantiate(this.prefabObject[prefabName]);
|
||
Item.parent = parent;
|
||
Item.name = nodeName;
|
||
Item.setPosition(cc.v2(pos.x, pos.y));
|
||
return Item;
|
||
}
|
||
|
||
/**
|
||
* 確認彈框
|
||
* @param text
|
||
* @param cancelBlock
|
||
* @param sureBlock
|
||
*/
|
||
private showAlert(text : string, cancelBlock : () => void, sureBlock : () => void) {
|
||
if (!this.alertPanel || (this.alertPanel && !this.alertPanel.node && !SKUIUtil.isValid(this.alertPanel.node))) {
|
||
this.alertPanel = FGUtil.create("main_ui", "alert_main");
|
||
FGUtil.root().addChild(this.alertPanel);
|
||
this.stopCocosNodeButton(this.alertPanel);
|
||
}
|
||
|
||
let alert = FGUtil.getComponent(this.alertPanel, "alert");
|
||
var title = FGUtil.getTextField(alert, "title");
|
||
var cancelBtn = FGUtil.getButton(alert, "cancel_btn");
|
||
this.pushCloseEvent(cancelBtn, this.alertPanel, cancelBlock);
|
||
var sureBtn = FGUtil.getButton(alert, "sure_btn")
|
||
this.pushCloseEvent(sureBtn, this.alertPanel, sureBlock);
|
||
|
||
var progressBar = FGUtil.getProgressBar(alert, "progress");
|
||
|
||
cancelBtn.visible = true;
|
||
sureBtn.visible = true;
|
||
progressBar.visible = false;
|
||
let root = FGUtil.root();
|
||
if (root) {
|
||
title.text = text;
|
||
root.addChild(this.alertPanel);
|
||
FGUtil.fitScreen(this.alertPanel);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 添加關閉事件
|
||
*/
|
||
pushCloseEvent(item : fairygui.GComponent, target : fairygui.GComponent, call : Function = null) {
|
||
item.clearClick();
|
||
item.onClick(() => {
|
||
call && call()
|
||
FGUtil.dispose(target);
|
||
this.recoveryCocosNodeButton();
|
||
this.unscheduleAllCallbacks()
|
||
}, this)
|
||
}
|
||
/**
|
||
* 停止隊員的原生button相應
|
||
*/
|
||
private stopCocosNodeButton(item : fairygui.GComponent) {
|
||
if (this.popList == null)
|
||
this.popList = [];
|
||
this.popList.push(item)
|
||
try {
|
||
var list = this.teamPanel.node.getChildByName("team_member_node").children;
|
||
if (list.length > 1) {
|
||
for (let i in list) {
|
||
list[i].getComponent(cc.Button).interactable = false;
|
||
// console.log(cc.find("normal/petIcon", list[i]))
|
||
if (list[i].name == "goPartnerCard_1")
|
||
cc.find("normal/petIcon", list[i]).getComponent(cc.Button).interactable = false;
|
||
}
|
||
// console.log("不可點擊")
|
||
}
|
||
}
|
||
catch (err) {
|
||
console.warn(err)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 恢復隊員的原生button相應
|
||
*/
|
||
private recoveryCocosNodeButton() {
|
||
this.popList.pop();
|
||
if (this.popList.length > 1)
|
||
return;
|
||
try {
|
||
if (this.teamPanel && this.teamPanel.node) {
|
||
var list = this.teamPanel.node.getChildByName("team_member_node").children;
|
||
if (list.length > 1) {
|
||
for (let i in list) {
|
||
list[i].getComponent(cc.Button).interactable = true;
|
||
if (list[i].name == "goPartnerCard_1")
|
||
cc.find("normal/petIcon", list[i]).getComponent(cc.Button).interactable = true;
|
||
}
|
||
// console.log("可點擊")
|
||
}
|
||
}
|
||
}
|
||
catch (err) {
|
||
console.warn(err)
|
||
}
|
||
}
|
||
} |