import { EAttrTypeL1 } from "../core/EEnum";
import GameModel from "../core/GameModel";
import GameUtil from "../core/GameUtil";
import ItemUtil from "../core/ItemUtil";
import SKDataUtil from "../gear_2.3.4/util/SKDataUtil";
import Transformation from "./Transformation";
const { ccclass, property } = cc._decorator;
export default class TransformationUtil {
/**
* 變身卡工具單例實例
*/
public static Instance: TransformationUtil = new TransformationUtil();
getCardsInfo(cardId: number = 0) {
let cards = GameModel.conf_transformation;
for (let i in cards) {
for (let j in cards[i]) {
if (cards[i][j].cardid == cardId) {
return cards[i][j];
}
}
}
console.warn("未找到該變身卡信息,變身卡id:" + cardId);
return null;
}
getCardBaseDes(info): string {
var levelDesArr = ["普通", "高級", "特殊", "神獸級"];
var cardLevel = ItemUtil.getItemData(info.cardid < 500000 ? info.cardid + 400000 : info.cardid).level;
var des = `${levelDesArr[cardLevel - 1000]}五行變身卡,可${cardLevel > 1001 ? '大幅' : ''}提升能力,改變五行`;
if (info.cardstate == 0) {
// 屬性卡
des += '。\n'
} else {
var colorArr = ["00A03C", "009BFF", "D782FF", "E6641E"];
// 變身卡
des += `,並變換成[color=#${colorArr[cardLevel - 1000]}]${info.cardname}[/color]造型\n`
}
return des;
}
getCardTimeDes(info): string {
if (info.cardstate == 1)
return `【持續時間】:${info.validtime}分鐘\n`;
return "";
}
getCardAttrDes(info): string {
var attr = JSON.parse(info.gain);
var des = "";
for (let key in attr) {
if (parseInt(key) >= 70 && parseInt(key) <= 74) continue;
var str = GameUtil.getAttrTypeL1Name(parseInt(key));
console.log(`key:${key}, name:${str}`)
des += str + `${attr[key] > 0 ? '+' : ""}${attr[key]}%\n`;
}
return des;
}
getCardAttrDesOneLine(info): string {
var attr = JSON.parse(info.gain);
var des = "";
for (let key in attr) {
if (parseInt(key) >= 70 && parseInt(key) <= 74) continue;
var str = GameUtil.getAttrTypeL1Name(parseInt(key));
console.log(`key:${key}, name:${str}`)
des += str + `${attr[key] > 0 ? '+' : ""}${attr[key]}%;`;
}
des += "\n";
return des;
}
getCardWuXingDes(info): string {
var attr = JSON.parse(info.fivephases);
var des = `金:${attr.jin}木:${attr.mu}水:${attr.shui}火:${attr.huo}土:${attr.tu}`;
return des;
}
getCardDesById(cardId: number = 0): string {
var info = this.getCardsInfo(cardId);
var des = "";
des += this.getCardBaseDes(info);
des += this.getCardTimeDes(info);
des += "[color=#A35B1B]" + this.getCardAttrDes(info) + "[/color]";
des += "[color=#0096FF]" + this.getCardWuXingDes(info) + "[/color]";
return des;
}
getCardDesInfoById(cardId: number = 0, time): string {
var info = this.getCardsInfo(cardId);
var des = "";
des += this.getCardAttrDesOneLine(info);
des += "五行修煉加成 +" + this.getCardAddition(cardId) + "%\n";
var surplusTime = time - new Date().getTime();
des += "剩餘時間:" + Math.floor(surplusTime / 1000 / 60) + "分";
return des;
}
getCardAddition(cardId: number = 0, practiceData: any = Transformation.Instance.practiceData) {
if (!practiceData) {
console.warn("修煉數據錯誤");
return 0;
}
var addition = 0;
var attr = JSON.parse(this.getCardsInfo(cardId).fivephases);
for (let key in attr) {
if (attr[key] >= 0) {
addition += attr[key] / 100 * practiceData[`${key}level`];
}
}
addition *= 2;
return addition.toFixed(1);
}
/**
* 通過5行查找受影響的卡片
* @param attrType 五行屬性 金1 木2 水3 火4 土5
*/
getEffCardsByAttr(attrType: number = 0): any {
if (attrType == 6)
return GameModel.conf_transformation[0];
var keyArr = ["", "jin", "mu", "shui", "huo", "tu"];
let cards = GameModel.conf_transformation[0];
var eff, list = [];
for (let i in cards) {
eff = JSON.parse(cards[i].fivephases);
if (eff[keyArr[attrType]] > 0) {
list.push(cards[i]);
}
}
return list;
}
}