UITurntablePage.ts 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. import { utils } from "../../common-plugin/Scripts/Utils";
  2. import { cocosz } from "../Framework/CocosZ";
  3. import Constant, { PageName, PanelName } from "../Framework/Constant";
  4. import Msg from "../Framework/Msg";
  5. import TweenEffect from "../Framework/TweenEffect";
  6. import UIPage from "../Framework/UIPage";
  7. import GameDate, { RewardType } from "../Game/gameDate";
  8. import Weapon from "../Game/weapon";
  9. import AESUtil from "../AESUtil"
  10. import ATSDK from "../AnyThinkAds/ATJSSDK";
  11. import ATRewardedVideoSDK from "../AnyThinkAds/ATRewardedVideoJSSDK";
  12. import AAJS2 from "../ATAndroidJS2";
  13. import GlobalManager from '../GlobalManager';
  14. // @ts-ignore
  15. const i18n = require('LanguageData');
  16. const { ccclass, property } = cc._decorator;
  17. @ccclass
  18. export default class UITurntablePanel extends UIPage {
  19. constructor() {
  20. super(PanelName.UITurntablePanel);
  21. this.isValid() && this.onLoad();
  22. }
  23. private _panel: cc.Node = null;
  24. private _rewardList: cc.Node = null;
  25. private _totalLabel: cc.Label = null;
  26. private _btnCJ: cc.Node = null;
  27. private _btnAD: cc.Node = null;
  28. protected onLoad(): void {
  29. this._panel = this._page.getChildByName("panel");
  30. this._rewardList = this._panel.getChildByName("rewardList");
  31. this._totalLabel = this._panel.getChildByName("totalLabel").getComponent(cc.Label);
  32. const btnNames: string[] = ["BtnBack", "BtnCJ", "BtnAD"];
  33. for (let i = 0; i < btnNames.length; i++) {
  34. const btn: cc.Node = this._panel.getChildByName(btnNames[i]);
  35. if (btn) {
  36. btn.on(cc.Node.EventType.TOUCH_END, this._onBtnClickHandler, this);
  37. if (btnNames[i] == "BtnCJ") {
  38. this._btnCJ = btn;
  39. } else if (btnNames[i] == "BtnAD") {
  40. this._btnAD = btn;
  41. }
  42. }
  43. }
  44. this.initAdForPage();
  45. }
  46. initAdForPage() {
  47. if (cc.sys.os === cc.sys.OS_ANDROID) {
  48. let deviceId = AAJS2.getDeviceUserId();
  49. console.log("zh:checkstatus:", ATRewardedVideoSDK.checkAdStatus(AAJS2.getPlacementId()));
  50. var setting = {};
  51. setting[ATRewardedVideoSDK.userIdKey] = deviceId;
  52. ATRewardedVideoSDK.loadRewardedVideo(AAJS2.getPlacementId(), setting);
  53. }
  54. }
  55. protected onOpen(): void {
  56. // 上报 首页抽奖
  57. utils.umaEvent("gamechoujiang");
  58. utils.SendEvent("页面-抽奖");
  59. this._panel.scale = 0;
  60. cc.tween(this._panel).to(0.3, { scale: 0.8 }, { easing: "backOut" }).start();
  61. // TweenEffect.panel_open_scale(this._panel);
  62. cc.tween(this._page.getChildByName("guang"))
  63. .by(0.5, { angle: 60, opacity: -150 })
  64. .by(0.5, { angle: 60, opacity: 150 })
  65. .union()
  66. .repeatForever()
  67. .start();
  68. this._totalLabel.string = `${cocosz.totalCJTimes > 30 ? 30 : cocosz.totalCJTimes}/30`;
  69. if (cocosz.totalCJTimes > 30 || cocosz.dataMgr.getGunInfo(10).State > 0) { this._panel.getChildByName("w_nnp").color = cc.Color.GRAY; }
  70. this.updateReward();
  71. this.updateBtn();
  72. }
  73. updateReward() {
  74. for (let i = 0; i < 12; i++) {
  75. let str = `reward${i + 1}`;
  76. let reward = this._rewardList.getChildByName(str);
  77. if (GameDate.TurntableReward[i].type == RewardType.Gold) {
  78. let gold = reward.getChildByName("gold");
  79. if (gold) {
  80. gold.active = true;
  81. // gold.setPosition(reward.x + gold.x, reward.y + gold.y);
  82. // gold.setParent(this._rewardList);
  83. }
  84. let label = reward.getChildByName("label");
  85. if (label) {
  86. label.active = true;
  87. label.zIndex = 2;
  88. label.setPosition(reward.x + label.x, reward.y + label.y);
  89. label.setParent(this._rewardList);
  90. label.getComponent(cc.Label).string = `+${GameDate.TurntableReward[i].num}`;
  91. }
  92. }
  93. else if (GameDate.TurntableReward[i].type == RewardType.Diamond) {
  94. let diamond = reward.getChildByName("diamond");
  95. if (diamond) {
  96. diamond.active = true;
  97. // diamond.setPosition(reward.x + diamond.x, reward.y + diamond.y);
  98. // diamond.setParent(this._rewardList);
  99. }
  100. let label = reward.getChildByName("label");
  101. if (label) {
  102. label.active = true;
  103. label.zIndex = 2;
  104. label.setPosition(reward.x + label.x, reward.y + label.y);
  105. label.setParent(this._rewardList);
  106. label.getComponent(cc.Label).string = `+${GameDate.TurntableReward[i].num}`;
  107. }
  108. }
  109. else if (GameDate.TurntableReward[i].type == RewardType.Skin) {
  110. let ani = cc.instantiate(cocosz.resMgr.getRes(`skin${GameDate.TurntableReward[i].num}`, cc.Prefab) as cc.Prefab);
  111. if (ani) {
  112. ani.scale = 0.5;
  113. ani.zIndex = 1;
  114. ani.setParent(this._rewardList);
  115. ani.setPosition(reward.x, reward.y - 65);
  116. }
  117. let nameSpr = reward.getChildByName("nameSpr");
  118. if (nameSpr) {
  119. nameSpr.active = true;
  120. nameSpr.zIndex = 2;
  121. nameSpr.setPosition(reward.x + nameSpr.x, reward.y + nameSpr.y);
  122. nameSpr.setParent(this._rewardList);
  123. nameSpr.getComponent(cc.Sprite).spriteFrame = cocosz.resMgr.getRes(`p_${GameDate.TurntableReward[i].num}`, cc.SpriteFrame);
  124. }
  125. if (cocosz.dataMgr.getSkinInfo(GameDate.TurntableReward[i].num - 1).State != 0) {
  126. let mask = this._rewardList.getChildByName(`mask${i + 1}`);
  127. if (mask) {
  128. mask.active = true;
  129. mask.zIndex = 3;
  130. }
  131. }
  132. }
  133. else if (GameDate.TurntableReward[i].type == RewardType.Weapon) {
  134. let node = new cc.Node;
  135. let str = "w_" + Weapon.WeaponName[GameDate.TurntableReward[i].num];
  136. node.addComponent(cc.Sprite).spriteFrame = cocosz.resMgr.getRes(str, cc.SpriteFrame);
  137. node.setParent(this._rewardList)
  138. node.setPosition(reward.x, reward.y);
  139. let nameSpr = reward.getChildByName("nameSpr");
  140. if (nameSpr) {
  141. nameSpr.active = true;
  142. nameSpr.zIndex = 2;
  143. nameSpr.setPosition(reward.x + nameSpr.x, reward.y + nameSpr.y);
  144. nameSpr.setParent(this._rewardList);
  145. nameSpr.getComponent(cc.Sprite).spriteFrame = cocosz.resMgr.getRes(`w_${GameDate.TurntableReward[i].num + 1}`, cc.SpriteFrame);
  146. }
  147. if (cocosz.dataMgr.getGunInfo(GameDate.TurntableReward[i].num).State != 0) {
  148. let mask = this._rewardList.getChildByName(`mask${i + 1}`);
  149. if (mask) {
  150. mask.active = true;
  151. mask.zIndex = 3;
  152. }
  153. }
  154. }
  155. }
  156. }
  157. startNum: number = 0;
  158. CJ() {
  159. console.log('zh:cj 被触发');
  160. // 上报 首页抽奖
  161. utils.umaEvent(`gamechoujiang${cocosz.useCJTimes}`);
  162. this.isCJ = true;
  163. let num = 20;
  164. num += Math.floor(Math.random() * 12);
  165. let count = 0;
  166. let lastNum = this.startNum;
  167. let cur = 0;
  168. cocosz.audioMgr.playEffect("turntable");
  169. let timeCount = setInterval(() => {
  170. count++;
  171. if (this.getTimeCount(count, cur) == 0) {
  172. this._rewardList.children[lastNum].children[0].opacity = 0;
  173. lastNum++;
  174. if (lastNum >= 12) {
  175. lastNum = 0;
  176. }
  177. if (GameDate.TurntableReward[lastNum].type == RewardType.Skin) {
  178. if (cocosz.dataMgr.getSkinInfo(GameDate.TurntableReward[lastNum].num - 1).State != 0) {
  179. lastNum++;
  180. if (lastNum >= 12) {
  181. lastNum = 0;
  182. }
  183. }
  184. }
  185. else if (GameDate.TurntableReward[lastNum].type == RewardType.Weapon) {
  186. if (cocosz.dataMgr.getGunInfo(GameDate.TurntableReward[lastNum].num).State != 0) {
  187. lastNum++;
  188. if (lastNum >= 12) {
  189. lastNum = 0;
  190. }
  191. }
  192. }
  193. cur++;
  194. this._rewardList.children[lastNum].children[0].opacity = 255;
  195. if (cur >= num) {
  196. this.startNum = lastNum;
  197. clearInterval(timeCount);
  198. if (GameDate.TurntableReward[lastNum].type == RewardType.Gold) {
  199. Msg.Show(i18n.t("msg.gxhdjb") + GameDate.TurntableReward[lastNum].num)
  200. cocosz.dataMgr.CoinCount += GameDate.TurntableReward[lastNum].num;
  201. }
  202. else if (GameDate.TurntableReward[lastNum].type == RewardType.Diamond) {
  203. Msg.Show(i18n.t("msg.gxhdzs") + GameDate.TurntableReward[lastNum].num)
  204. cocosz.dataMgr.DiamondCount += GameDate.TurntableReward[lastNum].num;
  205. }
  206. else if (GameDate.TurntableReward[lastNum].type == RewardType.Skin) {
  207. Msg.Show(i18n.t("msg.gxhdxjs"));
  208. cocosz.dataMgr.CurSkinId = GameDate.TurntableReward[lastNum].num - 1;
  209. cc.game.emit(Constant.E_GAME_LOGIC, { type: Constant.E_CJ_SKIN });
  210. this._rewardList.children[lastNum].children[0].opacity = 0;
  211. this._rewardList.getChildByName(`mask6`).active = true;
  212. this._rewardList.getChildByName(`mask6`).zIndex = 3;
  213. }
  214. else {
  215. Msg.Show(i18n.t("msg.gxhdxwq"));
  216. cocosz.dataMgr.curWeapon = GameDate.TurntableReward[lastNum].num;
  217. cc.game.emit(Constant.E_GAME_LOGIC, { type: Constant.E_CJ_Weapon });
  218. this._rewardList.children[lastNum].children[0].opacity = 0;
  219. this._rewardList.getChildByName(`mask12`).active = true;
  220. this._rewardList.getChildByName(`mask12`).zIndex = 3;
  221. }
  222. this.isCJ = false;
  223. cocosz.useCJTimes++;
  224. cocosz.totalCJTimes++;
  225. this._totalLabel.string = `${cocosz.totalCJTimes > 30 ? 30 : cocosz.totalCJTimes}/30`;
  226. if (cocosz.totalCJTimes == 30 && cocosz.dataMgr.getGunInfo(10).State == 0) {
  227. Msg.Show(i18n.t("msg.gxhdnnp"));//恭喜获得武器鸟鸟炮
  228. cocosz.dataMgr.curWeapon = 10;
  229. this._panel.getChildByName("w_nnp").color = cc.Color.GRAY;
  230. cc.game.emit(Constant.E_GAME_LOGIC, { type: Constant.E_CJ_Weapon });
  231. }
  232. this.updateBtn();
  233. }
  234. }
  235. }, 10)
  236. }
  237. startIntervalTime: number = 10;
  238. addTime: number = 1;
  239. getTimeCount(num1: number, num2: number) {
  240. let num = 0;
  241. for (let i = 0; i < num2; i++) {
  242. num += i * this.addTime;
  243. }
  244. return (num1 - num) % (this.startIntervalTime + num2 * this.addTime);
  245. }
  246. updateBtn() {
  247. if (cocosz.isADON && cocosz.useCJTimes >= Constant.commonCJTimes/* + cocosz.getCJTimes */) {
  248. this._btnCJ.active = false;
  249. this._btnAD.active = true;
  250. } else {
  251. this._btnCJ.active = true;
  252. this._btnAD.active = false;
  253. }
  254. }
  255. isCJ: boolean = false;
  256. protected async _onBtnClickHandler(event: cc.Event.EventTouch) {
  257. await cocosz.audioMgr.playBtnEffect().catch();
  258. if (this.isCJ) return;
  259. switch (event.target.name) {
  260. case "BtnBack": {
  261. cocosz.uiMgr.closePanel(PanelName.UITurntablePanel);
  262. break;
  263. }
  264. case "BtnCJ": {
  265. this.CJ();
  266. break;
  267. }
  268. case "BtnAD": {
  269. utils.SendEvent("视频-抽奖-播放1111")
  270. // 注册方法 , this.ClickClose.bind(this));
  271. GlobalManager.getInstance().registerMethod('event_UITurntablePage_forAd', this.CJ.bind(this));
  272. // cc.sys.localStorage.setItem(this.adKey, 'qianDao_dblq');//
  273. if (ATRewardedVideoSDK.hasAdReady(AAJS2.getPlacementId())) {
  274. console.log('zh:AD ready for idx2')
  275. ATRewardedVideoSDK.showAd(AAJS2.getPlacementId());
  276. } else {
  277. console.log('zh:AD not ready for idx2')
  278. this.CJ();
  279. }
  280. if (2 > 1) {
  281. return;//下面是原始的代码
  282. }
  283. cocosz.watchAD(() => {
  284. utils.SendEvent("视频-抽奖-成功")
  285. this.CJ();
  286. }, () => {
  287. utils.SendEvent("视频-抽奖-失败")
  288. })
  289. break;
  290. }
  291. }
  292. }
  293. // update (dt) {}
  294. }