UserModel.ts 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. import GameDataCenter from "../../GameDataCenter";
  2. import Load from "../../../utils/Load";
  3. import { gameMethod } from "../../../common/gameMethod";
  4. import { UserSex } from "../../const/TypeConst";
  5. import { UserModelData } from "./UserModelData";
  6. import EventMng from "../../../manager/EventMng";
  7. import { NetworkEvent, UserEvent } from "../../const/EventConst";
  8. import UIHelp from "../../../logic/ui/UIHelp";
  9. import { ResEpsInfo } from "../../../shared/eps/PtlEpsInfo";
  10. import { MsgEpsChange_s } from "../../../shared/eps/server/MsgEpsChange_s";
  11. import { ResUserLogin } from "../../../shared/user/PtlUserLogin";
  12. export default class UserModel extends UserModelData {
  13. taskNodes: { [key: string]: cc.Node } = {} //临时 主线任务指引节点
  14. private roleSexType: UserSex = UserSex.man; // 角色的性别类型
  15. selectHeadId: string = "";// 当前选中的头像
  16. selectChenghaoId: string = "";// 当前选中的称号
  17. newGetHead: string[] = [];// 新获得的头像
  18. wxHeadAsset: cc.Texture2D;//缓存玩家的微信头像
  19. initPiFuList;
  20. KEY_OPENED_ARENA = "KEY_OPENED_ARENA"
  21. constructor() {
  22. super('user');
  23. }
  24. onRegister(): void {
  25. GameDataCenter.gameServer.ListenMsg("eps/server/EpsChange_s", this.onEpsChange, this);
  26. }
  27. onEpsChange(msg: MsgEpsChange_s) {
  28. for (let key in msg) {
  29. if (Object.prototype.hasOwnProperty.call(msg, key)) {
  30. this.epsInfo[key] = msg[key];
  31. }
  32. }
  33. EventMng.emit(UserEvent.UP_USER_EPS);
  34. }
  35. /*************** 协议推送消息结束 ***********/
  36. ////////// 业务阶段所需参数 //////////start
  37. setUserInfo(userInfo: ResUserLogin) {
  38. this.userInfo = userInfo;
  39. }
  40. setEpsInfo(epsInfo: ResEpsInfo) {
  41. this.epsInfo = epsInfo;
  42. }
  43. get uuid(): string {
  44. return this.userInfo?.uuid || "";
  45. }
  46. get token(): string {
  47. if (gameMethod.isEmpty(GameDataCenter.sevBack)) { return "" }
  48. if (gameMethod.isEmpty(GameDataCenter.sevBack.userInfo)) { return "" }
  49. let userData = GameDataCenter.sevBack.userInfo.a
  50. if (userData != null && userData.token != null) {
  51. return userData.token
  52. }
  53. return ""
  54. }
  55. get serverName(): string {
  56. if (gameMethod.isEmpty(GameDataCenter.sevBack)) { return null }
  57. if (gameMethod.isEmpty(GameDataCenter.sevBack.userInfo)) { return null }
  58. if (gameMethod.isEmpty(GameDataCenter.sevBack.qufuList[GameDataCenter.sevBack.userInfo.a.sid])) {
  59. return null
  60. }
  61. return GameDataCenter.sevBack.qufuList[GameDataCenter.sevBack.userInfo.a.sid].name
  62. }
  63. get nickName(): string {
  64. if (gameMethod.isEmpty(GameDataCenter.sevBack?.userInfo?.a?.name)) { return "" }
  65. return GameDataCenter.sevBack.userInfo.a.name;
  66. }
  67. get userHead(): string {
  68. if (gameMethod.isEmpty(GameDataCenter.sevBack?.userInfo?.a?.head)) { return "" }
  69. return GameDataCenter.sevBack.userInfo.a.head;
  70. }
  71. getServerNameBySid(sid: string) {
  72. if (gameMethod.isEmpty(GameDataCenter.sevBack)) {
  73. return null
  74. }
  75. if (gameMethod.isEmpty(GameDataCenter.sevBack.qufuList[sid])) {
  76. return null
  77. }
  78. return GameDataCenter.sevBack.qufuList[sid].name
  79. }
  80. // 返回 今天是服务器开启第几天
  81. getSevOpenDay() {
  82. return GameDataCenter.sevBack.other?.kfdays || 0
  83. }
  84. sendPlayerReconnect(cb?: Function) {
  85. // if (GameDataCenter.sevBack?.playerInfo != null) {
  86. // GameController.network.stopRequest = false
  87. // let param: PlayerReconnectPram = {
  88. // uid: GameDataCenter.sevBack.playerInfo.uid,
  89. // sid: GameDataCenter.sevBack.playerInfo.sid,
  90. // token: GameDataCenter.sevBack.playerInfo.token
  91. // }
  92. // this.send(PlayerReconnect.url, param, (result: SevBack) => {
  93. // if (result.type == 1) {
  94. // if (cb) {
  95. // cb()
  96. // }
  97. // }
  98. // })
  99. // }
  100. }
  101. // 切换区服
  102. sendChangeServer(sid: string) {
  103. // let param: UserHuanFuPram = { sid: sid }
  104. // this.send(UserHuanFu.url, param, (result: SevBack) => {
  105. // if (result.type == 1) {
  106. // if (cc.sys.platform == cc.sys.ANDROID || cc.sys.platform == cc.sys.IPHONE || cc.sys.platform == cc.sys.IPAD) {
  107. // NativeManager.CallToNative("logoutSdk", [], "")
  108. // GameDataCenter.plat.instance.restart()
  109. // } else {
  110. // GameDataCenter.plat.instance.restart()
  111. // }
  112. // }
  113. // })
  114. }
  115. // 加载头像
  116. loadUserHead(node: cc.Node, user: { wxhead: string, head: string }) {
  117. if (node.getComponent(cc.Sprite) == null) {
  118. node.addComponent(cc.Sprite)
  119. }
  120. let wxUrl = user.wxhead;
  121. // 判断是否有远程图片
  122. if (!gameMethod.isEmpty(wxUrl) && wxUrl.indexOf('http') >= 0) {
  123. // 判断是否选择着的是默认头像 默认头像就变成远程图片
  124. if (gameMethod.isEmpty(user.head) || user.head == 'zj_1') {
  125. // 加载远程图片
  126. cc.assetManager.loadRemote(wxUrl, { ext: ".png" }, (err, asset: cc.Texture2D) => {
  127. if (err) {
  128. console.log("err,", err)
  129. return
  130. }
  131. node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(asset);
  132. })
  133. } else {
  134. // 加载选择的头像
  135. Load.loadTexture(node, `setting/resHeadIcon/${user.head}`);
  136. }
  137. } else {
  138. // 没有远程图片 判断是否默认头像
  139. if (gameMethod.isEmpty(user.head) || user.head == 'zj_1') {
  140. Load.loadTexture(node, "setting/resHeadIcon/zj_1");
  141. } else {
  142. // 加载选择的头像
  143. if (user.head.indexOf('http') >= 0) {
  144. // 加载远程图片
  145. cc.assetManager.loadRemote(user.head, { ext: ".png" }, (err, asset: cc.Texture2D) => {
  146. if (err) {
  147. console.log("err,", err)
  148. return
  149. }
  150. node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(asset);
  151. })
  152. } else {
  153. Load.loadTexture(node, `setting/resHeadIcon/${user.head}`);
  154. }
  155. }
  156. }
  157. }
  158. saveWxHeadAssets(texture: cc.Texture2D) {
  159. if (gameMethod.isEmpty(this.wxHeadAsset)) {
  160. this.wxHeadAsset = texture;
  161. }
  162. }
  163. GetMyHeadUrl() {
  164. return this.GetHeadUrl(GameDataCenter.sevBack.userInfo?.a?.sex, GameDataCenter.sevBack.userInfo?.a?.head);
  165. }
  166. GetHeadUrl(sex: UserSex, head: string, wxUrl?: string): string {
  167. // 判断是否有远程图片
  168. if (!gameMethod.isEmpty(wxUrl) && wxUrl.indexOf('http') >= 0) {
  169. // 判断是否选择着的是默认头像 默认头像就变成远程图片
  170. if (gameMethod.isEmpty(head) || head == '1') {
  171. // 加载远程图片
  172. return wxUrl;
  173. } else {
  174. // 加载选择的头像
  175. return `ui://FollowerIcon/zj_${head}`;
  176. }
  177. } else {
  178. //没有图片 使用默认图片
  179. }
  180. }
  181. // 获取性别类型
  182. public GetSexType() {
  183. // if (!gameMethod.isEmpty(GameDataCenter?.sevBack?.userInfo?.a?.sex)) {
  184. this.roleSexType = GameDataCenter?.sevBack?.userInfo?.a?.sex;
  185. // }
  186. return this.roleSexType;
  187. }
  188. async sendChangeName(name: string) {
  189. let ret = await GameDataCenter.gameServer.ReqApi('user/UserSetName', { name: name });
  190. if (ret?.res) {
  191. console.log(ret);
  192. this.userInfo.name = ret.res.name;
  193. UIHelp.ShowTips("修改名称成功");
  194. EventMng.emit(UserEvent.UP_USER);
  195. }
  196. }
  197. async sendEpsInfo() {
  198. let ret = await GameDataCenter.gameServer.ReqApi("eps/EpsInfo", {});
  199. if (ret?.res) {
  200. this.setEpsInfo(ret.res);
  201. EventMng.emit(UserEvent.UP_USER_EPS);
  202. }
  203. }
  204. }