123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- const HomeApi = require("../net/HomeApi");
- const AlertManager = require('../utils/AlertManager');
- const GameNotificationKey = require('../utils/GameEnum').GameNotificationKey;
- const ShareAction = require('../utils/ShareAction');
- const GameModule = require("../utils/GameModule");
- const WsManager = require('../net/Ws');
- const GameRedDot = require('../utils/GameEnum').GameRedDot;
- const TapTapTool = require("../utils/TapTapTool");
- cc.Class({
- extends: cc.Component,
- properties: {
- levelHomePrefab: cc.Prefab,
- myInfoTop: cc.Node,
- sidebar: cc.Node,
- clickAddMoney: cc.Prefab,
- additionTipsNode: cc.Node,
- homeGuide: cc.Node,
- storeNode: cc.Node,
- drawNode: cc.Node,
- messageListNode: cc.Node,
- taskRedNode: cc.Node,
- storeRedNode: cc.Node,
- drawRedNode: cc.Node,
- },
- // LIFE-CYCLE CALLBACKS:
- onLoad () {
- this.isShowBar = false;
- this._setEventListener();
- this._initSocketMng();
- this._getInformation();
- // 引导界面
- this.homeGuide.zIndex = 200;
- GameModule.homeGuide = this.homeGuide;
- this.homeGuide = this.homeGuide.getComponent('HomeGuide');
- this.homeGuide.init();
- // 创建一个事件监听实例, 用来实现跨节点监听事件
- GameEvent.init();
- cc.debug.setDisplayStats(false);
- //建筑展示
- let levelHome = cc.instantiate(this.levelHomePrefab);
- levelHome = levelHome.getComponent('LevelHome');
- levelHome.init(Global.user.uid);
- this.levelHome = levelHome;
- this.levelHome.node.active = true;
- let XHeight = 1624;
- this.winSize = cc.view.getVisibleSize();
- console.log('game ======================= ' + this.winSize);
- if (this.winSize.height >= XHeight) {
- this.myInfoTop.height = 200;
- this.sidebar.getComponent(cc.Widget).top = 180;
- this.messageListNode.getComponent(cc.Widget).top = 250 + 30;
- }
- this.additionTipsNode = this.additionTipsNode.getComponent('AdditionTips');
- if (Global.shareType == ShareAction.SHOW_GROUP_RANK && Global.shareTicket.length > 0) {
- if (this.homeGuide.guideState.state1.pass) {
- GameEvent.fire(GameNotificationKey.GameShowGroupRank);
- }
- }
- if (Global.isCheck) {
- this.storeNode.active = false;
- this.drawNode.active = false;
- }
- },
- start () {
- if (!this.homeGuide.guideState.state1.pass) {
- // 触发引导系统state1状态
- GameModule.homeGuide.getComponent('HomeGuide').handleState('state1');
- }
- GameModule.homeGuide.getComponent('HomeGuide').handleGuideStateNext('state4', 'state5');
- GameModule.homeGuide.getComponent('HomeGuide').handleGuideStateNext('state6', 'state7');
- // GameModule.homeGuide.getComponent('HomeGuide').handleState('state31');
- GameModule.homeGuide.getComponent('HomeGuide').handleGuideStateNext('state29', 'state31');
- GameModule.homeGuide.on('Fire_state29', this.finishState29, this);
- GameModule.homeGuide.on('Fire_state31', this.handleQuestPopup, this);
- if (this.homeGuide.guideState.state7.pass || this.homeGuide.guideState.state11.pass) {
- GameModule.homeGuide.getComponent('HomeGuide').handleState('state13');
- GameModule.homeGuide.getComponent('HomeGuide').changeGuideTask1315(false);
- if (this.homeGuide.guideState.state13.pass) {
- GameModule.homeGuide.getComponent('HomeGuide').handleState('state15');
- GameModule.homeGuide.getComponent('HomeGuide').changeGuideTask1315(false);
- }
- }
- this._showSidebarUI();
- },
- update (dt) {
- if (GameModule.skill != null && GameModule.skill != undefined && GameModule.skill.isUsingSkill3) {
- GameEvent.fire(GameNotificationKey.PlaySuccessAnimation);
- }
- },
- _setEventListener() {
- GameEvent.on(GameNotificationKey.GameShowAdditionTips, this, this.showAdditionTips);
- GameEvent.on(GameNotificationKey.GameShowGroupRank, this, this.showGroupRank);
- GameEvent.on(GameNotificationKey.GameRedDotUpdate, this, this.handelShowRedDot);
- },
- _initSocketMng() {
- let testUrl = 'wss://test-message-taptap.duowan.com/connect';
- let pUrl = 'wss://message-allstar.duowan.com/connect';
- let socketUrl = Global.debug ? testUrl : pUrl;
- // let socketUrl = 'ws://172.16.15.196:9099/connect';
- let ws = new WsManager(socketUrl, {
- binaryType: 'arraybuffer',
- autoConnect: true, // 自动连接
- reconnection: true, // 断开自动重连
- reconnectionDelay: 3000, // 重连间隔时间,单位毫秒
- reconnectionAttempts: 5 // 最大重连尝试次数,默认为Infinity
- });
- ws.on('open', (res) => {
- console.log('socket 打开');
- });
- ws.on('message', (data) => {
- if (data.type != undefined) {
- // Global._redTypes = data.type;
- /// 商品购买的通知
- if (data.type == 1 && data.userShops.length > 0) {
- let userShops = data.userShops;
- for (let i = 0; i < data.userShops.length; ++ i) {
- GameModule.userInfo.shop.handelShop(userShops[i]);
- GameModule.userInfo.shop.updateTimeSchedule();
- /// 处理信息流信息
- GameModule.user.shop.handleShpDataToMessageList();
- }
- return;
- }
- if (TapTapTool.compare(Global._buyStarGold, Global.userData.goldObj)) {
- Global._redTypes.push(GameRedDot.star);
- }
- //// 下面这段代码只是去重,不要重复的更新
- let isContain = false;
- for (let i = 0; i < data.type.length; ++ i) {
- /// 如果包含它就什么都不管
- let type = data.type[i];
- if (Global._redTypes.indexOf(type) != -1) {
- isContain = true;
- } else {
- Global._redTypes.push(type);
- isContain = false;
- }
- }
- if (isContain == false) {
- GameEvent.fire(GameNotificationKey.GameRedDotUpdate);
- this.handelShowRedDot();
- }
- }
- });
- ws.on('close', () => {
- console.log('socket 关闭');
- });
- ws.on('error', () => {
- console.log('sockete 错误');
- });
- },
- /// 获取信息流
- _getInformation() {
- Global._redTypes = [];
- Global._timeInformations = [];
- Global._fixInformations = [];
- Global._gold10 = {'n': 0, 'e': 0};
- Global._buyStarGold = {'n': 0, 'e': 0};
- this.getInformation().then((respondData) => {
- console.log(respondData);
- Global._gold10 = respondData.gold10;
- Global._buyStarGold = respondData.buyStarGold;
- if (respondData.types !== undefined) {
- Global._redTypes = respondData.types;
- }
- if (TapTapTool.compare(Global.userData.goldObj, respondData.buyStarGold)) {
- Global._redTypes.push(GameRedDot.star);
- }
- GameEvent.fire(GameNotificationKey.GameRedDotUpdate);
- this.handelShowRedDot();
- //// 更新信息流数据
- if (respondData.informations !== undefined) {
- Global._timeInformations = respondData.informations;
- GameEvent.fire(GameNotificationKey.GameUpdateMessageList, respondData.informations.length);
- }
- }).catch(({code, msg}) => {
- console.log(code, msg);
- });
- },
- /// 网络请求
- getInformation() {
- return new Promise((resolve, reject) => {
- // 获取目标用户的建筑
- HomeApi.getInformation((respondData) => {
- resolve(respondData);
- }, (code, msg) => {
- reject({code, msg});
- });
- })
- },
- onDestroy() {
- GameEvent.off(GameNotificationKey.GameShowAdditionTips, this);
- GameEvent.off(GameNotificationKey.GameShowGroupRank, this);
- },
- _showSidebarUI() {
- let isOk = false;
- //教程31还没有完成不显示
- if (!this.homeGuide.guideState.state31.pass) {
- // 1. 总部大楼大于25级
- // 2. 已拥有1个明星
- let unLockStatus1 = GameModule.userInfo.buildingLevel >= 25;
- let unLockStatus2 = GameModule.userInfo.buyStarCount > 0;
- if (unLockStatus1 && unLockStatus2) {
- isOk = true
- }
- } else {
- isOk = true;
- }
- if (!isOk) {
- return;
- }
- this.isShowBar = true;
- let action = cc.moveBy(0.3, cc.v2(-this.sidebar.width, 0));
- this.sidebar.runAction(action);
- },
- finishState29() {
- if (this.isShowBar) {
- return;
- }
- this.isShowBar = true;
- let action = cc.moveBy(0.3, cc.v2(-this.sidebar.width, 0));
- this.sidebar.runAction(action);
- },
- handelShowRedDot() {
- if (Global._redTypes == null || Global._redTypes == undefined || Global._redTypes.length == 0) {
- this.taskRedNode.active = false;
- this.drawRedNode.active = false;
- this.storeRedNode.active = false;
- return;
- }
- let redTypes = Global._redTypes;
- this.taskRedNode.active = (redTypes.indexOf(GameRedDot.mainTask) != -1 || redTypes.indexOf(GameRedDot.dayTask) != -1);
- this.drawRedNode.active = redTypes.indexOf(GameRedDot.draw) != -1;
- let isStoreRed = (redTypes.indexOf(GameRedDot.storeDiamond) != -1 || redTypes.indexOf(GameRedDot.storeCoin) != -1);
- this.storeRedNode.active = isStoreRed;
- this._storeRedNode = isStoreRed;
- if (isStoreRed) {
- this._isTimer = true;
- this._storeTimeCount = 0;
- this.storeRedNode.runAction( cc.repeatForever(cc.sequence(cc.rotateTo(0.2,3), cc.rotateTo(0.2,-3))));
- this.schedule(this.storeTimeAction, 6);
- } else {
- if (this._isTimer == true) {
- this.unschedule(this.storeTimeAction, this);
- this._isTimer = false;
- }
- }
- },
- /// 商城未读消息的显示
- storeTimeAction() {
- this._storeTimeCount += 1;
- /// 第一个6秒的时候
- if (this._storeTimeCount === 1) {
- this.storeRedNode.active = false;
- } else if (this._storeTimeCount === 6) {
- this.storeRedNode.active = true;
- this._storeTimeCount = 0;
- this.storeRedNode.runAction( cc.repeatForever(cc.sequence(cc.rotateTo(0.2,3), cc.rotateTo(0.2,-3))));
- }
- },
- //
- handleQuestPopup: _.debounce((event) => {
- AlertManager.showQuestPopup();
- // if (event) {
- // event.target.getChildByName("notice_point").active = false;
- // }
- }, 1000, true),
- //显示抽奖界面
- handleShowDraw: _.debounce((event) => {
- AlertManager.showDrawAlert();
- }, 1000, true),
- //显示商城界面
- handleShowStore: _.debounce((event) => {
- AlertManager.showStoreAlert();
- }, 1000, true),
- //显示排行榜界面
- handleShowRank: _.debounce((event) => {
- AlertManager.showRankAlert();
- }, 1000, true),
- showGroupRank() {
- AlertManager.showRankAlert(2);
- },
- showAdditionTips(text, type) {
- if (this.node.active) {
- this.additionTipsNode.show(text, type);
- }
- },
- // update (dt) {},
- });
|