123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- const { LevelHomeArtistItemStyle, ArtistOperation } = require('../utils/GameEnum')
- const Api = require('../net/Api');
- const DWTool = require('../utils/DWTool');
- const AlertManager = require('../utils/AlertManager');
- const GameModule = require("../utils/GameModule");
- cc.Class({
- extends: cc.Component,
- properties: {
-
- // 0是自己, 1是好友
- artistBgSpriteFrames: [cc.SpriteFrame],
-
- bgSprite: cc.Sprite,
- addBtn: cc.Button,
- artistNode: cc.Node,
- headSprite: cc.Sprite,
- tipNode: cc.Node,
- topSprite: cc.Sprite,
- bototomSprite: cc.Sprite,
- },
- /**
- *
- * @param {*} buildingInfo
- * @param {number} uid 目标的uid
- * @param {boolean} isSelf 判断是不是自己的界面,false是好友界面,true是自己界面
- * @param {*} showTop
- * @param {*} showBottom
- */
- initWithBuildingInfo(buildingInfo, uid, isSelf, showTop = false, showBottom = false) {
- this.setStyle(LevelHomeArtistItemStyle.Add);
- this.buildingInfo = buildingInfo;
- this.uid = uid;
- this.isSelf = isSelf;
- this.topSprite.node.active = showTop;
- this.bototomSprite.node.active = showBottom;
- },
-
- /**
- *
- * @param {*} buildingInfo
- * @param {number} uid 目标的uid
- * @param {boolean} isSelf 判断是不是自己的界面,false是好友界面,true是自己界面
- * @param {*} artistData
- * @param {*} showTop
- * @param {*} showBottom
- */
- initWithArtistData(buildingInfo, uid, isSelf, artistData, showTop = false, showBottom = false) {
-
- this.setStyle(LevelHomeArtistItemStyle.Artist);
- this.artistData = artistData;
- this.buildingInfo = buildingInfo;
- this.uid = uid;
- this.isSelf = isSelf;
- // 自己艺人
- if (this.artistData.role === 2) {
- this.bgSprite.spriteFrame = this.artistBgSpriteFrames[0];
- } else {
- this.bgSprite.spriteFrame = this.artistBgSpriteFrames[1];
- }
-
- Api.createImageFromUrl(this.artistData.head, (spriteFrame) => {
- this.headSprite.spriteFrame = spriteFrame;
- }, null);
- this.topSprite.node.active = showTop;
- this.bototomSprite.node.active = showBottom;
- },
- onLoad () {
- this.artistNode.on(cc.Node.EventType.TOUCH_END, _.debounce(() => {
- // 去好友家园, 并且这个艺人是该家园主人的艺人, 不能点击
- if (!this.isSelf && this.artistData.role === 2) { return; }
- // 是自己的家园, 并且是自己的艺人, 弹出自己的艺人列表, 可以切换驻场艺人
- if (this.isSelf && this.artistData.role === 2) {
- AlertManager.showArtistResident(this.buildingInfo, this.uid, this.isSelf);
- } else {
- // 自己家园,驱赶好友的驻场艺人
- // 获取引导对象及引导状态
- let guide = GameModule.homeGuide.getComponent('HomeGuide')
- let guidePass = guide.guideState.state35.pass
- if(!guidePass) {
- // 如果没有触发过引导事件state35,
- // 立即触发该引导事件
- guide.handleState('state35');
- // 监听state35的点击回调,
- // 立即显示驱赶驻场艺人弹窗
- GameModule.homeGuide.on('Fire_state35', () => {
- AlertManager.showArtistOperationAlert(this.buildingInfo, this.uid, this.isSelf, this.artistData);
- // 同时显示state36的引导驱赶艺人提示
- setTimeout(() => {
- guide.handleState('state36');
- }, 400);
- })
- } else {
- // 如果已经触发过引导事件state35,
- // 跳过引导系统,直接显示弹窗内容
- AlertManager.showArtistOperationAlert(this.buildingInfo, this.uid, this.isSelf, this.artistData);
- }
- }
-
- }, 1000, true), this);
- this.handleAddArtist = _.debounce(() => {
- AlertManager.showArtistResident(this.buildingInfo, this.uid, this.isSelf);
- }, 1000, true);
- },
- setStyle(style) {
- if (this.style === style) {
- return;
- }
- switch (style) {
- case LevelHomeArtistItemStyle.Add:
- this.addBtn.node.active = true;
- this.artistNode.active = false;
- break;
- case LevelHomeArtistItemStyle.Artist:
- this.addBtn.node.active = false;
- this.artistNode.active = true;
- break;
- default:
- break;
- }
- this.style = style;
- },
- addArtist() {
- this.handleAddArtist();
- },
- update (dt) {
- if (this.style === LevelHomeArtistItemStyle.Artist
- && this.artistData
- && this.artistData.role === 4
- && this.isSelf) {
-
- let time = (Date.parse(new Date()) - this.artistData.stationTime) / 1000;
- if (time < 900) { // 入驻15分钟才可以召回
- this.tipNode.active = false;
- } else {
- this.tipNode.active = true;
- }
- }
- },
- });
|