UserModel.ts 7.4 KB

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