import GameModel from "../ts/core/GameModel"; import SKDataUtil from "../ts/gear_2.3.4/util/SKDataUtil"; import SKUIUtil from "../ts/gear_2.3.4/util/SKUIUtil"; import VIPUtil from "../ts/game/role/VIPUtil"; import TeamPanel from "../ts/team/TeamPanel"; import FGAlert from "../ts/gear_2.3.4/fgui/FGAlert"; import MyModel from "../ts/core/MyModel"; export default class Player { constructor(id) { this.accountid = id; this.serverid = 0; this.onlyid = 0; this.roleid = 0; this.account = ''; this.token = ''; this.state = 0; this.name = 0; this.race = 0; this.sex = 0; this.mapid = 0; this.x = 0; this.y = 0; this.relive = 0; this.level = 0; this.fplevel = 0; this.level_reward = ''; this.weapon = ''; this.state = 0; this.resid = 0; this.tResid = 0; this.bangid = 0; this.bangdata = null; this.chargesum = 0; this.rewardrecord = 0; this.sprewardrecord = 0; this.exp = 0; this.maxexp = 0; this.node = null; this.maxChatItems = 50; this.chatItemList = {}; this.unreadInfoId = {}; this.teamInfo = {}; this.teamid = 0; this.isleader = false; this.livingtype = 1; this.qianneng = 0; this.gmlevel = 0; // this.shane = 0; this.prisonTime = 0; this.itemList = {}; //稱謂 this.titleid = 0; this.titletype = -1; this.titleval = ''; this.bangname = ''; this.color1 = 0; this.color2 = 0; this.schemename = ''; this.safe_password = ''; this.safe_lock = 0; this.wingId = 0; // 背包格子 this.bagKindNum = 50; // 倉庫格子 this.lockerKindNum = 100; // 今日活躍 this.todayActive = 0; // 需要隱藏的Icon this.hideIconList = {}; // 最後補籤的日期 this.mendData = ""; // 充值dayMap this.dayMap = null; this.bodyEffectId = 0; this.footEeffectId = 0; this.tempLeave = false; this.shane = 0; this.offlinetime = 0; this.getgift = 0; this.bindInfo = null; this.bplayerinfo = null; this.headBorder = 0; //天梯積分 this.tianti_integral = 0; } setTeam(info) { if (info.teamid != null) { this.teamInfo = info; this.teamid = info.teamid; this.isleader = info.leader == this.roleid; var memberList = info.objlist; for (let i in memberList) { if (SKDataUtil.hasProperty(memberList[i], "onlyid")) { if (memberList[i].roleid == GameModel.player.roleid) { this.tempLeave = memberList[i].pause == 1; if (TeamPanel.Instance) TeamPanel.Instance.autoRecall = memberList[i].ischeck == 1; break; } } } } else { GameModel.send('c2s_ask_partner_list', { nRoleID: GameModel.player.roleid }); } let role = this.getLogic(); if (!role) { cc.warn("$異常:設置隊伍異常,找不到角色類!"); } else { if (this.teamid > 0 && this.isleader) { role.addHeadStatus(info.teamcnt >= 5 ? 'zudui2' : 'zudui'); } else { role.delHeadStatus('zudui'); role.delHeadStatus('zudui2'); } } let logic = this.getMainUILogic(); if (logic) { logic.setTeamListInfo(); } else { cc.warn("$異常:設置隊伍異常,主界面不存在!"); } } addFriendChatInfo(info) { let index = info.toid + info.fromid; if (!this.chatItemList[index]) { this.chatItemList[index] = []; } this.chatItemList[index].push(info); let length = this.chatItemList[index].length; if (length > this.maxChatItems) { this.chatItemList[index].splice(0, length - this.maxChatItems); } this.unreadInfoId[info.fromid] = 1; let mainUI = this.getMainUILogic(); if (mainUI) { mainUI.friendsChat(info); } } setInfo(info) { info.account && (this.account = info.account); info.state && (this.state = info.state); info.token && (this.token = info.token); } setUserInfo(data) { // console.warn("人物信息修改") this.gameData = data; data.addattr1 && (this.gameData.addattr1 = JSON.parse(this.gameData.addattr1)); data.addattr2 && (this.gameData.addattr2 = JSON.parse(this.gameData.addattr2)); data.attr1 && (this.gameData.attr1 = JSON.parse(this.gameData.attr1)); data.serverid && (this.serverid = data.serverid); data.onlyid && (this.onlyid = data.onlyid); data.accountid && (this.accountid = data.accountid); data.roleid && (this.roleid = data.roleid); data.name && (this.name = data.name); data.race && (this.race = data.race); data.sex && (this.sex = data.sex); data.mapid && (this.mapid = data.mapid); data.x && (this.x = data.x); data.y && (this.y = data.y); data.relive && (this.relive = data.relive); data.getgift && (this.getgift = data.getgift); data.level && (this.level = data.level); data.fplevel && (this.fplevel = data.fplevel); data.levelreward && (this.level_reward = data.levelreward); data.weapon && (this.weapon = data.weapon); data.state && (this.state = data.state); data.resid && (this.resid = data.resid); data.changeid && (this.tResid = data.changeid); data.bangid && (this.bangid = data.bangid); if (this.bangid && this.bangid > 0) { GameModel.send('c2s_getbanginfo', { roleid: this.roleid, bangid: this.bangid }); } data.shane && (this.shane = data.shane); data.offlinetime && (this.offlinetime = data.offlinetime); data.exp && (this.exp = data.exp); data.maxexp && (this.maxexp = data.maxexp); data.chargesum && (this.chargesum = data.chargesum); data.rewardrecord && (this.rewardrecord = data.rewardrecord); data.sprewardrecord && (this.sprewardrecord = data.sprewardrecord); data.gmlevel && (this.gmlevel = data.gmlevel); data.teamid && (this.teamid = data.teamid); data.isleader && (this.isleader = data.isleader); data.qianneng && (this.qianneng = data.qianneng); data.bangname && (this.bangname = data.bangname); data.titleid && (this.titleid = data.titleid); data.titleval && (this.titleval = data.titleval); data.titletype && (this.titletype = data.titletype); data.schemename && (this.schemename = data.schemename); data.bagKindNum && (this.bagKindNum = data.bagKindNum); data.lockerKindNum && (this.lockerKindNum = data.lockerKindNum); data.portrait && (this.headBorder = data.portrait); data.iconList && (this.hideIconList = JSON.parse(data.iconList)); data.mendDate && (this.mendDate = data.mendDate.replace(/-/g, "/")); data.dayMap && (this.dayMap = JSON.parse(data.dayMap)); data.babyList && (MyModel.shared.BabyList.UpdateBabyList(JSON.parse(data.babyList))) data.starInfo && (MyModel.shared.StarData.UpdateStarData(JSON.parse(data.starInfo))) data.xwList && (this.xwList = JSON.parse(data.xwList)) this.safe_password = data.safepassword || this.safe_password; this.safe_lock = data.safelock || this.safe_lock; data.tianti_integral && (this.tianti_integral = data.tianti_integral);//天梯積分 if (SKDataUtil.isNumber(data.color1)) { this.color1 = data.color1; } if (SKDataUtil.isNumber(data.color2)) { this.color2 = data.color2; } let wingId = SKDataUtil.findByDict(GameModel.game_conf.wing, "resid", data.wingId, "id", 0); this.wingId = wingId; console.log("wingwingwingwinfgwinfnwfnwifwnifw", data.wingId, wingId) // data.shane && (this.shane = data.shane); // this.shanEChange(data.shane); if (this.tResid > 0) { var logic = this.getLogic(); if (logic) logic.resetResid(this.tResid) } // 恢復變身 var roleLg = this.getLogic(); if (roleLg) { if (roleLg.tResid != this.tResid && this.tResid == 0) { roleLg.clearChange(); } } this.changeEff(); } setNode(node) { this.node = node; } getNode() { return this.node; } getLogic() { if (SKUIUtil.isValid(this.node)) { let result = this.node.getComponent('role'); return result; } return null; } getMainLogic() { if (this.mainGame == null) { this.mainGame = cc.find('Canvas'); } let logic = this.mainGame.getComponent('GameLogic'); return logic; } getMainUILogic() { if (this.mainUI == null) { this.mainUI = cc.find('Canvas/MainUI'); } if (!SKUIUtil.isValid(this.mainUI)) { let scene = cc.director.getScene(); cc.warn(`$警告:玩家獲得主界面異常,當前場景${scene.name}`); return null; } let logic = this.mainUI.getComponent('MainUI'); return logic; } levelUp(level) { this.getLogic().showLevelUp(); this.getMainUILogic().setRoleLevel(level); } changeExp(curexp, maxexp = 0) { this.exp = curexp; if (maxexp != 0) { this.maxexp = maxexp; if (GameModel.player.gameData) { GameModel.player.gameData.maxexp = maxexp; } } if (GameModel.player.gameData) { GameModel.player.gameData.exp = curexp; } let logic = this.getMainUILogic(); if (!logic) { cc.warn(`$警告:玩家設置經驗值[${curexp}/${maxexp}]無主界面`); return; } logic.setExp(curexp, maxexp); } shanEChange(n) { // this.shane = n; // if (this.shane > 0 && this.mapid == 1011) { // let mainLogic = this.getMainLogic(); // if (mainLogic) { // mainLogic.mapLogic.changeMap(1201, cc.v2(59, 4)); // } // } // if (this.shane <= 0 && this.mapid == 1201) { // let mainLogic = this.getMainLogic(); // if (mainLogic) { // mainLogic.mapLogic.changeMap(1011); // } // // this.getLogic().setObjPos(41, 19); // } } changePrisonTime(n) { if (n < 0) { this.getLogic().isShane = true; this.getLogic().resetRoleTitle(); return; } if (n > 0) { this.getLogic().isShane = false; this.getLogic().resetRoleTitle(); } this.prisonTime = n; this.getMainUILogic().changePrisonTime(n); } getItemList() { return this.itemList; } getItemNum() { let n = 0; for (const itemid in this.itemList) { const itemnum = this.itemList[itemid]; if (itemnum > 0) { n++; } } return n; } send(event, data) { GameModel.send(event, data); } changeEff() { var playLog = this.getLogic() if (!playLog) return; playLog.bodyEffid = this.bodyEffectId; playLog.footEffid = this.footEeffectId; playLog.effectChange(); playLog.changeHeadBorder(this.headBorder); } getXwByItemID(itemID) { if (!this.xwList || this.xwList.length == 0) return null; for (let index = 0; index < this.xwList.length; index++) { let xw = this.xwList[index]; if (xw.itemID == itemID) { return xw } } return null } updateXw(itemID, info) { if (!this.xwList) { this.xwList = [] } for (let index = 0; index < this.xwList.length; index++) { let xw = this.xwList[index]; if (xw.itemID == itemID) { xw.attr1 = info.attr1 xw.attr2 = info.attr2 xw.attr3 = info.attr3 return xw } } let xw = { itemID: itemID, attr1: info.attr1, attr2: info.attr2, attr3: info.attr3 } this.xwList.push(xw) } } module.exports = Player;