homepage.ts 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. import { _decorator, Component, Director, director, Enum, Game, game, instantiate, Label, log, Node, Prefab, resources, SpriteFrame, sys, tween, UITransform, Vec2, Vec3, Animation, PageView, Layout } from 'cc';
  2. import { config } from '../config';
  3. import { gameManager } from '../gameManager';
  4. import { server_play_list_data_item, statistics_collect_rewardVideo_data_item } from '../data/server_play_list_data';
  5. import { tools } from '../tools';
  6. import { ClientEvent } from '../framework/clientEvent';
  7. import { http } from '../http/http';
  8. import { view_game_play_shuang_tu_zhao_bu_tong } from '../play_list/zhaocha_up_down/view_game_play_shuang_tu_zhao_bu_tong';
  9. import { view_game_play_han_zi_zhao_bu_tong } from '../play_list/zhaocha_font/view_game_play_han_zi_zhao_bu_tong';
  10. import { view_game_play_mei_nv_zhao_xi_jie } from '../play_list/zhaocha_component/view_game_play_mei_nv_zhao_xi_jie';
  11. import { AudioManager } from '../framework/audioManager';
  12. import { SdkUtil } from '../framework/sdkUtil';
  13. import { win } from '../dialog/win';
  14. import { addCoinAni } from '../addCoinAni';
  15. import { Util } from '../framework/util';
  16. import { PoolManager } from '../framework/poolManager';
  17. import { game_play_dou_di_zhu } from '../play_list/ddz/game_play_dou_di_zhu';
  18. import { view_game_play_shuang_tu_zhao_xiang_tong } from '../play_list/zhaocha_xiang_tong/view_game_play_shuang_tu_zhao_xiang_tong';
  19. import { view_game_play_ji_yi_li } from '../play_list/ji_yi_li/view_game_play_ji_yi_li';
  20. import { view_game_play_zhao_bu_tong } from '../play_list/zhao_bu_tong/view_game_play_zhao_bu_tong';
  21. import { StatisticsManager } from '../framework/statisticsManager';
  22. import { reward_box_page } from './reward_box_page';
  23. import { play_page_list_item } from './play_page_list_item';
  24. const { ccclass, property } = _decorator;
  25. export enum ETest {
  26. None = 0,
  27. ONe = 1,
  28. Two = 2
  29. }
  30. @ccclass('homepage')
  31. export class homepage extends Component {
  32. @property(Node) content:Node = null;
  33. @property(SpriteFrame) sf_list:SpriteFrame[]=[];
  34. @property(Node) btn_setting:Node = null;
  35. @property(Node) btn_coin:Node = null;
  36. @property(Node) btn_look_video:Node = null;
  37. @property(Node) lab_coin:Node;
  38. @property(Prefab) addCoinAni:Prefab = null;
  39. @property(Node) top_node:Node = null;
  40. @property(Node) action_node:Node = null;
  41. @property(Node) pageView:Node = null;
  42. @property(Node) pageView_content_page1:Node = null;
  43. @property(Node) pageView_content_page2:Node = null;
  44. @property(Node) lab_page_count:Node = null;
  45. @property(Prefab) item_prefab = null;
  46. @property(Node) reward_box:Node = null;
  47. protected coin_ani:Node;
  48. protected old_coin_number:number = 0;
  49. private sp_map:Map<number,SpriteFrame> = new Map();
  50. private playItemList:Node[]=[];
  51. protected onLoad(): void {
  52. SdkUtil.ttRegisterSidebar()
  53. }
  54. protected start(): void {
  55. this.sp_map.set(config.PLAY_TYPE.YI_QI_ZHAO_CHA,this.sf_list[0])
  56. this.sp_map.set(config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG,this.sf_list[1])
  57. this.sp_map.set(config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE,this.sf_list[2])
  58. this.sp_map.set(config.PLAY_TYPE.ZHAO_XIANG_TONG,this.sf_list[3])
  59. this.sp_map.set(config.PLAY_TYPE.ZHAO_BU_TONG,this.sf_list[4])
  60. this.sp_map.set(config.PLAY_TYPE.DOU_DI_ZHU,this.sf_list[5])
  61. this.sp_map.set(config.PLAY_TYPE.JI_YI_LI,this.sf_list[6])
  62. this.btn_setting.on(Node.EventType.TOUCH_START,()=>{
  63. gameManager.playBtnSound()
  64. gameManager.addTopView(config.PREFAB_PATH.setting,()=>{});
  65. },this)
  66. this.btn_look_video.on(Node.EventType.TOUCH_START,()=>{
  67. SdkUtil.showVideoAd(config.rewardVideoAdUnitId.Earn_coins_AdUnitId,(res)=>{
  68. if(res.isEnded){
  69. this.showLookVideoReward();
  70. }
  71. // 统计-激励视频广告
  72. let collect_data = StatisticsManager.get_collect_data(0, 0, 0, res, config.STATISTICS_ACTION_TYPE.ZHUAN_JIN_BI)
  73. StatisticsManager.request_collect_rewardVideoData(collect_data)
  74. })
  75. })
  76. if(!PoolManager.instance.isHavePool(config.POOL_KEY)){
  77. PoolManager.instance.preloadPoolByName(config.POOL_KEY,11*15,this.item_prefab)
  78. }
  79. ClientEvent.on(config.EVENT_MSG.ON_CHANGE_COIN_NUMBER,this.onChangeCoinNumber.bind(this),this);
  80. ClientEvent.on(config.EVENT_MSG.ON_INIT_GAME_LIST,this.initPlayList.bind(this),this);
  81. ClientEvent.on(config.EVENT_MSG.ON_BACK_HOME_VIEW,this.onBackHomeView.bind(this),this);
  82. ClientEvent.on(config.EVENT_MSG.ON_UPDATE_HOME_VIEW,this.onUpdateHomeView.bind(this),this);
  83. ClientEvent.on(config.EVENT_MSG.ON_SHOW_REWARD_VIEW,this.onShowRewardView.bind(this),this);
  84. ClientEvent.on(config.EVENT_MSG.ON_USER_LOGIN_SUCCESS,this.onUserLoginSuccess.bind(this),this);
  85. }
  86. onUserLoginSuccess() {
  87. if(SdkUtil.ttCheckSceneShowRewards()&&gameManager.get_user_is_sign()==false) {
  88. this.reward_box.active = true
  89. this.reward_box.getComponent(Animation).play()
  90. let self = this
  91. this.reward_box.on(Node.EventType.TOUCH_END, ()=> {
  92. gameManager.addTopView(config.PREFAB_PATH.reward_box_page, (node:Node)=> {
  93. let coin_number = gameManager.get_sign_reward_number()
  94. let sign_status = gameManager.userSignStatus.status
  95. let is_toEnterFromSidebar = SdkUtil.ttCheckToEnterFromSidebar()
  96. node.getComponent(reward_box_page).showView(coin_number, sign_status, is_toEnterFromSidebar, (coin_number:number, reward_box_page:reward_box_page)=> {
  97. gameManager.add_coin(coin_number)
  98. setTimeout(()=>{
  99. ClientEvent.dispatchEvent(config.EVENT_MSG.ON_CHANGE_COIN_NUMBER)
  100. },500)
  101. self.showCoinAni()
  102. reward_box_page.close()
  103. this.reward_box.getComponent(Animation).stop()
  104. this.reward_box.active = false
  105. })
  106. })
  107. })
  108. }
  109. }
  110. onShowRewardView(){
  111. this.showLookVideoReward()
  112. }
  113. onUpdateHomeView(){
  114. this.playPageListItemUpdateView()
  115. this.old_coin_number = gameManager.get_user_coin();
  116. this.lab_coin.getComponent(Label).string = Util.coinNumberToK(this.old_coin_number);
  117. gameManager.playMainMusic(true);
  118. }
  119. onBackHomeView(){
  120. this.playPageListItemUpdateView()
  121. this.old_coin_number = gameManager.get_user_coin();
  122. this.lab_coin.getComponent(Label).string = Util.coinNumberToK(this.old_coin_number);
  123. gameManager.playMainMusic(true);
  124. }
  125. onChangeCoinNumber(){
  126. let self = this;
  127. let num:number = this.old_coin_number;
  128. let obj = new Component
  129. gameManager.instance.addCoinNumber( obj,gameManager.get_user_coin() - num ,self.lab_coin.getComponent(Label),num,()=>{
  130. this.old_coin_number = gameManager.get_user_coin();
  131. this.lab_coin.getComponent(Label).string = Util.coinNumberToK(this.old_coin_number);
  132. })
  133. this.playPageListItemUpdateView()
  134. }
  135. showCoinAni(){
  136. if( this.coin_ani!=null){
  137. this.coin_ani.removeFromParent()
  138. this.coin_ani = null;
  139. }
  140. if(this.addCoinAni!=null){
  141. this.coin_ani = instantiate(this.addCoinAni)
  142. this.coin_ani.parent = this.action_node;
  143. this.coin_ani.position = new Vec3(200,400,0)
  144. this.coin_ani.getComponent(addCoinAni).play(()=>{
  145. let end_pos = this.top_node.getComponent(UITransform).convertToWorldSpaceAR(this.btn_coin.position)
  146. tween(this.coin_ani).to(0.2, {position: end_pos}).hide().start()
  147. })
  148. }
  149. }
  150. showLookVideoReward(){
  151. let self = this;
  152. gameManager.addTopView(config.PREFAB_PATH.win,(node:Node)=>{
  153. let reward = gameManager.get_reward_number();
  154. node.getComponent(win).showVideoAddCoinView(reward,null,(win_view:win)=>{
  155. gameManager.add_coin(reward)
  156. setTimeout(()=>{
  157. ClientEvent.dispatchEvent(config.EVENT_MSG.ON_CHANGE_COIN_NUMBER)
  158. },500)
  159. self.showCoinAni()
  160. win_view.close()
  161. },(win_view:win)=>{
  162. SdkUtil.showVideoAd(config.rewardVideoAdUnitId.Earn_coins_AdUnitId,(res)=>{
  163. if(res.isEnded){
  164. reward = gameManager.get_deouble_reward_number();
  165. tween(self.btn_setting).delay(0.5).call(()=>{
  166. gameManager.add_coin(reward)
  167. win_view.showDoubleCoin(reward,()=>{
  168. self.showCoinAni()
  169. win_view.close()
  170. ClientEvent.dispatchEvent(config.EVENT_MSG.ON_CHANGE_COIN_NUMBER)
  171. })
  172. }).start()
  173. }
  174. // 统计-激励视频广告
  175. let collect_data = StatisticsManager.get_collect_data(0, 0, 0, res, config.STATISTICS_ACTION_TYPE.CHAO_JI_JIA_BEI)
  176. StatisticsManager.request_collect_rewardVideoData(collect_data)
  177. })
  178. });
  179. });
  180. }
  181. protected onDestroy(): void {
  182. ClientEvent.off(config.EVENT_MSG.ON_CHANGE_COIN_NUMBER,this.onChangeCoinNumber.bind(this),this);
  183. ClientEvent.off(config.EVENT_MSG.ON_INIT_GAME_LIST,this.initPlayList.bind(this),this);
  184. ClientEvent.off(config.EVENT_MSG.ON_BACK_HOME_VIEW,this.onBackHomeView.bind(this),this);
  185. }
  186. initPlayList(){
  187. this.pageView_content_page1.removeAllChildren()
  188. this.pageView_content_page2.removeAllChildren()
  189. let list = gameManager.g_server_play_list_data.list;
  190. let every_page_count: number = 6
  191. let pageView_total_page_count:number = Math.ceil(list.length / every_page_count)
  192. let number_string = '1' + ' / ' + pageView_total_page_count + ''
  193. this.lab_page_count.getComponent(Label).string = number_string
  194. let self = this;
  195. this.pageView.on('page-turning', (event: PageView) => {
  196. let currentPageIndex = event.getCurrentPageIndex()
  197. let number_string = currentPageIndex+1 + ' / ' + pageView_total_page_count + ''
  198. self.lab_page_count.getComponent(Label).string = number_string
  199. })
  200. let call_back = (prefab)=>{
  201. let prefabInstance = instantiate(prefab)
  202. // 设置横向(左、中、右)间隙
  203. let col_num = this.pageView_content_page1.getComponent(Layout).constraintNum
  204. let paddingTop = 40
  205. let spacingY = 30
  206. let padding_x = (this.pageView_content_page1.getComponent(UITransform).width - col_num * prefabInstance.getComponent(UITransform).width) / (col_num+1)
  207. // console.log(padding_x)
  208. let content_page1_layout = this.pageView_content_page1.getComponent(Layout)
  209. content_page1_layout.paddingLeft = padding_x
  210. content_page1_layout.spacingX = padding_x
  211. content_page1_layout.paddingTop = paddingTop
  212. content_page1_layout.spacingY = spacingY
  213. let content_page2_layout = this.pageView_content_page2.getComponent(Layout)
  214. content_page2_layout.paddingLeft = padding_x
  215. content_page2_layout.spacingX = padding_x
  216. content_page2_layout.paddingTop = paddingTop
  217. content_page2_layout.spacingY = spacingY
  218. for (var index = 0; index < list.length; index++) {
  219. let newNode: Node = instantiate(prefab)
  220. if (index < every_page_count) {
  221. newNode.parent = self.pageView_content_page1
  222. } else {
  223. newNode.parent = self.pageView_content_page2
  224. }
  225. self.playItemList.push(newNode)
  226. newNode.getComponent(play_page_list_item).initView(list[index],this.sp_map.get(list[index].id),this.onItemClick.bind(this));
  227. }
  228. }
  229. resources.load(config.PREFAB_PATH.play_page_list_item, Prefab, (err, prefab) => {
  230. if(err){
  231. console.log("err::",err);
  232. return;
  233. }
  234. call_back(prefab);
  235. });
  236. }
  237. playPageListItemUpdateView() {
  238. let self = this
  239. for (let index = 0; index < self.playItemList.length; index++) {
  240. let item = self.playItemList[index]
  241. item.getComponent(play_page_list_item).updateView()
  242. }
  243. }
  244. onItemClick(data:server_play_list_data_item){
  245. gameManager.playBtnSound()
  246. switch(data.id){
  247. case config.PLAY_TYPE.YI_QI_ZHAO_CHA:
  248. {
  249. let categoryid = config.PLAY_TYPE.YI_QI_ZHAO_CHA;
  250. let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
  251. // gameManager.showLoading();
  252. http.get(config.static_url.levels_info(categoryid,levels_item.level),(err,data)=>{
  253. if(!err){
  254. let _data = JSON.parse(data)
  255. if(_data.code===config.MSG_CODE.SUCCESS){
  256. gameManager.addUiView(config.PREFAB_PATH.game_play_shuang_tu_zhao_bu_tong,(node:Node)=>{
  257. node.getComponent(view_game_play_shuang_tu_zhao_bu_tong).initView(_data.content);
  258. })
  259. }
  260. }
  261. })
  262. break;
  263. }
  264. case config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG:
  265. {
  266. let categoryid = config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG;
  267. let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
  268. // gameManager.showLoading();
  269. http.get(config.static_url.levels_info(categoryid,levels_item.level),(err,data)=>{
  270. if(!err){
  271. let _data = JSON.parse(data)
  272. if(_data.code===config.MSG_CODE.SUCCESS){
  273. if(gameManager.uiViewList.get(config.PREFAB_PATH.game_play_han_zi_zhao_bu_tong)){
  274. gameManager.uiViewList.get(config.PREFAB_PATH.game_play_han_zi_zhao_bu_tong).getComponent(view_game_play_han_zi_zhao_bu_tong).initView(_data.content);
  275. }else{
  276. gameManager.addUiView(config.PREFAB_PATH.game_play_han_zi_zhao_bu_tong,(node)=>{
  277. node.getComponent(view_game_play_han_zi_zhao_bu_tong).initView(_data.content);
  278. })
  279. }
  280. }
  281. }
  282. })
  283. break;
  284. }
  285. case config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE:
  286. {
  287. let categoryid = config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE;
  288. let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
  289. // gameManager.showLoading();
  290. http.get(config.static_url.levels_info(categoryid,levels_item.level),(err,data)=>{
  291. if(!err){
  292. let _data = JSON.parse(data)
  293. if(_data.code===config.MSG_CODE.SUCCESS){
  294. gameManager.addUiView(config.PREFAB_PATH.game_play_mei_nv_zhao_xi_jie,(node)=>{
  295. node.getComponent(view_game_play_mei_nv_zhao_xi_jie).initView(_data.content);
  296. })
  297. }
  298. }
  299. })
  300. break;
  301. }
  302. case config.PLAY_TYPE.ZHAO_XIANG_TONG:
  303. {
  304. let categoryid = config.PLAY_TYPE.ZHAO_XIANG_TONG;
  305. let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
  306. // gameManager.showLoading();
  307. http.get(config.static_url.levels_info(categoryid,levels_item.level),(err,data)=>{
  308. if(!err){
  309. let _data = JSON.parse(data)
  310. if(_data.code===config.MSG_CODE.SUCCESS){
  311. gameManager.addUiView(config.PREFAB_PATH.game_play_shuang_tu_zhao_xiang_tong,(node:Node)=>{
  312. node.getComponent(view_game_play_shuang_tu_zhao_xiang_tong).initView(_data.content);
  313. })
  314. }
  315. }
  316. })
  317. break;
  318. }
  319. case config.PLAY_TYPE.ZHAO_BU_TONG:
  320. {
  321. let categoryid = config.PLAY_TYPE.ZHAO_BU_TONG;
  322. let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
  323. // gameManager.showLoading();
  324. http.get(config.static_url.levels_info(categoryid,levels_item.level),(err,data)=>{
  325. if(!err){
  326. let _data = JSON.parse(data)
  327. if(_data.code===config.MSG_CODE.SUCCESS){
  328. gameManager.addUiView(config.PREFAB_PATH.game_play_zhao_bu_tong,(node:Node)=>{
  329. node.getComponent(view_game_play_zhao_bu_tong).initView(_data.content);
  330. })
  331. }
  332. }
  333. })
  334. break;
  335. }
  336. case config.PLAY_TYPE.DOU_DI_ZHU:
  337. {
  338. let categoryid = config.PLAY_TYPE.DOU_DI_ZHU;
  339. let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
  340. // gameManager.showLoading();
  341. console.log("斗地主")
  342. http.get(config.static_url.levels_info(categoryid,levels_item.level),(err,data)=>{
  343. if(!err){
  344. let _data = JSON.parse(data)
  345. if(_data.code===config.MSG_CODE.SUCCESS){
  346. gameManager.addUiView(config.PREFAB_PATH.game_play_dou_di_zhu,(node:Node)=>{
  347. node.getComponent(game_play_dou_di_zhu).initView(_data.content);
  348. })
  349. }
  350. }
  351. })
  352. break;
  353. }
  354. case config.PLAY_TYPE.JI_YI_LI:
  355. {
  356. let categoryid = config.PLAY_TYPE.JI_YI_LI;
  357. let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
  358. const element = gameManager.get_play_list_item_by_categoryid(config.PLAY_TYPE.JI_YI_LI);
  359. if(element.barrier_number<levels_item.level){
  360. levels_item.level = 1;
  361. gameManager.set_unlock_levels_data(levels_item)
  362. gameManager.sync_data(()=>{},config.sync_data_type.LEVELS)
  363. }
  364. if(levels_item.level<=0){
  365. levels_item.level = 1;
  366. gameManager.set_unlock_levels_data(levels_item)
  367. }
  368. http.get(config.static_url.levels_info(categoryid,levels_item.level),(err,data)=>{
  369. if(!err){
  370. let _data = JSON.parse(data)
  371. if(_data.code===config.MSG_CODE.SUCCESS){
  372. gameManager.addUiView(config.PREFAB_PATH.game_play_ji_yi_li,(node:Node)=>{
  373. node.getComponent(view_game_play_ji_yi_li).initView(_data.content);
  374. })
  375. }
  376. }
  377. })
  378. break;
  379. }
  380. }
  381. }
  382. }