const interactInfo = require('../data/interactInfo'); var { UserInteractionType, UserIntimacyType } = require('../utils/GameEnum'); var UserInformationApi = require('../net/UserInformationApi'); const DWTool = require('../utils/DWTool'); const GameModule = require('../utils/GameModule'); const interactImage = [ { image: 'interact_1.png', title: '为你点了一杯咖啡,点击查收' }, { image: 'interact_2.png', title: '这个礼物。。。你喜欢么?' }, { image: 'interact_3.png', title: '五星级料理,你来我就请!' }, ] cc.Class({ extends: cc.Component, properties: { //互动次数已满提示 interactionFullNode: cc.Node, //互动CD中提示 interactionCDNode: cc.Node, timeLabel: cc.Label, //亲密度显示 intimacyNode: cc.Node, //反抗成功 revoltSuccessNode: cc.Node, //讨好成功 playUpSuccessNode: cc.Node, //互动选项节点 interactionSelectNode: cc.Node, interactionTitleRichText: cc.RichText, interactionCountLabel: cc.Label, //互动选项item interactionItemPrefab: cc.Prefab, }, // LIFE-CYCLE CALLBACKS: init(uid, interactionInfo, userInformation) { this.node.parent = cc.find("Canvas"); this.node.setContentSize(cc.view.getVisibleSize()); this.node.active = false; this.uid = uid; this.userInformation = userInformation; this.interactionInfo = interactionInfo; }, onLoad() { GameModule.homeGuide.on('Fire_state26', this.selectInteraction, this); GameModule.homeGuide.on('Fire_state27', this.playUpShare, this); }, start() { }, onDisable() { this.node.zIndex = 0; this.hideAllNode(); //销毁选项 for (let child of this.interactionSelectNode.children) { if (child.getComponent('UserInteractionItem') != undefined) { child.destroy(); } } this.activeNode = null; }, update(dt) { if (this.interactionCDNode.active === true) { var curTimestamp = parseInt(new Date().getTime()); if ((this.cdEnd - curTimestamp) > 0) { this.timeLabel.string = DWTool.calculateTime((this.cdEnd - curTimestamp) / 1000); } else { this.showInteraction(); } } }, closeNodeAction() { // this.node.active = false; this.hideNodeAnimation(); }, hideAllNode() { this.interactionFullNode.active = false; this.interactionCDNode.active = false; this.intimacyNode.active = false; this.revoltSuccessNode.active = false; this.playUpSuccessNode.active = false; this.interactionSelectNode.active = false; }, showNodeAnimation(showNode) { this.activeNode = showNode; showNode.setScale(0, 0); let scaleAnimation = cc.scaleTo(0.15, 1, 1); showNode.runAction(scaleAnimation); }, hideNodeAnimation() { if (this.activeNode) { let scaleAnimation = cc.scaleTo(0.15, 0, 0); let finish = cc.callFunc(() => { this.node.active = false; }, this); let sequenceAcation = cc.sequence(scaleAnimation, finish); this.activeNode.runAction(sequenceAcation); } else { this.node.active = false; } }, //亲密度显示 showIntimacyInfo(isCommon) { this.node.zIndex += 1; this.node.active = true; this.hideAllNode(); this.intimacyNode.active = true; this.showNodeAnimation(this.intimacyNode); this.intimacyMng = this.intimacyNode.getComponent('UserIntimacyInfo'); this.intimacyMng.configIntimacyInfo(this.interactionInfo, true, isCommon); }, //互动操作相关 showInteraction(interactionType) { this.node.zIndex += 1; this.node.active = true; if (interactionType != undefined) { this.interactionType = interactionType; } if (this.interactionInfo.cnt >= 5) { this.interactionIsFull(); return; } if (this.interactionIsCD() == true) { return; } this.hideAllNode(); this.interactionSelectNode.active = true; this.showNodeAnimation(this.interactionSelectNode); if (this.interactionInfo.cnt) { this.interactionCountLabel.string = `剩余互动次数:${(5 - this.interactionInfo.cnt)}/5`; } else { this.interactionCountLabel.string = '剩余互动次数:5/5'; } var originY = (this.interactionSelectNode.height / 2) - 120; switch (this.interactionType) { case UserInteractionType.Common: this.interactionTitleRichText.string = "互 动"; interactInfo.interactInfo5.forEach(item => { var itemNode = cc.instantiate(this.interactionItemPrefab); itemNode.parent = this.interactionSelectNode; itemNode.y = originY; originY -= (16 + 80); var itemMng = itemNode.getComponent('UserInteractionItem'); itemMng.init(this); itemMng.configData(item); }); break; case UserInteractionType.PlayUp: this.interactionTitleRichText.string = "讨 好"; interactInfo.interactInfo1.forEach(item => { var itemNode = cc.instantiate(this.interactionItemPrefab); itemNode.parent = this.interactionSelectNode; itemNode.y = originY; originY -= (16 + 80); var itemMng = itemNode.getComponent('UserInteractionItem'); itemMng.init(this); itemMng.configData(item); }); break; case UserInteractionType.Revolt: this.interactionTitleRichText.string = "反 抗"; interactInfo.interactInfo2.forEach(item => { var itemNode = cc.instantiate(this.interactionItemPrefab); itemNode.parent = this.interactionSelectNode; itemNode.y = originY; originY -= (16 + 80); var itemMng = itemNode.getComponent('UserInteractionItem'); itemMng.init(this); itemMng.configData(item); }); break; case UserInteractionType.Pacify: this.interactionTitleRichText.string = "安 抚"; interactInfo.interactInfo3.forEach(item => { var itemNode = cc.instantiate(this.interactionItemPrefab); itemNode.parent = this.interactionSelectNode; itemNode.y = originY; originY -= (16 + 80); var itemMng = itemNode.getComponent('UserInteractionItem'); itemMng.init(this); itemMng.configData(item); }); GameModule.homeGuide.getComponent('HomeGuide').handleState('state26'); break; case UserInteractionType.Order: this.interactionTitleRichText.string = "使 唤"; interactInfo.interactInfo4.forEach(item => { var itemNode = cc.instantiate(this.interactionItemPrefab); itemNode.parent = this.interactionSelectNode; itemNode.y = originY; originY -= (16 + 80); var itemMng = itemNode.getComponent('UserInteractionItem'); itemMng.init(this); itemMng.configData(item); }); break; } }, selectInteraction() { UserInformationApi.postInteract(this.uid, this.interactionType, (responseData) => { this.interactionInfo = responseData; this.interactionResponse(responseData); this.userInformation.configIntimacy(responseData); }, (error) => { console.log('互动失败' + error); }); }, interactionResponse(responseData) { this.hideAllNode(); switch (this.interactionType) { case UserInteractionType.Common: this.playUpSuccessNode.active = true; this.showNodeAnimation(this.playUpSuccessNode); break; case UserInteractionType.PlayUp: if (responseData.heart == UserIntimacyType.Full) { this.intimacyNode.active = true; this.showNodeAnimation(this.intimacyNode); this.intimacyMng = this.intimacyNode.getComponent('UserIntimacyInfo'); this.intimacyMng.configIntimacyInfo(this.interactionInfo, true, false); } else { this.playUpSuccessNode.active = true; this.showNodeAnimation(this.playUpSuccessNode); } break; case UserInteractionType.Revolt: this.revoltSuccessNode.active = true; this.showNodeAnimation(this.revoltSuccessNode); break; case UserInteractionType.Pacify: if (responseData.heart == UserIntimacyType.Full) { this.intimacyNode.active = true; this.showNodeAnimation(this.intimacyNode); this.intimacyMng = this.intimacyNode.getComponent('UserIntimacyInfo'); this.intimacyMng.configIntimacyInfo(this.interactionInfo, true, false); } else { this.playUpSuccessNode.active = true; this.showNodeAnimation(this.playUpSuccessNode); GameModule.homeGuide.getComponent('HomeGuide').handleGuideStateNext('state26', 'state27'); } break; case UserInteractionType.Order: this.revoltSuccessNode.active = true; this.showNodeAnimation(this.revoltSuccessNode); break; } this.interactionInfo.cd = responseData.cd; this.interactionInfo.cdEnd = responseData.cdEnd; this.interactionInfo.cnt = responseData.cnt; this.interactionInfo.heart = responseData.heart; this.interactionInfo.intimacy = responseData.intimacy; this.playUpSuccessMng = this.playUpSuccessNode.getComponent('UserIntimacyInfo'); let isCommon = this.interactionType == UserInteractionType.Common ? true : false; this.playUpSuccessMng.configIntimacyInfo(this.interactionInfo, false, isCommon); }, //当天互动次数已满 interactionIsFull() { this.hideAllNode(); this.interactionFullNode.active = true; this.showNodeAnimation(this.interactionFullNode); }, //正在CD中 interactionIsCD() { this.hideAllNode(); var curTimestamp = parseInt(new Date().getTime()); //当前时间戳 this.cdEnd = this.interactionInfo.cdEnd; if ((this.cdEnd - curTimestamp) > 0) { this.interactionCDNode.active = true; this.showNodeAnimation(this.interactionCDNode); this.timeLabel.string = DWTool.calculateTime((this.cdEnd - curTimestamp) / 1000); return true; } else { return false; } }, //消耗钻石加速CD时间 speedCDAction() { UserInformationApi.postSpeedInteraction(this.uid, (responseData) => { this.interactionInfo.cnt += 1; this.interactionInfo.cdEnd = 0; GameModule.userInfo.diamond -= 20; this.showInteraction(); }, (errCode, errMsg) => { if (CC_WECHATGAME) { wx.showModal({ title: "提示", content: errMsg }); } else { alert(errMsg); } }); }, //讨好、安抚成功分享 playUpShare() { if (!CC_WECHATGAME) { return; } let shareItem = interactImage[Math.floor(Math.random() * 3)] var shareTitle = Global.user.nick + ':' + shareItem.title; window.wx.shareAppMessage({ title: shareTitle, imageUrl: 'https://pub.dwstatic.com/wxgame/allstar/share/' + shareItem.image, success: (res) => { }, fail: (res) => { } }); }, //反抗、使唤成功分享 revoltShare() { if (!CC_WECHATGAME) { return; } var shareTitle = '真解气,一起来反抗老板的剥削!'; if (this.interactionType == UserInteractionType.Order) { shareTitle = '真爽,一起来使唤艺人!'; } window.wx.shareAppMessage({ title: shareTitle, imageUrl: 'https://pub.dwstatic.com/wxgame/allstar/share/share1.jpg', }); }, //邀请互动 inviteInteractionShare() { if (!CC_WECHATGAME) { return; } var shareTitle = this.userInformation.userInfo.nick + '你今天还没有和我进行互动~快来一起玩'; window.wx.shareAppMessage({ title: shareTitle, imageUrl: 'https://pub.dwstatic.com/wxgame/allstar/share/interact_0.png', }); } });