miao-plugin/components/models/Character.js

90 lines
2.3 KiB
JavaScript
Raw Normal View History

2022-03-24 13:14:22 +00:00
import Base from "./Base.js";
import lodash from "lodash";
import fs from "fs";
2022-03-26 08:21:44 +00:00
import Data from "../Data.js";
import request from "request";
import path from "path";
2022-04-08 21:52:05 +00:00
import sizeOf from "image-size";
2022-03-24 13:14:22 +00:00
2022-03-26 08:21:44 +00:00
let characterMap = {};
2022-04-03 22:06:03 +00:00
const _path = process.cwd();
let genshin = await import(`file://${_path}/config/genshin/roleId.js`);
2022-03-26 08:21:44 +00:00
class Character extends Base {
constructor(name) {
console.log('constructor', name)
2022-03-26 08:21:44 +00:00
super();
this.name = name;
let data = Data.readJSON(`${_path}/plugins/miao-plugin/resources/meta/character/${this.name}/`, "data.json");
lodash.extend(this, data);
}
2022-04-08 21:52:05 +00:00
getCardImg(def = true) {
let name = this.name;
if (!fs.existsSync(`./plugins/miao-plugin/resources/character-img/${name}/`)) {
fs.mkdirSync(`./plugins/miao-plugin/resources/character-img/${name}/`);
}
let list = {};
let imgs = fs.readdirSync(`./plugins/miao-plugin/resources/character-img/${name}/`);
imgs = imgs.filter((img) => /\.(png|jpg|webp)/.test(img));
lodash.forEach(imgs, (img) => {
list[img] = `character-img/${name}/${img}`
});
const plusPath = `./plugins/miao-plugin/resources/miao-res-plus/`;
if (fs.existsSync(plusPath)) {
if (!fs.existsSync(`${plusPath}/character-img/${name}/`)) {
fs.mkdirSync(`${plusPath}/character-img/${name}/`);
}
2022-04-08 21:52:05 +00:00
let imgs = fs.readdirSync(`${plusPath}/character-img/${name}/`);
imgs = imgs.filter((img) => /\.(png|jpg|webp)/.test(img));
lodash.forEach(imgs, (img) => {
list[img] = `miao-res-plus/character-img/${name}/${img}`
});
}
2022-04-08 21:52:05 +00:00
let img = lodash.sample(lodash.values(list));
if (!img) {
if (def) {
img = "/character-img/default/01.jpg";
} else {
return false
}
}
let ret = sizeOf(`./plugins/miao-plugin/resources/${img}`);
ret.img = img;
ret.mode = ret.width > ret.height ? "left" : "bottom";
return ret;
}
2022-03-26 08:21:44 +00:00
}
2022-03-24 13:14:22 +00:00
Character.get = function (val) {
let roleid;
if (typeof (val) === "number") {
roleid = val;
} else {
roleid = YunzaiApps.mysInfo['roleIdToName'](val);
}
2022-03-26 08:21:44 +00:00
let name = YunzaiApps.mysInfo['roleIdToName'](roleid, true);
if (!name) {
return false;
}
return new Character(name);
2022-03-24 13:14:22 +00:00
};
Character.getAbbr = function () {
return genshin.abbr;
}
2022-03-24 13:14:22 +00:00
export default Character;