GameManager.ts 7.8 KB

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