CacheMgr.ts 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. import JiuWuSDK from "../../SDK/JiuWuSDK";
  2. import Global from "../Global";
  3. import Tools from "../Tools";
  4. class CachesMgr {
  5. constructor() {
  6. let string = Object.keys(this)
  7. for (let i = 0; i < string.length; i++) {
  8. if (string[i][0] != "_") {
  9. continue
  10. }
  11. this.getData(string[i])
  12. }
  13. }
  14. private _userId: number = 0;
  15. private _checkpoint: number = 0; //关卡
  16. private _gold: number = 0; //金币
  17. private _diamond: number = 0; //钻石
  18. private _stamina: number = 20;
  19. private _user_code: string = "";
  20. private _openId: string = "";
  21. private _lastTimeLogin: number = 0;
  22. private _hit: any[] = [] //提示字符串
  23. private _userInfo: any = null;
  24. private _newUser: boolean = false;
  25. private _nowCheckPoint: number = -1;
  26. private _isNeedHint: boolean = true;
  27. private _isAuth: boolean = false; // 玩家是否授权
  28. private _setting: CustomData = {
  29. signTime: 0,
  30. hammerNum: 0,
  31. spriteNum: 0,
  32. lastSignNum: 0,
  33. signNum: -1,
  34. hintNum: 5,
  35. setting: {
  36. music: 1,
  37. audio: 1,
  38. vibrate: 1,
  39. }
  40. }
  41. private _earlyExportTripPart: string [] = []
  42. private _earlyExport: string [] = []
  43. private _exportTime: number = 0
  44. get earlyExportTripPart(): string[] {
  45. return this._earlyExportTripPart;
  46. }
  47. set earlyExportTripPart(value: string[]) {
  48. this.saveData("_earlyExportTripPart", value)
  49. this._earlyExportTripPart = value;
  50. }
  51. get earlyExport(): string[] {
  52. return this._earlyExport;
  53. }
  54. set earlyExport(value: string[]) {
  55. this.saveData("_earlyExport", value)
  56. this._earlyExport = value;
  57. }
  58. get exportTime(): number {
  59. return this._exportTime;
  60. }
  61. set exportTime(value: number) {
  62. this.saveData("_exportTime", value)
  63. this._exportTime = value;
  64. }
  65. get isNeedHint(): boolean {
  66. return this._isNeedHint;
  67. }
  68. set isNeedHint(value: boolean) {
  69. this._isNeedHint = value;
  70. this.saveData("_isNeedHint", value, false);
  71. }
  72. get isAuth(): boolean {
  73. return this._isAuth;
  74. }
  75. set isAuth(value: boolean) {
  76. this.saveData("_isAuth", value, false);
  77. this._isAuth = value;
  78. }
  79. get userId(): number {
  80. return this._userId;
  81. }
  82. set userId(value: number) {
  83. this.saveData("_userId", value, false);
  84. this._userId = value;
  85. }
  86. get setting(): CustomData {
  87. return this._setting;
  88. }
  89. set setting(value: CustomData) {
  90. this.saveData("_setting", value)
  91. this._setting = value;
  92. }
  93. get userInfo(): any {
  94. return this._userInfo;
  95. }
  96. set userInfo(value: any) {
  97. this.saveData("_userInfo", value, false)
  98. this._userInfo = value;
  99. }
  100. get newUser(): boolean {
  101. return this._newUser;
  102. }
  103. set newUser(value: boolean) {
  104. this.saveData("_newUser", value, false)
  105. this._newUser = value;
  106. }
  107. get hit(): any[] {
  108. return this._hit;
  109. }
  110. set hit(value: any[]) {
  111. this.saveData("_hit", value, false)
  112. this._hit = value;
  113. }
  114. get lastTimeLogin(): number {
  115. return this._lastTimeLogin;
  116. }
  117. set lastTimeLogin(value: number) {
  118. this.saveData("_lastTimeLogin", value, false)
  119. this._lastTimeLogin = value;
  120. }
  121. get stamina(): number {
  122. return this._stamina;
  123. }
  124. set stamina(value: number) {
  125. if (value > Global.config.gameInfo.maxStamina) {
  126. this._stamina = Global.config.gameInfo.maxStamina;
  127. } else {
  128. this._stamina = value;
  129. }
  130. this.saveData("_stamina", this._stamina);
  131. }
  132. get checkpoint(): number {
  133. return this._checkpoint;
  134. }
  135. set checkpoint(value: number) {
  136. this.saveData("_checkpoint", value);
  137. this._checkpoint = value;
  138. }
  139. get gold(): number {
  140. return this._gold;
  141. }
  142. set gold(value: number) {
  143. this.saveData("_gold", value)
  144. this._gold = value;
  145. }
  146. get diamond(): number {
  147. return this._diamond;
  148. }
  149. set diamond(value: number) {
  150. this.saveData("_diamond", value)
  151. this._diamond = value;
  152. }
  153. get user_code(): string {
  154. return this._user_code;
  155. }
  156. set user_code(value: string) {
  157. this.saveData("_user_codes", value, false)
  158. this._user_code = value;
  159. }
  160. get openId(): string {
  161. return this._openId;
  162. }
  163. set openId(value: string) {
  164. this.saveData("_openId", value, false)
  165. this._openId = value;
  166. }
  167. //都用json 存储吧 ,不然太麻烦了
  168. private saveData(key: string, value: any, isSend: boolean = true) {
  169. if (value instanceof Map) {
  170. localStorage.setItem(key, this._mapToJson(value))
  171. } else {
  172. localStorage.setItem(key, JSON.stringify(value))
  173. }
  174. }
  175. private getData(key: string): boolean {
  176. let result = true
  177. let dataText = localStorage.getItem(key)
  178. if (dataText == null || dataText == "" || dataText == undefined) {
  179. result = false
  180. this.saveData(key, this[key], false) //没有的话,先给他存进去
  181. return
  182. }
  183. if (this[key] instanceof Map) {
  184. this[key] = this._jsonToMap(dataText)
  185. } else {
  186. this[key] = JSON.parse(dataText)
  187. }
  188. return result
  189. }
  190. private _strMapToObj(strMap) {
  191. let obj = Object.create(null);
  192. strMap.forEach((v, k) => {
  193. obj[k] = v;
  194. })
  195. return obj;
  196. }
  197. /**
  198. *map转换为json
  199. */
  200. private _mapToJson(map) {
  201. return JSON.stringify(this._strMapToObj(map));
  202. }
  203. private _objToStrMap(obj) {
  204. let strMap = new Map();
  205. for (let k of Object.keys(obj)) {
  206. strMap.set(k, obj[k]);
  207. }
  208. return strMap;
  209. }
  210. /**
  211. *json转换为map
  212. */
  213. private _jsonToMap(jsonStr) {
  214. return this._objToStrMap(JSON.parse(jsonStr));
  215. }
  216. /**
  217. * @private 同步信息到服务端
  218. */
  219. public updateData() {
  220. let data = {
  221. checkpoint: this._checkpoint,
  222. diamond: this._diamond,
  223. gold: this._gold,
  224. setting: JSON.stringify(this._setting),
  225. stamina: this.stamina,
  226. userId: this.userId
  227. }
  228. }
  229. }
  230. export default new CachesMgr()
  231. interface Setting {
  232. music: number, // 音乐音量大小 0 -1
  233. audio: number, // 音效音量大小
  234. vibrate: number // 是否震动
  235. }
  236. interface CustomData {
  237. signTime: number //上次签到时间
  238. hammerNum: number //剩余锤子个数
  239. spriteNum: number //剩余恶魔次数
  240. lastSignNum: number //上次签到时间
  241. signNum: number //当前签到次数
  242. hintNum: number //免费提示数据
  243. setting: Setting
  244. }