UserModel.ts 9.3 KB

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