GameManager.ts 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. import { _decorator, Component, Node, SpriteFrame, sys } from 'cc';
  2. import { config } from './config';
  3. import { settingData } from './data';
  4. import { http } from './http';
  5. import { imageCacheManager } from './manager/imageCacheManager';
  6. import { userDataManager } from './manager/userDataManager';
  7. import { SdkUtil } from './sdkUtil';
  8. import { uiManager } from './manager/uiManager';
  9. import { restart_view } from './ui/restart_view';
  10. import { tools } from './tools';
  11. import { gameSocket } from './socket/gameSocket';
  12. const { ccclass, property } = _decorator;
  13. @ccclass('GameManager')
  14. export class GameManager extends Component {
  15. public static openId:string = 'asd'
  16. public static settingData:settingData = null
  17. // 开启webscoket
  18. public static openWebScoket() {
  19. gameSocket.Instance.connect(config.websocket_domain)
  20. }
  21. // 获取用户默认首页车sf
  22. public static getUserDefaultHomeCarSf():SpriteFrame {
  23. let sf = imageCacheManager.getHomeCarImageById(userDataManager.user_car_list.default_car_id)
  24. return sf
  25. }
  26. // 获取用户默认排行车sf
  27. public static getUserDefaultRankCarSf():SpriteFrame {
  28. let sf = imageCacheManager.getRankCarImageById(userDataManager.user_car_list.default_car_id)
  29. return sf
  30. }
  31. // 检查玩游戏
  32. public static checkPlayGame(parent_node:Node,play_cb) {
  33. let call_back = (()=>{
  34. play_cb()
  35. })
  36. if(userDataManager.getUserIsFreeAds()) {
  37. call_back()
  38. return
  39. }
  40. if(userDataManager.isTodayCanFreePlayGame()) {
  41. userDataManager.addTodayPlayGameNumber()
  42. call_back()
  43. return
  44. }
  45. uiManager.Instance().showUi(config.UI.ui_restart_view, parent_node, (node:Node)=>{
  46. node.getComponent(restart_view).initView((v:restart_view)=>{
  47. GameManager.showVideoAd(config.ADS_TYPE.GAME_RESTART, ()=>{
  48. v.closeSelf()
  49. call_back()
  50. })
  51. },(v:restart_view)=>{
  52. if(userDataManager.isTodayCanShare()==false) {
  53. v.closeSelf()
  54. call_back()
  55. return
  56. }
  57. SdkUtil.shareGame(tools.sys_config.share_des,(r)=>{
  58. if(r==true) {
  59. userDataManager.addTodayShareNumber()
  60. v.closeSelf()
  61. call_back()
  62. }
  63. })
  64. })
  65. })
  66. }
  67. // 获取游戏结束提示索引
  68. public static getGameEndPrompt(score:number):number {
  69. let cur_index = -1
  70. let list = tools.sys_config.game_end_prompt
  71. for (let index = 0; index < list.length; index++) {
  72. const element = list[index];
  73. if(typeof element === "string") {
  74. let arr = element.split('_')
  75. if(arr.length == 2) {
  76. let start_num = Number(arr[0])
  77. let end_num = Number(arr[1])
  78. // console.log('start_num=',start_num,'end_num=',end_num)
  79. if(list.length-1==index) { //最后一个只判断开始值
  80. if(score>=start_num) {
  81. cur_index = index
  82. break
  83. }
  84. } else {
  85. if(score>=start_num&&score<=end_num) {
  86. cur_index = index
  87. break
  88. }
  89. }
  90. }
  91. }
  92. }
  93. // console.log('cur_index=',cur_index)
  94. return cur_index
  95. }
  96. // 设置
  97. public static getSettingData():settingData {
  98. if(GameManager.settingData!=null) {
  99. return GameManager.settingData
  100. }
  101. let str = sys.localStorage.getItem(config.SETTING_DATA)
  102. if(str==undefined||str==""||str==null){
  103. GameManager.settingData = new settingData
  104. } else {
  105. let data:settingData = JSON.parse(str)
  106. GameManager.settingData = data
  107. }
  108. return GameManager.settingData;
  109. }
  110. public static saveSettingData(data:settingData) {
  111. sys.localStorage.setItem(config.SETTING_DATA, JSON.stringify(data));
  112. }
  113. // 震动
  114. public static vibrateShort() {
  115. if(GameManager.getSettingData().isOpenZhendong) {
  116. SdkUtil.vibrateShort()
  117. }
  118. }
  119. //请求广播
  120. public static requestGuangbo(cb=null) {
  121. http.get(config.STATIC_API.msg, (err,d)=>{
  122. if(!err){
  123. let nd = JSON.parse(d)
  124. if(nd.code === config.status.SUCCESS){
  125. // console.log("system_msg", nd.content)
  126. if(cb!=null){
  127. cb(nd.content)
  128. }
  129. }
  130. }
  131. })
  132. }
  133. //请求用户车列表
  134. public static requestUserCarList(cb=null) {
  135. http.post(config.API.user_car_list,null,(err,d)=>{
  136. if(!err){
  137. let nd = JSON.parse(d)
  138. if(nd.code === config.status.SUCCESS){
  139. // console.log("user_car_list", nd.content)
  140. if(cb!=null){
  141. cb(nd.content)
  142. }
  143. }
  144. }
  145. },'GET')
  146. }
  147. // 请求用户注册/设置地区 stype 1:注册 2:重新设置
  148. public static requestUserSetRegion(region_id:number,stype:number,cb) {
  149. let opt = {'region_id':region_id, 'stype':stype}
  150. http.post(config.API.user_set_region, opt, (err,d)=>{
  151. let nd = JSON.parse(d)
  152. if(nd.code === config.status.SUCCESS){
  153. if(cb!=null){
  154. cb(nd.content)
  155. }
  156. }
  157. })
  158. }
  159. // 请求我的排行 stype 0:全国 1:省 2:市
  160. public static requestMineRank(stype:number, cb) {
  161. let opt = {'stype': stype}
  162. http.post(config.API.user_ranking, opt, (err,d)=>{
  163. if(!err){
  164. let data = JSON.parse(d)
  165. if(data.code===config.status.SUCCESS){
  166. if(cb!=null) {
  167. cb(data.content)
  168. }
  169. }
  170. } else{
  171. console.log("user rank Data err",err)
  172. }
  173. })
  174. }
  175. // 请求排行列表
  176. public static requestRankList(region_id:number, cb) {
  177. http.get(config.STATIC_API.rankings(region_id),(err,d)=>{
  178. if(!err){
  179. let data = JSON.parse(d)
  180. if(data.code===config.status.SUCCESS){
  181. // console.log('data=',data.content)
  182. if(cb!=null) {
  183. cb(data.content)
  184. }
  185. }
  186. } else{
  187. console.log("rankList err",err)
  188. }
  189. })
  190. }
  191. // 请求tt侧边栏用户奖励
  192. public static requestTTSidebarUserReward(status=config.USER_TT_SIDEBAR_REWARD.GET, success_cb, fail_cb=null) {
  193. if(sys.platform != sys.Platform.BYTEDANCE_MINI_GAME) {
  194. success_cb(null)
  195. return
  196. }
  197. if(status != config.USER_TT_SIDEBAR_REWARD.GET) {
  198. uiManager.Instance().showLoading()
  199. }
  200. http.post(config.API.unlock_number_status,{'stype':status}, (err,data)=>{
  201. if(status!= config.USER_TT_SIDEBAR_REWARD.GET) {
  202. uiManager.Instance().hideLoading()
  203. }
  204. if(!err) {
  205. let _data = JSON.parse(data)
  206. if(_data.code==config.status.SUCCESS) {
  207. if(success_cb) {
  208. success_cb(_data.content)
  209. }
  210. } else {
  211. if(fail_cb) {
  212. fail_cb()
  213. }
  214. }
  215. } else {
  216. if(fail_cb) {
  217. fail_cb()
  218. }
  219. }
  220. })
  221. }
  222. // 请求同步数据
  223. public static requestSyncNumber(opt,success_cb=null,fail_cb=null) {
  224. http.post(config.API.sync_free_number, opt, (err,data)=>{
  225. if(!err) {
  226. let _data = JSON.parse(data)
  227. if(_data.code==config.status.SUCCESS) {
  228. if(success_cb) {
  229. success_cb(_data.content)
  230. }
  231. } else {
  232. if(fail_cb) {
  233. fail_cb(_data.code)
  234. }
  235. }
  236. } else {
  237. if(fail_cb) {
  238. fail_cb(err)
  239. }
  240. }
  241. })
  242. }
  243. // 显示视频广告
  244. public static showVideoAd(ads_type=config.ADS_TYPE.UNKNOWN, success_cb, err_cb=null) {
  245. let ad_id = SdkUtil.getAdId(ads_type)
  246. SdkUtil.showVideoAd(ad_id,(res)=>{
  247. if(res.isEnded) {
  248. success_cb(res)
  249. } else {
  250. err_cb(res)
  251. }
  252. })
  253. }
  254. }