123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- import { App } from "./Manager/App";
- import player from "./player";
- import FailPanelMediator from "./view/failPanel/FailPanelMediator";
- import FailPanel from "./view/failPanel/FailPanel";
- import SuccessPanelMediator from "./view/successPanel/SuccessPanelMediator";
- import SuccessPanel from "./view/successPanel/SuccessPanel";
- import InsufficientPanelMediator from "./view/insufficientPanel/InsufficientPanelMediator";
- import InsufficientPanel from "./view/insufficientPanel/InsufficientPanel";
- import TimeControl from "./TimeControl";
- import TipPanelMediator from "./view/tipPanel/TipPanelMediator";
- import TipPanel from "./view/tipPanel/TipPanel";
- import { SoundManager } from "./Manager/SoundManager";
- import SDK from "./sdk/SDK";
- import ChooseSkinPanel from "./view/chooseSkin/ChooseSkinPanel";
- import ChooseSkinPanelMediator from "./view/chooseSkin/ChooseSkinPanelMediator";
- import Enemy from "./Enemy";
- import ShopPanel from "./view/shopView/ShopPanel";
- import ShopPanelMediator from "./view/shopView/ShopPanelMediator";
- import SetNormalPanel from "./view/setNormal/SetNormalPanel";
- import SetNormalPanelMediator from "./view/setNormal/SetNormalPanelMediator";
- import { InterstitialType } from "./sdk/vivo/Interstitial";
- import AESUtil from "./AESUtil"
- import ATSDK from "./AnyThinkAds/ATJSSDK";
- import ATRewardedVideoSDK from "./AnyThinkAds/ATRewardedVideoJSSDK";
- import AAJS2 from "./ATAndroidJS2";
- import GlobalManager from './GlobalManager';
- import ATInterstitialSDK from "./AnyThinkAds/ATInterstitialJSSDK";
- import ATBannerSDK from "./AnyThinkAds/ATBannerJSSDK";
- import { AdType } from './ATAndroidJS2';
- const { ccclass, property } = cc._decorator;
- @ccclass
- export default class gameScene extends cc.Component {
- public static _instance;
- @property(cc.Node)
- public bg: cc.Node = null;
- @property([cc.SpriteFrame])
- private bgSpriteFrame: cc.SpriteFrame[] = [];
- @property(cc.Node)
- public levelParent: cc.Node = null;
- @property(cc.Node)
- public mainCamera: cc.Node = null;
- @property(cc.Node)
- public btnPause: cc.Node = null;
- @property(cc.Label)
- public labelPersonNum: cc.Label = null;
- @property(cc.Label)
- public labelWinCoin: cc.Label = null;
- public curLevelWinCoin = 0;
- private GameStutas: boolean = false;
- private mainSceneName: string = "hallScene";
- private currentSceneName: string = "gameScene";
- public static get instance() {
- return gameScene._instance;
- }
- public static set instance(value) {
- gameScene._instance = value
- }
- onLoad() {
- gameScene.instance = this;
- this.GameStutas = false;
- //开启触发功能
- // var manager = cc.director.getCollisionManager();
- // manager.enabled = true;
- // manager.enabledDebugDraw = true;
- // let phyManager = cc.director.getPhysicsManager();
- // phyManager.enabled = true;
- // var Bits = cc.PhysicsManager.DrawBits;
- // phyManager.debugDrawFlags = Bits.e_aabbBit | Bits.e_shapeBit;
- this.btnPause.on(cc.Node.EventType.TOUCH_END, this.ClickPause.bind(this), this);
- SDK.Instance.showInterstitial(InterstitialType.INTERSTITIAL_GAME_STARE);
- //GlobalManager.getInstance().registerMethod('initAdForPageInter', this.initAdForPageInter.bind(this));
- this.initAdForPageInter();
- }
- //add判断插屏 开屏等,需要多次准备
- //add判断插屏 开屏等,需要多次准备
- initAdForPageInter() {
- if (cc.sys.os === cc.sys.OS_ANDROID) {
- console.log('zh:skillBox.ts 开始准备AD .....');
- let deviceId = AAJS2.getDeviceUserId();
- var setting = {};
- setting[ATRewardedVideoSDK.userIdKey] = deviceId;
- //add判断插屏 开屏等
- let pid_inter = AAJS2.getPlacementId2(AdType.Inter);
- console.log("zh: pid_inter checkstatus:", ATInterstitialSDK.checkAdStatus(pid_inter));
- ATInterstitialSDK.loadInterstitial(pid_inter, setting);
- }
- }
- /**
- * 显示插屏广告
- *
- * @param adMarkForClose 插屏广告关闭后调用那个方法的具体指示标识
- * @param checkClose 是否需要判断关闭事件,有的不需要,如果AD占用游戏时间则为true
- * @param callback 插屏广告关闭(加载失败\非ANDROID平台)的回调
- */
- private showInterAd(adMarkForClose: string, checkClose: boolean, callback: () => void) {
- if (cc.sys.os === cc.sys.OS_ANDROID) {
- cc.sys.localStorage.setItem("adMarkForClose", adMarkForClose);//关闭后,调用哪个方法的标识
- //add判断插屏 开屏等
- let pid_inter = AAJS2.getPlacementId2(AdType.Inter);
- let boo = ATInterstitialSDK.hasAdReady(pid_inter);
- if (boo) {
- // 暂停游戏
- cc.director.pause();
- console.log('zh:showInterAd AD OK');
- ATInterstitialSDK.showAd(pid_inter);
- //因为跨脚本,所以使用全局注册函数调用,后来发现切换APP,导致ad close事件失效
- if (!checkClose) {//如果不占用游戏时间
- callback();
- }
- } else {
- console.log('zh:showInterAd AD 没有准备好');
- //GlobalManager.getInstance().callMethod('initAdForPageInter');
- this.initAdForPageInter();
- callback();
- }
- } else {
- callback();
- }
- }
- start() {
- let smallLevel = App.DataManager.PassProgress[App.DataManager.CurrentIntoLevel];
- this.updateLeftPeople(App.DataManager.personCount[App.DataManager.CurrentIntoLevel - 1][smallLevel - 1]);
- this.updateWinCoin();
- // this.levelLabel.string = App.DataManager.CurrentIntoLevel.toString();
- this.bg.getComponent(cc.Sprite).spriteFrame = this.bgSpriteFrame[0];
- // this.InstantLevel();
- App.DataManager.resetFlag = false;
- this.StartGame();
- }
- private SaveLevelData(nodes: any) {
- let saves: any = [];
- nodes.children.forEach(child => {
- let childData = {
- 'name': child.name,
- 'x': child.x.toFixed(1),
- 'y': child.y.toFixed(1)
- };
- saves.push(childData);
- });
- let readLevel = '9';
- App.LocalStorageUtil.setJsonObj('Stupid_' + readLevel, saves);
- console.log('关卡号:', readLevel);
- console.log('关卡数据:', saves);
- }
- /** 生成关卡数据 */
- private InstantLevel(): void {
- // if (App.DataManager.Configs.length < App.DataManager.CurrentIntoLevel) {
- // if (App.DataManager.InfiniteLevelDate[App.DataManager.CurrentIntoLevel]) {
- // this.InitLevel(App.DataManager.InfiniteLevelDate[App.DataManager.CurrentIntoLevel]);
- // return;
- // }
- // let value = App.DataManager.CurrentIntoLevel - App.DataManager.Configs.length;
- // let randomListLen = App.DataManager.RandomLevelList.length;
- // let yushu = value % randomListLen;
- // let randomArea = (yushu == 0) ? App.DataManager.RandomLevelList[randomListLen - 1] : App.DataManager.RandomLevelList[yushu - 1];
- // let levelValue = Math.round(Math.random() * (randomArea.endLevel - randomArea.startLevel)) + randomArea.startLevel;
- // this.InitLevel(levelValue);
- // App.DataManager.InfiniteLevelDate[App.DataManager.CurrentIntoLevel] = levelValue;
- // App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.lst_InfiniteLevelDate, App.DataManager.InfiniteLevelDate);
- // } else {
- this.InitLevel(App.DataManager.CurrentIntoLevel);
- // }
- }
- // 初始化关卡
- private InitLevel(index: number): void {
- // let datas = App.DataManager.Configs[index].json;
- // datas.forEach(element => {
- // var nodes = cc.instantiate(App.DataManager.PropPrefabs[element.name]);
- // this.levelParent.addChild(nodes);
- // nodes.x = Number(element.x);
- // nodes.y = Number(element.y);
- // });
- var level = cc.instantiate(App.DataManager.PropPrefabs["level" + index]);
- this.levelParent.addChild(level);
- }
- /** 开始游戏 */
- public StartGame(): void {
- this.GameStutas = true;
- App.SoundManager.playEffect(SoundManager.start);
- App.SoundManager.playBGM(SoundManager.hallBgm[2]);
- }
- public updateLeftPeople(peopleNum: number) {
- this.labelPersonNum.string = peopleNum + "";
- }
- public updateWinCoin() {
- this.labelWinCoin.string = this.curLevelWinCoin + "";
- }
- private ClickPause(): void {
- App.Facade.popView(SetNormalPanelMediator, SetNormalPanel, "设置", false);
- cc.director.pause();
- }
- private ClickGoOn(): void {
- }
- public ClickRestart(): void {
- console.log('zh:ClickRestart')
- App.DataManager.resetFlag = true;
- this.LoadLevel();
- }
- /**
- * 点击返回主页
- */
- private ClickBackMain(): void {
- console.log('zh:ClickBackMain');
- cc.director.loadScene(this.mainSceneName);
- // this.showInterAd("callBackFor_ClickBackMain",false, () => this.callBackFor_ClickBackMain());
- }
- private callBackFor_ClickBackMain(): void {
- cc.director.loadScene(this.mainSceneName);
- }
- /**
- * 跳关
- */
- private JumpLevel(): void {
- console.log('观看视频后跳关~');
- this.JumpNextLevel();
- }
- //
- private replay(): void {
- console.log('zh:replay');
- cc.director.loadScene(this.currentSceneName);
- }
- /**
- * 加载关卡
- */
- private LoadLevel(): void {
- App.DataManager.UpdateTili(TimeControl.instance.consumeTili, (success) => {
- if (success) cc.director.loadScene(this.currentSceneName);
- else App.Facade.popView(InsufficientPanelMediator, InsufficientPanel, "2体力不足", false);
- });
- }
- /**
- * 下一关
- */
- private JumpNextLevel(): void {
- this.NextLevelDateUpdate();
- this.LoadLevel();
- }
- /**
- * 点击下一关后数据更新
- */
- private NextLevelDateUpdate(): void {
- if (App.DataManager.PassProgress[App.DataManager.CurrentIntoLevel] > 3) {
- App.DataManager.CurrentIntoLevel++;
- App.DataManager.PlayLevel = App.DataManager.CurrentIntoLevel;
- App.LocalStorageUtil.setNumber(App.LocalStorageUtil.lst_playLevel, App.DataManager.PlayLevel);
- }
- while (App.DataManager.PassProgress[App.DataManager.CurrentIntoLevel] > 3) {
- App.DataManager.CurrentIntoLevel++;
- App.DataManager.PlayLevel = App.DataManager.CurrentIntoLevel;
- App.LocalStorageUtil.setNumber(App.LocalStorageUtil.lst_playLevel, App.DataManager.PlayLevel);
- }
- }
- /**
- * 更新通关数
- */
- private UpdateLocalLevel() {
- var current = Number(App.DataManager.CurrentIntoLevel);
- console.log('UpdateLocalLevel', current, App.DataManager.PassProgress[current])
- if (App.DataManager.PassProgress[current]) {
- App.DataManager.PassProgress[current]++;
- }
- if (!App.DataManager.PassProgress[current + 1]) {
- App.DataManager.PassProgress[current + 1] = 1;
- }
- App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.lst_passProgress, App.DataManager.PassProgress);
- // this.UpdateGetSkin();
- }
- private OpenChooseSkin() {
- App.Facade.popView(ChooseSkinPanelMediator, ChooseSkinPanel, '皮肤界面', false);
- }
- private UpdateGetSkin() {
- let passLevelCount = Object.keys(App.DataManager.PassProgress).length - 1;
- App.DataManager.MissionDataList.forEach(element => {
- let pass = element.passLevel;
- let hasGetSkin = (passLevelCount >= pass) ? true : false;
- if (hasGetSkin) {
- let hasSave = App.DataManager.GetSkins.indexOf(element.getSkin);
- if (hasSave == -1) {
- App.DataManager.GetSkins.push(element.getSkin);
- App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.lst_getSkin, App.DataManager.GetSkins);
- console.log('通关获得新皮肤')
- // this.newSkinTips.active = true;
- App.DataManager.NewSkinName = element.getSkin;
- App.DataManager.GetNewSkinFlag = true;
- this.scheduleOnce(() => { App.Facade.popView(TipPanelMediator, TipPanel, "通关获得新皮肤~", false); }, 0);
- }
- }
- });
- }
- /**
- * 游戏成功
- */
- private GameSuccess(): void {
- console.log('游戏成功***********');
- this.GameComplete();
- App.SoundManager.playEffect(SoundManager.success[Math.floor(Math.random() * 2)]);
- this.UpdateLocalLevel();
- this.scheduleOnce(() => {
- App.Facade.popView(SuccessPanelMediator, SuccessPanel, "游戏成功弹窗", false);
- }, 1);
- }
- /**
- * 游戏失败
- */
- private GameFail(huoFlag: boolean = false): void {
- if (!this.GameStutas)
- return;
- this.GameComplete();
- App.SoundManager.playEffect(SoundManager.fail);
- this.scheduleOnce(() => {
- App.Facade.popView(FailPanelMediator, FailPanel, "游戏失败弹窗", false);
- }, 2);
- }
- /**
- * 游戏结束
- */
- private GameComplete(): void {
- this.GameStutas = false;
- }
- onDisable() {
- this.btnPause.off(cc.Node.EventType.TOUCH_END, this.ClickPause.bind(this), this);
- }
- onDestroy() {
- gameScene.instance = null;
- }
- }
|