import Stage from "./stage/Stage"; import Pack from "./pack/Pack"; import ViewObject from "../../main/ViewObject"; import { HttpStateType, ReveData } from "../../util/CHttp"; import { AudioMgr, GameViewType } from "../../main/ViewManage"; import ShopView from "./shop/ShopView"; import Equip from "./equip/Equip"; import FFCalAttr from "../data/FFCalAttr"; import { PetAttr } from "../data/udata/Player"; import RedPoint from "../data/RedPoint"; import FirstPay from "./activity/FirstPay"; import TopMenu from "./TopMenu"; import Wish from "./activity/Wish"; import Revenge from "./activity/Revenge"; import CUtilTime from "../../util/CUtilTime"; /** * 主页home */ const { ccclass, property } = cc._decorator; @ccclass export default class Home extends ViewObject { @property(cc.Label) mZdl: cc.Label = null; @property(cc.Label) mPower: cc.Label = null; @property(cc.Label) mMoney: cc.Label = null; @property(cc.Label) mGold: cc.Label = null; @property(cc.Sprite) mIcon: cc.Sprite = null; @property(cc.Sprite) mFrame: cc.Sprite = null; @property(cc.Node) activityNode: cc.Node = null; @property(cc.Node) mEmailNode: cc.Node = null; @property(sp.Skeleton) mRole1: sp.Skeleton = null; @property(sp.Skeleton) mRole2: sp.Skeleton = null; @property(sp.Skeleton) mRole3: sp.Skeleton = null; @property(cc.Node) mEquipNode: cc.Node = null; @property(cc.Node) revengeBtn: cc.Node = null; public revengeTime: number = 0; public topMenu: TopMenu = null; public revengeView: Revenge = null; /** * 用户点击了冒险按钮回调 */ private mxCallback: () => void; onLoad() { //心跳60秒执行一次 this.hit() this.schedule(this.hit, 15) this.flushActivity(); this.topMenu = this.main.topNode.getComponent(TopMenu); this.topMenu.main = this.main; this.topMenu.home = this; this.main.topNode.active = true; this.main.playMusicByPath(AudioMgr.homeMusic); this.node.getChildByName("activity").getChildByName("1002").active = !this.main.player.isNew; this.getPay() } public hit() { this.main.gameHttp.sendJson('role/v1/resumePower', {}, (state, reve: ReveData) => { }); } public onEnable() { this.flush() this.flushZdl() this.flushRole() this.flushEquipRedPoint(); if (cc.sys.localStorage.getItem("showRevenge" + this.main.player.role.id) == 1) { this.activiteRevenge(); } else { this.getRevengeData(); } } private getPay() { let msg = { } this.main.gameHttp.sendJson('pay/v1/checkPay1', msg, (state, reve: ReveData) => { if (state == HttpStateType.SUCCESS) { if (reve.retCode == 0) { this.main.showReward(reve) } } else { } }); } public flushZdl() { this.main.player.flushZdl(this.main) let role = this.main.player.role; this.mZdl.string = '' + role.zdl; } public flush() { let role = this.main.player.role; let roleIcon = this.main.sManage.getRoleIconById(role.icon) if (roleIcon) { cc.resources.load('icon/role_head/' + roleIcon.icon, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => { if (err) { cc.error(err); } else { this.mIcon.spriteFrame = spriteFrame; } }); } let roleFrame = this.main.sManage.getRoleIconById(role.frame) if (roleFrame) { cc.resources.load('icon/role_head/txk/' + roleFrame.icon, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => { if (err) { cc.error(err); } else { this.mFrame.spriteFrame = spriteFrame; } }); } } public flushRole() { let pet1 = this.main.player.getPet(1) this.updateRole(pet1, this.mRole1); let pet2 = this.main.player.getPet(2) this.updateRole(pet2, this.mRole2); let pet3 = this.main.player.getPet(3) this.updateRole(pet3, this.mRole3); } public flushActivity() { this.main.gameHttp.sendJson(`firstPay/v1/data`, {}, (state, reve: ReveData) => { if (state == HttpStateType.SUCCESS) { if (reve.retCode == 0) { if (reve.data.firstPay.count == 3) { this.activityNode.getChildByName("1001").active = false; } } else { this.main.showTips(reve.message); } } else { this.main.showTips('网络异常'); } }); } private updateRole(pet: PetAttr, spine: sp.Skeleton) { if (pet == null) { spine.node.active = false } else { spine.node.active = true let mWeapon1: sp.spine.Bone = spine.findBone('control'); if (mWeapon1) { // mWeapon1.data.rotation = 45; mWeapon1.rotation = -45; } // let attrData = FFCalAttr.getAttr(this.main, pet); // if (attrData.skin) { // spine.setSkin(attrData.skin) // } // if (attrData.weapon) { // Equip.chaneWeapon(spine, attrData.weapon) // } } } /** * 监听网络 * @param reveData */ public httpEvent(reveData: ReveData) { let data = reveData.data; if (data._role != undefined) { // this.flush(); this.topMenu.refresh(); } this.flushZdl(); if (data._equip != undefined) { this.flushEquipRedPoint(true); } //['email'] if (data._msgPush != undefined) { if (data._msgPush.indexOf('email') >= 0) {//有新邮件 RedPoint.addRed(this.main, this.topMenu.mEmailNode, true) } } } /** * 刷新角色红点 */ public flushEquipRedPoint(force?: boolean) { if (RedPoint.petsRedPoint(this.main)) { RedPoint.addRed(this.main, this.mEquipNode, force) } else { RedPoint.removeRed(this.mEquipNode) } } /** * 角色查看 */ public onclickRoleIcon() { this.main.playerEffectByPath(AudioMgr.click); this.main.viewManage.loadFunc(GameViewType.tap_role, (viewObject: ViewObject) => { viewObject.show(); }); } public setMxCallback(callback: () => void) { this.mxCallback = callback } /** * 地图 */ public onclickMap() { this.main.playerEffectByPath(AudioMgr.click); let isNewGuide = false if (this.mxCallback) { this.mxCallback() isNewGuide = true } this.main.viewManage.loadFunc(GameViewType.stageView, (viewObject: ViewObject) => { let stage = viewObject as Stage; stage.load((result: number) => { if (result == 0) { if (isNewGuide) { stage.inGuide = 1 } viewObject.show(this); } else { this.main.showTips('载入地图失败') } }); }); } /** * 背包 */ public onclickPack() { // if (Pack.instance) { // Pack.instance.flush(); // Pack.instance.show(); // } else { // } this.main.playerEffectByPath(AudioMgr.click); this.main.startLoad(); this.main.viewManage.loadFunc(GameViewType.pack, (viewObject: ViewObject) => { viewObject.show(this); }); } /** * 神卡 */ public onclickJitan() { this.main.playerEffectByPath(AudioMgr.click); this.main.viewManage.loadFunc(GameViewType.god_card, (viewObject: ViewObject) => { viewObject.show(this); }); } /** * 装备 */ public onclickEquip() { this.main.playerEffectByPath(AudioMgr.click); this.main.startLoad(); RedPoint.removeRed(this.mEquipNode) this.main.viewManage.loadFunc(GameViewType.equip, (viewObject: ViewObject) => { viewObject.show(this); }); } /** * 魔盒 */ public onclickMohe() { this.main.playerEffectByPath(AudioMgr.click); this.main.viewManage.loadFunc(GameViewType.mohe, (viewObject: ViewObject) => { viewObject.show(this); }); } /** * 商城 */ public openShop(eventTouch: cc.Event.EventTouch, data: string) { this.main.playerEffectByPath(AudioMgr.click); this.main.startLoad(); this.main.viewManage.loadFunc(GameViewType.tap_shop, (viewObject: ViewObject) => { let shopView = viewObject as ShopView; shopView.init(Number(data)); shopView.show(); }); } /** * 首冲 */ public openFirstPay(eventTouch: cc.Event.EventTouch, data: string) { this.main.playerEffectByPath(AudioMgr.click); this.main.startLoad(); this.main.viewManage.loadFunc(GameViewType.firstPay, (viewObject: ViewObject) => { let firstPayView = viewObject as FirstPay; firstPayView.getFirstPayData("data"); }); } /** * 每日祝福 */ public openWish(eventTouch: cc.Event.EventTouch, data: string) { this.main.playerEffectByPath(AudioMgr.click); this.main.startLoad(); this.main.viewManage.loadFunc(GameViewType.wish, (viewObject: ViewObject) => { let wishView = viewObject as Wish; wishView.getWishData(); }); } /** * 复仇礼包 */ public openRevenge() { this.main.playerEffectByPath(AudioMgr.click); this.main.startLoad(); this.main.viewManage.loadFunc(GameViewType.revenge, (viewObject: ViewObject) => { let revengeView = viewObject as Revenge; this.revengeView = revengeView; revengeView.getRevengeData(); revengeView.refreshTime(this.revengeTime); revengeView.setBuyClickFunc(() => { this.showRevengeBtn(false); }) }); } // 激活复仇礼包 public activiteRevenge() { let msg = { id: 1001, }; this.main.gameHttp.sendJson(`revenge/v1/open`, msg, (state, reve: ReveData) => { this.main.stopLoad(); if (state == HttpStateType.SUCCESS) { if (reve.retCode == 0) { console.log("====复仇礼包激活成功==="); this.getRevengeData(); } else { this.main.showTips(reve.message); } } else { this.main.showTips('网络异常'); } }) } public getRevengeData() { let msg = {}; let nowTime1 = CUtilTime.getNowTime(); this.main.gameHttp.sendJson(`revenge/v1/data`, msg, (state, reve: ReveData) => { let nowTime2 = CUtilTime.getNowTime() - nowTime1; this.main.stopLoad(); if (state == HttpStateType.SUCCESS) { if (reve.retCode == 0) { console.log("=home=reve=revengeData===", reve) let data = reve.data.data[reve.data.list[0].id]; if (data) { if (data.value == 2) { // 购买过 this.showRevengeBtn(false); return } let time = data.time; if (time > 0) { this.showRevengeBtn(true); this.revengeTime = time - nowTime2; this.revengeBtn.getChildByName("time").getComponent(cc.Label).string = `剩余 ${CUtilTime.getTimeString2(time - nowTime2)}`; } else { this.showRevengeBtn(false); } } if (cc.sys.localStorage.getItem("showRevenge" + this.main.player.role.id) == 1) { cc.sys.localStorage.setItem("showRevenge" + this.main.player.role.id, 2); this.main.viewManage.loadFunc(GameViewType.revenge, (viewObject: ViewObject) => { let revengeView = viewObject as Revenge; this.revengeView = revengeView; revengeView.revengeData = reve.data.list[0]; revengeView.show(); revengeView.initItem(); revengeView.refreshTime(this.revengeTime); revengeView.setBuyClickFunc(() => { this.showRevengeBtn(false); }) }); } } else { this.main.showTips(reve.message); } } else { this.main.showTips('网络异常'); } }); } showRevengeBtn(show = false) { this.revengeBtn.active = show; } tempTime: number = 0; update(dt) { if (this.revengeTime <= 0) { this.showRevengeBtn(false); if (this.revengeView) { this.revengeView.exitDistroy(); } return } this.tempTime += dt; if (this.tempTime >= 1) { this.revengeTime -= 1; this.revengeBtn.getChildByName("time").getComponent(cc.Label).string = `剩余 ${CUtilTime.getTimeString2(Math.floor(this.revengeTime))}`; this.tempTime = 0; if (this.revengeView) { this.revengeView.refreshTime(this.revengeTime); } } } }