UserModel.ts 7.5 KB

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