2025-04-24 17:03:28 +08:00

255 lines
9.0 KiB
JavaScript

import Bag from "../../ts/bag/Bag";
import GameModel from "../../ts/core/GameModel";
import ItemUtil from "../../ts/core/ItemUtil";
import SkillUtil from "../../ts/game/skill/core/SkillUtil";
import PopupManager from "../../ts/gear_2.3.4/manager/PopupManager";
import SKDataUtil from "../../ts/gear_2.3.4/util/SKDataUtil";
cc.Class({
extends: cc.Component,
properties: {
leftScrollView: cc.ScrollView,
equitScrollView: cc.ScrollView,
skillScrollView: cc.ScrollView,
leftContent: cc.Node,
typeItem: cc.Node,
suitItem: cc.Node,
equitItem: cc.Node,
suitName: cc.Label,
skillItem: cc.Node,
},
onLoad() {
this.mRace = 11;
this.mRaceIndex = 0;
this.open = false;
this.occups = {
1: [], 2: [], 3: [], 4: [], 5: [], 9: []
};
let baldric_suit = SKDataUtil.clone(GameModel.game_conf.baldric_suit);
let baldric_suits = Object.values(baldric_suit);
// this.baldric_suits = baldric_suits.filter(function(value){
// return value.grade == 1;
// });
let baldric = SKDataUtil.clone(GameModel.game_conf.baldric);
let item = SKDataUtil.clone(GameModel.game_conf.item);
this.baldric = baldric;
this.item = item;
for (let k in baldric_suits) {
let race = baldric_suits[k].race;
this.occups[race].push(baldric_suits[k]);
}
this.RaceTypes = [];
for (let k in this.occups) {
let data = {};
if (k == 1) {
data.name = "男人";
data.race = k + "1";
data.sex = 1;
data.value = this.occups[k];
this.RaceTypes.push(data);
let cdata = SKDataUtil.clone(data)
cdata.name = "女人";
cdata.race = k + "0";
cdata.sex = 2;
this.RaceTypes.push(cdata);
} else if (k == 2) {
data.name = "男仙";
data.race = k + "1";
data.sex = 1;
data.value = this.occups[k];
this.RaceTypes.push(data);
let cdata = SKDataUtil.clone(data)
cdata.name = "女仙";
cdata.race = k + "0";
cdata.sex = 2;
this.RaceTypes.push(cdata);
} else if (k == 3) {
data.name = "男魔";
data.race = k + "1";
data.sex = 1;
data.value = this.occups[k];
this.RaceTypes.push(data);
let cdata = SKDataUtil.clone(data)
cdata.name = "女魔";
cdata.race = k + "0";
cdata.sex = 2;
this.RaceTypes.push(cdata);
} else if (k == 4) {
data.name = "男鬼";
data.race = k + "1";
data.sex = 1;
data.value = this.occups[k];
this.RaceTypes.push(data);
let cdata = SKDataUtil.clone(data)
cdata.name = "女鬼";
cdata.race = k + "0";
cdata.sex = 2;
this.RaceTypes.push(cdata);
} else if (k == 5) {
data.name = "男龍";
data.race = k + "1";
data.sex = 1;
data.value = this.occups[k];
this.RaceTypes.push(data);
let cdata = SKDataUtil.clone(data)
cdata.name = "女龍";
cdata.race = k + "0";
cdata.sex = 2;
this.RaceTypes.push(cdata);
} else if (k == 9) {
data.name = "通用";
data.race = k + "1";
data.sex = 9;
data.value = this.occups[k];
this.RaceTypes.push(data);
}
}
// let tempRaceTypes = [];
for (let k in this.RaceTypes) {
let values = this.RaceTypes[k].value;
this.RaceTypes[k].value = [];
let group = -1;
let name = "";
for (let i = 0; i < values.length; i++) {
if (group != values[i].group && name != values[i].name) {
if (this.RaceTypes[k].sex == this.baldric[values[i].list[0]].Sex || this.baldric[values[i].list[0]].Sex == 9)
this.RaceTypes[k].value.push(values[i]);
group = values[i].group;
name = values[i].name;
}
}
}
this.showLeftList();
this.init();
},
showLeftList() {
this.leftContent.removeAllChildren();
for (let k in this.RaceTypes) {
let item = cc.instantiate(this.typeItem);
item.parent = this.leftContent;
let btn = item.getChildByName("temBtn").getComponent(cc.Button);
btn.clickEvents[0].customEventData = this.RaceTypes[k].race;
item.getChildByName("temBtn").getChildByName("TextName").getComponent(cc.Label).string = this.RaceTypes[k].name;
item.name = "Layout_" + this.RaceTypes[k].race;
let Content = item.getChildByName("Content");
Content.removeAllChildren();
}
},
showTypeList() {
let Layout = this.leftScrollView.content.getChildByName("Layout_" + this.mRace);
if (Layout) {
Layout.getChildByName("temBtn").getChildByName("ImageFold").angle = 180;
let Content = Layout.getChildByName("Content");
// let item = Content.getChildByName("BtnSubTemplete");
let raceTypes = this.getSuitByRace(this.mRace);
Content.removeAllChildren();
for (let i = 0; i < raceTypes.length; i++) {
let ritem = cc.instantiate(this.suitItem);
ritem.active = true;
let equitData = this.baldric[(raceTypes[i].list[0])];
ritem.getChildByName("ImageIcon").getComponent(cc.Sprite).spriteFrame = ItemUtil.getItemIconBy(equitData);
ritem.getChildByName("TextName").getComponent(cc.Label).string = raceTypes[i].name;
ritem.parent = Content;
let btn = ritem.getComponent(cc.Button);
btn.clickEvents[0].customEventData = i;
}
}
},
getSuitByRace(race) {
for (let k in this.RaceTypes) {
if (this.RaceTypes[k].race == race) {
return this.RaceTypes[k].value;
}
}
return null;
},
closeLeftList() {
for (let k in this.RaceTypes) {
let typeItem = this.leftContent.getChildByName("Layout_" + this.RaceTypes[k].race);
typeItem.getChildByName("temBtn").getChildByName("ImageFold").angle = 0;
let Content = typeItem.getChildByName("Content");
Content.removeAllChildren();
Content.height = 7;
}
},
onBtnTypeClick(event, customEventData) {
this.closeLeftList();
if (this.mRace == customEventData && this.open) {
this.open = false;
} else {
this.mRace = customEventData;
this.showTypeList();
this.open = true;
}
// let suits = this.getSuitByRace(customEventData);
},
init() {
let suits = this.getSuitByRace(this.mRace);
this.suitInfo = suits[0];
this.showRightSuitInfo();
},
onBtnSuitClick(event, customEventData) {
let suits = this.getSuitByRace(this.mRace);
this.suitInfo = suits[Number(customEventData)];
cc.log(this.suitInfo);
this.showRightSuitInfo();
},
showRightSuitInfo() {
this.suitName.string = this.suitInfo.name;
let skills = ItemUtil.getSuitSkillGroup(this.suitInfo.group);
this.skillScrollView.content.removeAllChildren();
let colors = ['#4AD558', '#3347F6', '#F633E3'];
for (let i = 0; i < skills.length; i++) {
let skill = skills[i];
let item = cc.instantiate(this.skillItem);
item.parent = this.skillScrollView.content;
let key = skill.icon;
let spriteFrame = ItemUtil.getItemIcon(key);
if (!spriteFrame) {
cc.warn(`$警告:缺少配飾技能圖標:${key}`);
} else {
item.getChildByName("ImageSkill").getComponent(cc.Sprite).spriteFrame = spriteFrame;
}
item.getChildByName("TextName").getComponent(cc.Label).string = skill.name;
let skillDesc = skill.getSuitDesc(false);
skillDesc = ("<color=" + colors[i] + ">") + skillDesc + "</color>";
item.getChildByName("TextDesc").getComponent(cc.RichText).string = skillDesc;
}
this.equitScrollView.content.removeAllChildren();
let list = this.suitInfo.list;
for (let i = 0; i < list.length; i++) {
let suit = this.item[list[i]];
let item = cc.instantiate(this.equitItem);
item.parent = this.equitScrollView.content;
item.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = ItemUtil.getItemIcon(suit.icon);
}
},
onCloseClick() {
PopupManager.closeView(this.node.name);
Bag.Instance.showBagPanel();
},
})