123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381 |
- import i18n from "../../../i18n/i18n";
- import { GameViewType } from "../../../main/ViewManage";
- import ViewObject from "../../../main/ViewObject";
- import { HttpStateType, ReveData } from "../../../util/CHttp";
- import GoodAbout from "../../common/GoodAbout";
- import GoodItem from "../../common/GoodItem";
- import PetIcon from "../../common/PetIcon";
- import FFCalAttr, { FFAttr } from "../../data/FFCalAttr";
- import RedPoint from "../../data/RedPoint";
- import ChangeEquip from "./ChangeEquip";
- import EquipItem from "./EquipItem";
- import EquipPack from "./EquipPack";
- import EquipQH from "./EquipQH";
- import PetInfo from "./PetInfo";
- /**
- * 宠物装备查看界面
- */
- const { ccclass, property } = cc._decorator;
- @ccclass
- export default class Equip extends ViewObject {
- @property(cc.Node)
- mPetList: cc.Node = null;//宠物列表父节点
- @property(cc.Prefab)
- mPetPrefab: cc.Prefab = null;//宠物头像
- @property(cc.Node)
- mModel: cc.Node = null;//宠物模型显示的位置
- @property([EquipItem])
- mEquips: Array<EquipItem> = [];//6件装备
- @property(cc.Prefab)
- mEquipPrefab: cc.Prefab = null;
- @property(cc.Label)
- mZdl: cc.Label = null;
- @property(cc.Label)
- mAtk: cc.Label = null;
- @property(cc.Label)
- mDef: cc.Label = null;
- @property(cc.Label)
- mHp: cc.Label = null;
- @property(cc.Label)
- mPagSize: cc.Label = null;//背包容量
- @property(cc.Label)
- mSp: cc.Label = null;
- @property(EquipPack)
- mEquipPack: EquipPack = null;//装备背包
- @property(cc.Node)
- mBtExit: cc.Node = null;//退出按钮
- public curPi: PetIcon;
- public curPage: number = 1;
- public inGuide = false;//是否引导中
- public guideStep: number = 0; //指引步骤
- /**
- * 打开伙伴的id
- * -1 打开默认的
- */
- public openId = -1;
- public httpEvent(reveData: ReveData) {
- let data = reveData.data;
- if (data._equip != undefined) {
- this.mEquipPack.setEquipType(this.curPage);
- }
- }
- public onLoad() {
- let player = this.main.player;
- let petMap = player.pet;
- let zdl = 0
- for (const id in petMap) {
- let pet = petMap[id];
- let node = cc.instantiate(this.mPetPrefab);
- let petIcon = node.getComponent(PetIcon);
- petIcon.id = parseInt(id);
- petIcon.data = pet;
- let ffAttr = FFCalAttr.getAttr(this.main, petIcon.data);
- petIcon.flushIcon(ffAttr)
- node.parent = this.mPetList;
- petIcon.setCallback((pi: PetIcon) => {
- this.checkPet(pi);
- });
- zdl += ffAttr.zdl
- }
- let msg = {
- zdl: zdl,
- }
- this.main.gameHttp.sendJson('role/v1/zdl', msg, (state, reve: ReveData) => {
- });
- }
- public setCloseCallback(callback: () => void) {
- this.closeCallback = callback
- }
- public start() {
- let nodes = this.mPetList.children;
- for (let i = 0; i < nodes.length; i++) {
- const element = nodes[i];
- let petIcon = element.getComponent(PetIcon);
- if (this.openId == -1) {
- this.openId = petIcon.data.id
- }
- if (petIcon.data.id == this.openId) {
- petIcon.onclick();
- } else {
- if (RedPoint.petRedPoint(this.main, petIcon.data)) {
- RedPoint.addRed(this.main, element)
- } else {
- RedPoint.removeRed(element)
- }
- }
- }
- if (this.inGuide) {
- if (this.guideStep == 0) {
- this.onGuide()
- } else if (this.guideStep == 1) {
- this.onGuide_1();
- }
- }
- }
- public flushPagSize() {
- let equipPag = this.main.player.equip;
- this.mPagSize.string = i18n.t('背包容量') + ':' + equipPag.length + '/500';
- }
- public checkPet(pi: PetIcon) {
- this.flushPagSize()
- this.curPi = pi;
- let sManage = this.main.sManage;
- let pet = sManage.getRoleById(pi.id);
- this.mModel.destroyAllChildren();
- let ffAttr = FFCalAttr.getAttr(this.main, pi.data);
- cc.resources.load('prefab/role/' + pet.act, cc.Prefab, (err, prefab: cc.Prefab) => {
- if (err) {
- cc.error(err);
- } else {
- let node = cc.instantiate(prefab);
- node.parent = this.mModel;
- let spriteNode = node.getChildByName('juese01');
- let spineNode0 = spriteNode.getChildByName('spineRight');
- let spine = spineNode0.getComponent(sp.Skeleton);
- let mWeapon1: sp.spine.Bone = spine.findBone('control');
- if (mWeapon1) {
- mWeapon1.data.rotation = 0;
- mWeapon1.rotation = 0;
- }
- let smoke = spriteNode.children[0]
- smoke.active = false
- // spine.setSkin(ffAttr.skin)
- // Equip.chaneWeapon(spine, ffAttr.weapon)
- }
- });
- for (let i = 0; i < this.mEquips.length; i++) {
- const element = this.mEquips[i];
- element.setNull();
- element.setCallback(() => {
- this.mEquipPack.setEquipType(i + 1);
- })
- }
- this.flushEquip(pi);
- this.flushAttr(ffAttr)
- pi.flushIcon(ffAttr)
- }
- /**
- * 切换武器
- * @param spine
- * @param attrName
- */
- public static chaneWeapon(skeleton, attrName: string) {
- return
- let slotName1 = '1';
- let slotName2 = '2';
- let targetSkinName = 'default';
- let targetAttaName1 = attrName + '/1';
- let targetAttaName2 = attrName + '/2';
- const skeletonData = skeleton.skeletonData.getRuntimeData();
- const skin = skeletonData.findSkin(targetSkinName);
- let slot1: sp.spine.Slot = skeleton.findSlot(slotName1);
- let slot2: sp.spine.Slot = skeleton.findSlot(slotName2);
- const slotIndex1 = skeletonData.findSlotIndex(slotName1);
- const atta1 = skin.getAttachment(slotIndex1, targetAttaName1);
- const slotIndex2 = skeletonData.findSlotIndex(slotName2);
- const atta2 = skin.getAttachment(slotIndex2, targetAttaName2);
- if (slot1) {
- slot1.setAttachment(atta1);
- }
- if (slot2) {
- slot2.setAttachment(atta2);
- }
- }
- public flushEquip(pi: PetIcon) {
- let equips = pi.data.equips;
- for (let i = 0; i < equips.length; i++) {
- const element = equips[i];
- let equipData = this.main.sManage.getEquipById(element.id);
- let siteIndex = equipData.type - 1
- let mEquip = this.mEquips[siteIndex];
- mEquip.initEquip(this.main, element);
- mEquip.setCallback((pp: GoodItem) => {
- this.openGoodAbout(pp);
- });
- }
- this.mEquipPack.init(pi);
- }
- public flushAttr(ffAttr: FFAttr) {
- this.mZdl.string = '' + ffAttr.zdl
- this.mAtk.string = '' + ffAttr.atk;
- this.mDef.string = '' + ffAttr.def;
- this.mHp.string = '' + ffAttr.hp;
- this.mSp.string = '' + ffAttr.sp;
- }
- /**
- * 打开详细说明
- */
- public openInfo() {
- this.main.viewManage.loadFunc(GameViewType.petInfo, (viewObject: ViewObject) => {
- let petInfo = viewObject as PetInfo;
- petInfo.init(this.curPi)
- viewObject.show();
- });
- }
- /**
- * 打开换装界面
- * @param equipItem
- */
- public openChangeEquip(equipItem: GoodItem) {
- this.main.viewManage.loadFunc(GameViewType.changeEquip, (viewObject: ViewObject) => {
- let changeEquip = viewObject as ChangeEquip;
- changeEquip.equip = this
- let type = equipItem.equipData.type
- changeEquip.inGuide = this.inGuide
- changeEquip.guideStep = this.guideStep;
- this.inGuide = false
- changeEquip.init(this.curPi, equipItem, this.mEquips[type - 1]);
- viewObject.show();
- });
- }
- /**
- * 查看物品
- * @param goodItem
- */
- private openGoodAbout(goodItem: GoodItem) {
- this.main.viewManage.loadFunc(GameViewType.goodAbout, (viewObject: ViewObject) => {
- let goodAbout = viewObject as GoodAbout;
- goodAbout.inGuide = this.inGuide;
- goodAbout.guideStep = this.guideStep;
- goodAbout.init(goodItem)
- viewObject.show();
- goodAbout.setQHCallback((gdItem: GoodItem) => {
- goodAbout.exitDistroy()
- this.openIntensifyEquip(gdItem)
- })
- if (goodItem.equipData.type == 5) {//服装可以卸下
- goodAbout.mUnInstallNode.active = true
- goodAbout.setUnCallback((gdItem: GoodItem) => {
- goodAbout.exitDistroy()
- this.uninstallEquip(gdItem)
- })
- }
- });
- }
- /**
- * 装备强化
- */
- public openIntensifyEquip(goodItem: GoodItem) {
- this.main.viewManage.loadFunc(GameViewType.IntensifyEquip, (viewObject: ViewObject) => {
- let equipQH: EquipQH = viewObject as EquipQH;
- equipQH.inGuide = this.inGuide;
- equipQH.guideStep = this.guideStep;
- equipQH.init(goodItem.equip, this.curPi, this)
- viewObject.show();
- if (this.inGuide) {
- if (this.guideStep == 1) {
- equipQH.setCloseCallback(() => {
- this.onGuideExit();
- })
- }
- }
- });
- }
- private uninstallEquip(goodItem: GoodItem) {
- let msg = {
- petId: this.curPi.id,
- equipId: goodItem.equip.id,
- }
- this.main.gameHttp.sendJson('equip/v1/uninstall', msg, (state, reve: ReveData) => {
- this.main.stopLoad();
- if (state == HttpStateType.SUCCESS) {
- if (reve.retCode == 0) {
- this.checkPet(this.curPi)
- } else {
- this.main.showTips(reve.message);
- }
- } else {
- this.main.showTips('网络异常');
- }
- });
- }
- /**
- * 开始引导穿装备
- */
- private onGuide() {
- let guideMask = this.main.mGuideMask
- let targetNode = this.mEquipPack.mPagContent.children[0]
- guideMask.setTargetNode(targetNode)
- guideMask.show()
- let equipItem = targetNode.getComponent(GoodItem)
- equipItem.inGuide = true
- equipItem.setGuideCallback(() => {
- guideMask.close()
- })
- }
- /**
- * 强化指引
- */
- private onGuide_1() {
- let guideMask = this.main.mGuideMask;
- let targetNode = this.mEquips[0].node;
- guideMask.setTargetNode(targetNode)
- guideMask.show()
- let equipItem = targetNode.getComponent(GoodItem)
- equipItem.inGuide = true
- equipItem.setGuideCallback(() => {
- guideMask.close()
- })
- }
- public onGuideExit() {
- let guideMask = this.main.mGuideMask
- let targetNode = this.mBtExit
- guideMask.setTargetNode(targetNode)
- guideMask.show()
- let closeCallback = this.closeCallback
- this.setCloseCallback(() => {
- guideMask.close()
- if (closeCallback) {
- closeCallback()
- }
- })
- }
- }
|