import Main from "../../../main/Main"; import GoodItem from "../../common/GoodItem"; import PetIcon from "../../common/PetIcon"; import FFCalAttr from "../../data/FFCalAttr"; import RedPoint from "../../data/RedPoint"; import { __EquipData } from "../../data/sdata/SManage"; import { EquipAttr } from "../../data/udata/Player"; import Equip from "./Equip"; /** * 装备背包 */ const {ccclass, property} = cc._decorator; @ccclass export default class EquipPack extends cc.Component { @property(cc.Node) mPagContent: cc.Node = null; @property(cc.ScrollView) mPagScrollView: cc.ScrollView = null; @property(cc.Prefab) mEquipItem: cc.Prefab = null; @property([cc.Node]) mButtonItem: Array = []; @property(cc.SpriteFrame) mCheckIcon: cc.SpriteFrame = null; @property(cc.SpriteFrame) mNoCheckIcon: cc.SpriteFrame = null; @property mCheckX = -282 @property mNoCheckX = -267 public main:Main; public petIcon:PetIcon; /** * 装备类型 */ public equipType:number = 1; public equip:Equip; onLoad(){ this.equip = this.node.getComponent(Equip) this.main = this.equip.main; } /** * @param pi 穿装备的伙伴 * @param equipItem 选择的装备 */ public init(pi:PetIcon){ this.petIcon = pi; for (let i = 0; i < this.mButtonItem.length; i++) { const element = this.mButtonItem[i]; RedPoint.removeRed(element) } this.setEquipType(this.equipType) this.flushRedPoint() } //根据每个类型刷新按钮红点 public flushRedPoint(){ let equip = this.main.player.equip for (let i = 0; i < equip.length; i++) { const element = equip[i]; if (RedPoint.equipRedPoint(this.main, element, this.petIcon.data)) { let _equipA: __EquipData = this.main.sManage.getEquipById(element.id); if(_equipA.type < this.mButtonItem.length ){ let btNode = this.mButtonItem[_equipA.type-1] RedPoint.addRed(this.main,btNode,true,true) } } } } public setEquipType(equipType:number){ this.mPagScrollView.stopAutoScroll() this.mPagScrollView.scrollToTop() this.equipType = equipType; this.equip.curPage = equipType; this.flushPag() for (let i = 0; i < this.mButtonItem.length; i++) { const element = this.mButtonItem[i]; let sprite = element.getComponent(cc.Sprite) if(i == this.equipType - 1){ sprite.spriteFrame = this.mCheckIcon element.x = this.mCheckX }else{ sprite.spriteFrame = this.mNoCheckIcon element.x = this.mNoCheckX } } } /** * 刷新背包 */ public flushPag(){ if(this.mPagContent.children.length <= 0){ for (let i = 0; i < 30; i++) { let node = cc.instantiate(this.mEquipItem); node.parent = this.mPagContent; } } this.flushEquip(); } /** * 刷新装备 */ public flushEquip(){ //筛选职业和类型符合的装备 let pet = this.main.sManage.getRoleById(this.petIcon.id); let equips = this.main.player.equip; let index = 0; let content = this.mPagContent; for (let i = 0; i < equips.length; i++) { const element = equips[i]; let _equip = this.main.sManage.getEquipById(element.id); if(_equip.type == this.equipType && (_equip.occ == 0 || pet.post == _equip.occ)){ if(index >= content.children.length){ this.addItem(content); } let node = content.children[index]; RedPoint.removeRed(node) let equipItem = node.getComponent(GoodItem); equipItem.initEquip(this.main,element); equipItem.setCallback((gi)=>{ this.checkEquip(gi); }); let equipAttr = FFCalAttr.getEquipAttr(this.main,equipItem.equip,equipItem.equipData) let zIndex = cc.macro.MAX_ZINDEX - equipAttr.zdl if(zIndex < cc.macro.MIN_ZINDEX){ zIndex = cc.macro.MIN_ZINDEX } node.zIndex = zIndex index ++; } } for (let i = index; i < content.children.length; i++){ let node = content.children[i]; RedPoint.removeRed(node) let equipItem = node.getComponent(GoodItem); equipItem.setNull(); node.zIndex = cc.macro.MAX_ZINDEX - 1 } } private addItem(content:cc.Node){ for (let i = 0; i < 5; i++) { let node = cc.instantiate(this.mEquipItem); node.parent = content; } } public checkEquip(equipItem:GoodItem){ this.equip.openChangeEquip(equipItem); } /** * 点击切换装备栏 */ public onclickType(event,customEventData){ let equipType = parseInt(customEventData) this.setEquipType(equipType) } }