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