185 lines
5.4 KiB
TypeScript
185 lines
5.4 KiB
TypeScript
import GameModel from "../core/GameModel";
|
||
import ItemUtil from "../core/ItemUtil";
|
||
import MsgAlert from "../game/msg/MsgAlert";
|
||
import FGUtil from "../gear_2.3.4/fgui/FGUtil";
|
||
import SKDataUtil from "../gear_2.3.4/util/SKDataUtil";
|
||
import SKUIUtil from "../gear_2.3.4/util/SKUIUtil";
|
||
import SKTimeUtil from "../../ts/gear_2.3.4/util/SKTimeUtil";
|
||
const { ccclass, property } = cc._decorator;
|
||
export default class TianTiPanel extends cc.Component {
|
||
|
||
/**
|
||
* 轉盤單例實例
|
||
*/
|
||
public static Instance: TianTiPanel = null;
|
||
/**
|
||
* 是否已加入隊伍
|
||
*/
|
||
hasTeam: Boolean = false;
|
||
/**
|
||
* 隊伍ID
|
||
*/
|
||
teamId: number = 0;
|
||
/**
|
||
* 是否為隊長
|
||
*/
|
||
isLeader: Boolean = false;
|
||
/**
|
||
* 天梯面板
|
||
*/
|
||
ManiPanel: fgui.GComponent = null;
|
||
/**
|
||
* 天梯面板总节点
|
||
*/
|
||
alrt: fgui.GComponent = null;
|
||
|
||
countDownTime: number = 13;
|
||
|
||
quxiaopipei: fgui.GButton = null;
|
||
/**阻止點擊 */
|
||
stopTap: boolean = false;
|
||
timestr: fgui.GTextField
|
||
count = 0;
|
||
callback: Function = null;
|
||
/**
|
||
* 需要加載的預製體
|
||
*/
|
||
prefabObject: any = {};
|
||
|
||
onLoad() {
|
||
if (TianTiPanel.Instance === null) {
|
||
TianTiPanel.Instance = this;
|
||
// this.loadPrefab();//不需要加載預製體
|
||
} else {
|
||
this.destroy();
|
||
return;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 加載預製體
|
||
*/
|
||
loadPrefab() {
|
||
// 加載所需的預製體
|
||
var prefabList = [
|
||
{ url: "Prefabs/UIRole", name: "UIRole" },
|
||
]
|
||
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;
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 打開天梯面板
|
||
*/
|
||
openTianTiPiPeiPanel(refresh: boolean = false, data: any = null) {
|
||
if (!this.ManiPanel || (this.ManiPanel && !this.ManiPanel.node && !SKUIUtil.isValid(this.ManiPanel.node))) {
|
||
this.ManiPanel = FGUtil.create("main_ui", "pipei");//面板
|
||
FGUtil.root().addChild(this.ManiPanel);
|
||
this.ManiPanel.makeFullScreen();
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
// 設置是否有隊伍、是否為隊長;關閉速度顯示 B
|
||
this.isLeader = GameModel.player.isleader;
|
||
this.teamId = GameModel.player.teamid;
|
||
this.hasTeam = this.teamId > 0;
|
||
this.quxiaopipei = FGUtil.getButton(this.ManiPanel, `n0/quxiaopipei`);
|
||
this.pushCloseEvent(this.quxiaopipei, this.ManiPanel, () => {//取消匹配
|
||
GameModel.send('c2s_tianfu_quxiao', {
|
||
roleid: GameModel.player.roleid,
|
||
});
|
||
});
|
||
this.timestr = FGUtil.getTextField(this.ManiPanel, `n0/TIME`);
|
||
var memberList = GameModel.player.teamInfo.objlist;
|
||
for (let i in memberList) {
|
||
//頭像
|
||
// FGUtil.getLoader(this.ManiPanel, `n0/L${i}`).texture = GameModel.getRoleHead(memberList[i].resid);
|
||
FGUtil.getLoader(this.ManiPanel, `n0/L${i}`).url = `ui://main_ui/roleB_${memberList[i].resid}`
|
||
FGUtil.getTextField(this.ManiPanel, `n0/N${i}`).text = `${memberList[i].name}`
|
||
}
|
||
|
||
this.timestr.text = `匹配中。 。 。 `
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
reShow(data: any) {
|
||
|
||
this.timestr.text = `匹配成功! `
|
||
let teamS = data.teamS;
|
||
let teamE = data.teamE;
|
||
|
||
for (const indx in teamS) {
|
||
let valuestr = teamS[indx];
|
||
console.log(valuestr.resid)
|
||
console.log(valuestr.name)
|
||
console.log(valuestr.level)
|
||
FGUtil.getLoader(this.ManiPanel, `n0/L${indx}`).url = `ui://main_ui/roleB_${valuestr.resid}`
|
||
// FGUtil.getLoader(this.ManiPanel, `n0/L${indx}`).texture = GameModel.getRoleHead(valuestr.resid);
|
||
FGUtil.getTextField(this.ManiPanel, `n0/N${indx}`).text = `${valuestr.name}`
|
||
|
||
}
|
||
|
||
for (const indx in teamE) {
|
||
let valuestr = teamE[indx];
|
||
console.log(valuestr.resid)
|
||
console.log(valuestr.name)
|
||
console.log(valuestr.level)
|
||
FGUtil.getLoader(this.ManiPanel, `n0/LL${indx}`).url = `ui://main_ui/roleB_${valuestr.resid}`
|
||
// FGUtil.getLoader(this.ManiPanel, `n0/LL${indx}`).texture = GameModel.getRoleHead(valuestr.resid);
|
||
FGUtil.getTextField(this.ManiPanel, `n0/NN${indx}`).text = `${valuestr.name}`
|
||
|
||
}
|
||
this.count = 10;
|
||
//10秒倒計時
|
||
//interval -以秒為單位的Tick間隔。 0表示每幀打勾。 (人話:多久執行一次
|
||
//repeat -選擇器將被執行(重複+ 1)次,你可以使用cc.macro。 REPEAT_FOREVER表示無限滴答。 (人話:總共執行多少次)
|
||
this.unschedule(this.task1);
|
||
this.schedule(this.task1, 1, 10, 1);
|
||
}
|
||
|
||
task1() {
|
||
this.count = this.count - (1);
|
||
console.log("執行任務1開始==", this.count);
|
||
this.timestr.text = `${this.count}`
|
||
if (this.count <= 0) {
|
||
console.log("倒計時完成");
|
||
this.unschedule(this.task1);
|
||
FGUtil.dispose(this.ManiPanel);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**
|
||
* 添加關閉事件
|
||
*/
|
||
pushCloseEvent(item: fairygui.GComponent, target: fairygui.GComponent, call: Function = null) {
|
||
item.clearClick();
|
||
item.onClick(() => {
|
||
if (this.stopTap) return
|
||
call && call();
|
||
FGUtil.dispose(target);
|
||
}, this)
|
||
}
|
||
} |