216 lines
5.7 KiB
TypeScript
216 lines
5.7 KiB
TypeScript
import FGUtil from "./gear_2.3.4/fgui/FGUtil";
|
||
import GameUtil from "./core/GameUtil";
|
||
import SKDataUtil from "./gear_2.3.4/util/SKDataUtil";
|
||
import SkillUtil from "./game/skill/core/SkillUtil";
|
||
import GameModel from "./core/GameModel";
|
||
import FGAlert from "./gear_2.3.4/fgui/FGAlert";
|
||
import { BattleType } from "./game/battle/Battle";
|
||
import MsgAlert from "./game/msg/MsgAlert";
|
||
import { HeadBorderUtil } from "./appearance/HeadBorderUtil";
|
||
export default class RoleInfoAlert {
|
||
|
||
private static Instance = new RoleInfoAlert();
|
||
|
||
|
||
|
||
main : fgui.GComponent;
|
||
|
||
static pInfo : any = null;
|
||
static show(info : any, isChat : boolean = false) {
|
||
this.Instance.show(info, isChat);
|
||
}
|
||
static menuList = [
|
||
"決 殺",
|
||
"戰 鬥",
|
||
"切 磋",
|
||
"聊 天",
|
||
"好友空間",
|
||
"加入隊伍",
|
||
"邀請入隊",
|
||
"添加好友",
|
||
"拜訪家園",
|
||
"邀請入幫",
|
||
"拜 師",
|
||
"邀請固定隊",
|
||
"加入黑名單",
|
||
"舉 報",
|
||
]
|
||
|
||
show(info : any, isChat : boolean = false) {
|
||
if (GameModel.player.getLogic().isBing) {
|
||
MsgAlert.addMsg("冰凍中,不可進行操作")
|
||
return
|
||
}
|
||
if (GameModel.player.mapid == 1213) {
|
||
return
|
||
}
|
||
RoleInfoAlert.pInfo = info
|
||
FGUtil.dispose(this.main);
|
||
this.main = FGUtil.create("main_ui", "playerMenu_panel");
|
||
let alert = FGUtil.getComponent(this.main, "alert");
|
||
FGUtil.getComponent(this.main, "mask").onClick(this.hide, this);
|
||
FGUtil.getLoader(alert, "head").texture = GameModel.getRoleHead(info.resid);
|
||
|
||
var headid = info.portrait;
|
||
headid = headid ? headid : 0;
|
||
this.setHeadBorder(headid);
|
||
|
||
FGUtil.getTextField(alert, "level").text = info.level;
|
||
FGUtil.getTextField(alert, "id").text = `編號${info.roleid}`;
|
||
FGUtil.getTextField(alert, "name").text = info.name;
|
||
|
||
if (info.bangname)
|
||
FGUtil.getTextField(alert, "gang").text = `幫派:${info.bangname}`;
|
||
else
|
||
FGUtil.getTextField(alert, "gang").text = "";
|
||
|
||
let list = FGUtil.getList(alert, "list");
|
||
list.removeChildren();
|
||
for (let i in RoleInfoAlert.menuList) {
|
||
var word = RoleInfoAlert.menuList[i];
|
||
|
||
if (isChat && word == "決 殺") {
|
||
continue;
|
||
}
|
||
if (isChat && word == "切 磋") {
|
||
continue;
|
||
}
|
||
if (word != "決 殺" && GameModel.player.mapid == 4004) {
|
||
continue;
|
||
}
|
||
if (word == "決 殺" && GameModel.player.mapid != 4004) {
|
||
continue;
|
||
}
|
||
|
||
if (GameModel.player.mapid == 3001 && (word != "戰 鬥" && word != "加入隊伍" && word != "邀請入隊")) {
|
||
continue;
|
||
}
|
||
|
||
if (word == "戰 鬥" && GameModel.player.mapid != 3001) {
|
||
continue;
|
||
}
|
||
if (word == "戰 鬥" && GameModel.player.bangname == info.bangname) {
|
||
continue;
|
||
}
|
||
|
||
if (word == "加入隊伍") {
|
||
if (GameModel.player.teamid > 0 || info.teamid <= 0)
|
||
continue;
|
||
if (GameModel.player.mapid == 3001 && GameModel.player.bangname != info.bangname) {
|
||
continue;
|
||
}
|
||
}
|
||
|
||
if (word == "邀請入隊") {
|
||
if (!GameModel.player.isleader || GameModel.player.teamid == 0)
|
||
continue;
|
||
if (GameModel.player.mapid == 3001 && GameModel.player.bangname != info.bangname) {
|
||
continue;
|
||
}
|
||
}
|
||
|
||
var item = list.addItem().asCom;
|
||
FGUtil.getTextField(item, "title").text = word;
|
||
item.node["wordType"] = word;
|
||
item.onClick(this.clickMenu, this)
|
||
}
|
||
|
||
FGUtil.root().addChild(this.main);
|
||
this.main.makeFullScreen();
|
||
}
|
||
static hide() {
|
||
this.Instance.hide();
|
||
}
|
||
|
||
hide() {
|
||
FGUtil.dispose(this.main);
|
||
this.main = null;
|
||
}
|
||
|
||
clickMenu(e : Event) {
|
||
if (!SKDataUtil.hasProperty(e.target, "wordType")) return;
|
||
var word = e.target["wordType"]
|
||
if (word == "決 殺") {
|
||
let teamId = RoleInfoAlert.pInfo.teamid;
|
||
GameModel.notice.addMsg(1, '是否發起決殺? ', () => {
|
||
GameModel.send('c2s_sat_challenge', {
|
||
rivalTeamId: teamId
|
||
});
|
||
RoleInfoAlert.hide();
|
||
}, () => { });
|
||
}
|
||
|
||
else if (word == "戰 鬥") {
|
||
let roleId = RoleInfoAlert.pInfo.roleid;
|
||
GameModel.send('c2s_faction_combat', {
|
||
enemyRoleId: roleId
|
||
});
|
||
RoleInfoAlert.hide();
|
||
}
|
||
|
||
else if (word == "切 磋") {
|
||
let roleId = RoleInfoAlert.pInfo.roleid;
|
||
FGAlert.show(`一定要和他拼個你死我活嗎?\n[color=#ff0000]野外決鬥每擊敗一個玩家,被抓捕後將失去30分鐘自由遊戲時間,決鬥死亡將會扣除2億經驗,是否繼續[/color]`, () => {
|
||
FGAlert.hide();
|
||
}, () => {
|
||
FGAlert.hide();
|
||
RoleInfoAlert.hide();
|
||
GameModel.send('c2s_pk', {
|
||
troleid: roleId,
|
||
type: BattleType.Force
|
||
});
|
||
});
|
||
}
|
||
|
||
else if (word == "加入隊伍") {
|
||
GameModel.send('c2s_requst_team', {
|
||
roleid: GameModel.player.roleid,
|
||
teamid: RoleInfoAlert.pInfo.teamid
|
||
});
|
||
RoleInfoAlert.hide();
|
||
}
|
||
|
||
else if (word == "邀請入隊") {
|
||
GameModel.send('c2s_team_invite', {
|
||
toroleid: RoleInfoAlert.pInfo.roleid,
|
||
});
|
||
RoleInfoAlert.hide();
|
||
}
|
||
|
||
else if (word == "添加好友") {
|
||
GameModel.send('c2s_add_friend', {
|
||
roleid: RoleInfoAlert.pInfo.roleid
|
||
});
|
||
RoleInfoAlert.hide();
|
||
}
|
||
|
||
else {
|
||
MsgAlert.addMsg("暫未開放")
|
||
}
|
||
}
|
||
|
||
|
||
setHeadBorder(headBorderId) {
|
||
var borderCom = FGUtil.getComponent(this.main, "alert/border");
|
||
var data = HeadBorderUtil.getBorderData(headBorderId);
|
||
FGUtil.getLoader(borderCom, "border").url = `ui://main_ui/${data.border}`;
|
||
|
||
var LT = FGUtil.getComponent(borderCom, "LT")
|
||
LT.asLoader.url = `ui://main_ui/${data.addLT}`;
|
||
LT.x = data.LTPos.x;
|
||
LT.y = data.LTPos.y;
|
||
var LB = FGUtil.getComponent(borderCom, "LB")
|
||
LB.asLoader.url = `ui://main_ui/${data.addLB}`;
|
||
LB.x = data.LBPos.x;
|
||
LB.y = data.LBPos.y;
|
||
var RT = FGUtil.getComponent(borderCom, "RT")
|
||
RT.asLoader.url = `ui://main_ui/${data.addRT}`;
|
||
RT.x = data.RTPos.x;
|
||
RT.y = data.RTPos.y;
|
||
var RB = FGUtil.getComponent(borderCom, "RB")
|
||
RB.asLoader.url = `ui://main_ui/${data.addRB}`;
|
||
RB.x = data.RBPos.x;
|
||
RB.y = data.RBPos.y;
|
||
|
||
}
|
||
} |