Miao-Yunzai/plugins/genshin/model/note.js

186 lines
5.4 KiB
JavaScript

import moment from "moment";
import lodash from "lodash";
import base from "./base.js";
import MysInfo from "./mys/mysInfo.js";
export default class Note extends base {
constructor(e) {
super(e);
this.model = "dailyNote";
}
/** 生成体力图片 */
static async get(e) {
let note = new Note(e);
return await note.getData();
}
async getData() {
let res = await MysInfo.get(this.e, "dailyNote");
let resUser;
if (!res || res.retcode !== 0) return false;
/** 截图数据 */
let data = this.e.isSr ? this.noteSr(res) : this.noteData(res);
let screenData = this.screenData;
if (this.e.isSr) {
screenData.tplFile = "./plugins/genshin/resources/StarRail/html/dailyNote/dailyNote.html";
resUser = await MysInfo.get(this.e,'UserGame')
if (!resUser || resUser.retcode !== 0) return false;
}
return {
name: this.e.sender.card,
quality: 80,
...screenData,
...data,...resUser?.data
};
}
noteSr(res) {
let { data } = res;
let nowDay = moment().date();
let nowUnix = Number(moment().format("X"));
/** 树脂 */
let resinMaxTime;
if (data.stamina_recover_time > 0) {
let d = moment.duration(data.stamina_recover_time, 'seconds');
let day= Math.floor(d.asDays());
let hours =d.hours()
let minutes =d.minutes()
let seconds =d.seconds()
resinMaxTime = hours+'小时'+minutes+'分钟'+seconds+'秒'
if(day>0){
resinMaxTime =day+'天'+hours+'小时'+minutes+'分钟'+seconds+'秒'
}
}
data.bfStamina = data.current_stamina / data.max_stamina * data.max_stamina +'%';
/** 派遣 */
for(let item of data.expeditions){
let d = moment.duration(item.remaining_time, 'seconds');
let day= Math.floor(d.asDays());
let hours =d.hours()
let minutes =d.minutes()
item.dateTime=([day+'天',hours+'时',minutes+'分'].filter(v => !['0天','0时','0分'].includes(v))).join('')
item.bfTime=(72000-item.remaining_time)/72000 *100 +'%'
if(item.avatars.length==1){
item.avatars.push('派遣头像')
}
}
// 标识属性图标~
let icon = lodash.sample(['希儿','白露','艾丝妲','布洛妮娅','姬子','卡芙卡','克拉拉','停云','佩拉','黑塔','希露瓦','银狼'])
let week = [
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
];
let day = `${week[moment().day()]}`;
return {
uid: this.e.uid,
saveId: this.e.uid,icon,day,
resinMaxTime,nowDay:moment(new Date()).format('YYYY年MM月DD日'),
...data,
};
}
noteData(res) {
let { data } = res;
let nowDay = moment().date();
let nowUnix = Number(moment().format("X"));
/** 树脂 */
let resinMaxTime;
if (data.resin_recovery_time > 0) {
resinMaxTime = nowUnix + Number(data.resin_recovery_time);
let maxDate = moment.unix(resinMaxTime);
resinMaxTime = maxDate.format("HH:mm");
if (maxDate.date() != nowDay) {
resinMaxTime = `明天 ${resinMaxTime}`;
} else {
resinMaxTime = ` ${resinMaxTime}`;
}
}
/** 派遣 */
let remainedTime = "";
if (data.expeditions && data.expeditions.length >= 1) {
remainedTime = lodash.map(data.expeditions, "remained_time");
remainedTime = lodash.min(remainedTime);
if (remainedTime > 0) {
remainedTime = nowUnix + Number(remainedTime);
let remainedDate = moment.unix(remainedTime);
remainedTime = remainedDate.format("HH:mm");
if (remainedDate.date() != nowDay) {
remainedTime = `明天 ${remainedTime}`;
} else {
remainedTime = ` ${remainedTime}`;
}
}
}
/** 宝钱 */
let coinTime = "";
if (data.home_coin_recovery_time > 0) {
let coinDay = Math.floor(data.home_coin_recovery_time / 3600 / 24);
let coinHour = Math.floor((data.home_coin_recovery_time / 3600) % 24);
let coinMin = Math.floor((data.home_coin_recovery_time / 60) % 60);
if (coinDay > 0) {
coinTime = `${coinDay}${coinHour}小时${coinMin}分钟`;
} else {
let coinDate = moment.unix(
nowUnix + Number(data.home_coin_recovery_time)
);
if (coinDate.date() != nowDay) {
coinTime = `明天 ${coinDate.format("HH:mm")}`;
} else {
coinTime = coinDate.format("HH:mm");
}
}
}
let week = [
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
];
let day = `${moment().format("MM-DD HH:mm")} ${week[moment().day()]}`;
/** 参量质变仪 */
if (data?.transformer?.obtained) {
data.transformer.reached = data.transformer.recovery_time.reached;
let recoveryTime = "";
if (data.transformer.recovery_time.Day > 0) {
recoveryTime += `${data.transformer.recovery_time.Day}`;
}
if (data.transformer.recovery_time.Hour > 0) {
recoveryTime += `${data.transformer.recovery_time.Hour}小时`;
}
if (data.transformer.recovery_time.Minute > 0) {
recoveryTime += `${data.transformer.recovery_time.Minute}分钟`;
}
data.transformer.recovery_time = recoveryTime;
}
return {
uid: this.e.uid,
saveId: this.e.uid,
resinMaxTime,
remainedTime,
coinTime,
day,
...data,
};
}
}