import { MapEvent, UserEvent, setChengHaoEvent } from "../const/EventConst"; import { ActPifu, FUserInfo, QufuInfo, SevBack, UserInfo } from "../../common/Xys"; import { ChenghaoDelRed, ChenghaoDelRedPram, ChenghaoPeidai, ChenghaoPeidaiPram, FeiniaoSetCd, FeiniaoSetCdPram, PifuJiesuo, PifuJiesuoPram, PifuSet, PifuSetHead, PifuSetHeadPram, PifuSetPram, PifuSkinLevelUp, PifuSkinLevelUpPram, PlayerGetXy, PlayerGetXyPram, PlayerReconnect, PlayerReconnectPram, UserHuanFu, UserHuanFuPram, UserIntoName, UserIntoNamePram, UserLookFuuidAll, UserLookFuuidAllPram, UserRandomName, UserRandomNamePram, UserSetName, UserSetNamePram, UserUseCode, UserUseCodePram } from "../../common/Xyc"; import EventMng from "../../manager/EventMng"; import GameController from "../../GameController"; import GameDataCenter from "../GameDataCenter"; import Gamecfg from "../../common/gameCfg"; import IDataModel from "./IDataModel"; import Load from "../../utils/Load"; import NativeManager from "../../utils/NativeManager"; import UIHelp from "../../logic/ui/UIHelp"; import { gameMethod } from "../../common/gameMethod"; import { HeadBgType, OpenType, RedUtilType, ReportRoleType, UserSex } from "../const/TypeConst"; import { RedUtil } from "../../frameWork/fgui/RedUtil"; import GameMath from "../../utils/GameMath"; export default class UserModel extends IDataModel { serverList: QufuInfo[] = [] // 服务器列表信息 taskNodes: { [key: string]: cc.Node } = {} //临时 主线任务指引节点 private roleSexType: UserSex = UserSex.man; // 角色的性别类型 selectHeadId: string = "";// 当前选中的头像 selectChenghaoId: string = "";// 当前选中的称号 newGetHead: string[] = [];// 新获得的头像 wxHeadAsset: cc.Texture2D;//缓存玩家的微信头像 initPiFuList; KEY_OPENED_ARENA = "KEY_OPENED_ARENA" constructor() { super('user'); GameDataCenter.setRspModel("actChenghao", this); GameDataCenter.setRspModel("actPifu", this); } doSevback(result: SevBack) { if (result.qufuList) { this.serverList = Object.values(result.qufuList) } } doEvent(result: SevBack) { if (result.userInfo) { EventMng.emit(UserEvent.UP_USER) if (!gameMethod.isEmpty(result.userInfo.u) && result.userInfo.u.iscz > 0) { EventMng.emit(UserEvent.CHARGESUCC) } } if (result?.actChenghao?.u?.chuan) { EventMng.emit(setChengHaoEvent.USE_CHENGHAO); } if (result?.actChenghao?.u?.list) { RedUtil.updateRed(RedUtilType.zbChengHao); } if (result?.actPifu?.a?.list) { this.initPiFuList = result?.actPifu?.a?.list; RedUtil.updateRed(RedUtilType.zbHead); } if (result?.userInfo?.u?.level) { GameDataCenter.plat.instance.reportRole(ReportRoleType.levelup); } if (result?.userInfo?.u?.name) { GameDataCenter.plat.instance.reportRole(ReportRoleType.changeName); } if (result?.actPifu?.u?.skin) { EventMng.emit(MapEvent.MAP_CHANGE_SKIN); } } ////////// 业务阶段所需参数 //////////start get uuid(): string { if (gameMethod.isEmpty(GameDataCenter.sevBack)) { return "" } if (gameMethod.isEmpty(GameDataCenter.sevBack.userInfo)) { return "" } let userData = GameDataCenter.sevBack.userInfo.a if (userData != null && userData.uuid != null) { return userData.uuid } return "" } get token(): string { if (gameMethod.isEmpty(GameDataCenter.sevBack)) { return "" } if (gameMethod.isEmpty(GameDataCenter.sevBack.userInfo)) { return "" } let userData = GameDataCenter.sevBack.userInfo.a if (userData != null && userData.token != null) { return userData.token } return "" } get serverName(): string { if (gameMethod.isEmpty(GameDataCenter.sevBack)) { return null } if (gameMethod.isEmpty(GameDataCenter.sevBack.userInfo)) { return null } if (gameMethod.isEmpty(GameDataCenter.sevBack.qufuList[GameDataCenter.sevBack.userInfo.a.sid])) { return null } return GameDataCenter.sevBack.qufuList[GameDataCenter.sevBack.userInfo.a.sid].name } get nickName(): string { if (gameMethod.isEmpty(GameDataCenter.sevBack?.userInfo?.a?.name)) { return "" } return GameDataCenter.sevBack.userInfo.a.name; } get userHead(): string { if (gameMethod.isEmpty(GameDataCenter.sevBack?.userInfo?.a?.head)) { return "" } return GameDataCenter.sevBack.userInfo.a.head; } getServerNameBySid(sid: string) { if (gameMethod.isEmpty(GameDataCenter.sevBack)) { return null } if (gameMethod.isEmpty(GameDataCenter.sevBack.qufuList[sid])) { return null } return GameDataCenter.sevBack.qufuList[sid].name } // 返回 今天是服务器开启第几天 getSevOpenDay() { return GameDataCenter.sevBack.other?.kfdays || 0 } sendPlayerReconnect(cb?: Function) { if (GameDataCenter.sevBack?.playerInfo != null) { GameController.network.stopRequest = false let param: PlayerReconnectPram = { uid: GameDataCenter.sevBack.playerInfo.uid, sid: GameDataCenter.sevBack.playerInfo.sid, token: GameDataCenter.sevBack.playerInfo.token } this.send(PlayerReconnect.url, param, (result: SevBack) => { if (result.type == 1) { if (cb) { cb() } } }) } } // 切换区服 sendChangeServer(sid: string) { let param: UserHuanFuPram = { sid: sid } this.send(UserHuanFu.url, param, (result: SevBack) => { if (result.type == 1) { if (cc.sys.platform == cc.sys.ANDROID || cc.sys.platform == cc.sys.IPHONE || cc.sys.platform == cc.sys.IPAD) { NativeManager.CallToNative("logoutSdk", [], "") GameDataCenter.plat.instance.restart() } else { GameDataCenter.plat.instance.restart() } } }) } // 加载头像 loadUserHead(node: cc.Node, user: { wxhead: string, head: string }) { if (node.getComponent(cc.Sprite) == null) { node.addComponent(cc.Sprite) } let wxUrl = user.wxhead; // 判断是否有远程图片 if (!gameMethod.isEmpty(wxUrl) && wxUrl.indexOf('http') >= 0) { // 判断是否选择着的是默认头像 默认头像就变成远程图片 if (gameMethod.isEmpty(user.head) || user.head == 'zj_1') { // 加载远程图片 cc.assetManager.loadRemote(wxUrl, { ext: ".png" }, (err, asset: cc.Texture2D) => { if (err) { console.log("err,", err) return } node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(asset); }) } else { // 加载选择的头像 Load.loadTexture(node, `setting/resHeadIcon/${user.head}`); } } else { // 没有远程图片 判断是否默认头像 if (gameMethod.isEmpty(user.head) || user.head == 'zj_1') { Load.loadTexture(node, "setting/resHeadIcon/zj_1"); } else { // 加载选择的头像 if (user.head.indexOf('http') >= 0) { // 加载远程图片 cc.assetManager.loadRemote(user.head, { ext: ".png" }, (err, asset: cc.Texture2D) => { if (err) { console.log("err,", err) return } node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(asset); }) } else { Load.loadTexture(node, `setting/resHeadIcon/${user.head}`); } } } } saveWxHeadAssets(texture: cc.Texture2D) { if (gameMethod.isEmpty(this.wxHeadAsset)) { this.wxHeadAsset = texture; } } GetMyHeadUrl() { return this.GetHeadUrl(GameDataCenter.sevBack.userInfo?.a?.sex, GameDataCenter.sevBack.userInfo?.a?.head); } GetHeadUrl(sex: UserSex, head: string, wxUrl?: string): string { // 判断是否有远程图片 if (!gameMethod.isEmpty(wxUrl) && wxUrl.indexOf('http') >= 0) { // 判断是否选择着的是默认头像 默认头像就变成远程图片 if (gameMethod.isEmpty(head) || head == '1') { // 加载远程图片 return wxUrl; } else { // 加载选择的头像 return `ui://FollowerIcon/zj_${head}`; } } else { //没有图片 使用默认图片 } } // 获取性别类型 public GetSexType() { // if (!gameMethod.isEmpty(GameDataCenter?.sevBack?.userInfo?.a?.sex)) { this.roleSexType = GameDataCenter?.sevBack?.userInfo?.a?.sex; // } return this.roleSexType; } }