mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-09 08:48:21 +08:00
fix(dev): dev 页面添加 merge 处理
This commit is contained in:
@@ -8,6 +8,9 @@
|
||||
<v-list-item @click="parseAchievement()" prepend-icon="mdi-export">
|
||||
<v-list-item-title>解析成就数据</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="mergeAchievement()" prepend-icon="mdi-export">
|
||||
<v-list-item-title>合并成就数据</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-card>
|
||||
</template>
|
||||
@@ -30,7 +33,10 @@ import {
|
||||
import {
|
||||
Achievement as TGAchievement,
|
||||
AchievementSeries as TGAchievementSeries,
|
||||
AchievementSeriesDisplay as TGAchievementSeriesDisplay,
|
||||
AchievementDisplay as TGAchievementDisplay,
|
||||
} from "../interface/achievements";
|
||||
import { TGAppData } from "../data";
|
||||
|
||||
export default defineComponent({
|
||||
name: "Dev",
|
||||
@@ -51,23 +57,23 @@ export default defineComponent({
|
||||
async parseAchievement() {
|
||||
const appStore = useAppStore();
|
||||
const appDataDir = appStore.dataPath.app;
|
||||
await console.log("正在读取原始数据...");
|
||||
console.log("正在读取原始数据...");
|
||||
// 读取原始数据
|
||||
await console.log("正在读取 Snap.Hutao 数据库...");
|
||||
console.log("正在读取 Snap.Hutao 数据库...");
|
||||
const hutaoAchievementData: HutaoAchievement[] = SnapHutaoData.Achievement.data;
|
||||
await console.log("读取胡桃成就数据成功!");
|
||||
console.log("读取胡桃成就数据成功!");
|
||||
const hutaoAchievementGoalData: HutaoAchievementGoal[] =
|
||||
SnapHutaoData.AchievementGoal.data;
|
||||
await console.log("读取胡桃成就系列数据成功!");
|
||||
await console.log("正在读取 Paimon.moe 数据库...");
|
||||
console.log("读取胡桃成就系列数据成功!");
|
||||
console.log("正在读取 Paimon.moe 数据库...");
|
||||
const paimonAchievementJsonData: PaimonAchievementJson = PaimonMoeData.Achievement.data;
|
||||
await console.log("读取 Paimon.moe 成就数据成功!");
|
||||
console.log("读取 Paimon.moe 成就数据成功!");
|
||||
// 新建目标数据
|
||||
await console.log("正在生成目标数据...");
|
||||
console.log("正在生成目标数据...");
|
||||
const achievementSeries: TGAchievementSeries[] = [];
|
||||
const achievement: TGAchievement[] = [];
|
||||
// 先解析 Hutao 的成就数据
|
||||
await console.log("正在解析胡桃成就系列数据...");
|
||||
console.log("正在解析胡桃成就系列数据...");
|
||||
hutaoAchievementGoalData.map(hutaoAchievementGoal => {
|
||||
const achievementSeriesItem: TGAchievementSeries = {
|
||||
id: hutaoAchievementGoal.Id,
|
||||
@@ -77,8 +83,8 @@ export default defineComponent({
|
||||
};
|
||||
achievementSeries.push(achievementSeriesItem);
|
||||
});
|
||||
await console.log("解析胡桃成就系列数据成功!");
|
||||
await console.log("正在解析胡桃成就数据...");
|
||||
console.log("解析胡桃成就系列数据成功!");
|
||||
console.log("正在解析胡桃成就数据...");
|
||||
hutaoAchievementData.map(hutaoAchievement => {
|
||||
const achievementItem: TGAchievement = {
|
||||
id: hutaoAchievement.Id,
|
||||
@@ -92,9 +98,9 @@ export default defineComponent({
|
||||
};
|
||||
achievement.push(achievementItem);
|
||||
});
|
||||
await console.log("解析胡桃成就数据成功!");
|
||||
console.log("解析胡桃成就数据成功!");
|
||||
// 再解析 Paimon.moe 的成就数据
|
||||
await console.log("正在解析 Paimon.moe 成就数据...");
|
||||
console.log("正在解析 Paimon.moe 成就数据...");
|
||||
for (let paimonAchievementJsonDataKey in paimonAchievementJsonData) {
|
||||
const paimonSeries: PaimonAchievementSeries =
|
||||
paimonAchievementJsonData[paimonAchievementJsonDataKey];
|
||||
@@ -154,23 +160,87 @@ export default defineComponent({
|
||||
achievementSeriesItem.version = achievementVersion;
|
||||
}
|
||||
}
|
||||
await console.log("解析 Paimon.moe 成就数据成功!");
|
||||
console.log("解析 Paimon.moe 成就数据成功!");
|
||||
// 输出数据
|
||||
await console.log("正在输出目标数据...");
|
||||
console.log("正在输出目标数据...");
|
||||
// 输出成就系列数据
|
||||
await console.log("正在输出成就系列数据...");
|
||||
console.log("正在输出成就系列数据...");
|
||||
await fs.writeFile(
|
||||
`${appDataDir}\\achievementSeries.json`,
|
||||
JSON.stringify(achievementSeries, null, 2)
|
||||
);
|
||||
await console.log("输出成就系列数据成功!");
|
||||
console.log("输出成就系列数据成功!");
|
||||
// 输出成就数据
|
||||
await console.log("正在输出成就数据...");
|
||||
console.log("正在输出成就数据...");
|
||||
await fs.writeFile(
|
||||
`${appDataDir}\\achievements.json`,
|
||||
JSON.stringify(achievement, null, 2)
|
||||
);
|
||||
await console.log("输出成就数据成功!");
|
||||
console.log("输出成就数据成功!");
|
||||
},
|
||||
async mergeAchievement() {
|
||||
const appStore = useAppStore();
|
||||
const mergeDataDir = appStore.dataPath.merge;
|
||||
console.log("正在读取原始数据...");
|
||||
const oriAchievement = TGAppData.achievements;
|
||||
const oriAchievementSeries = TGAppData.achievementSeries;
|
||||
console.log("读取原始数据成功!");
|
||||
console.log("正在进行处理...");
|
||||
// 处理成就系列数据
|
||||
console.log("正在处理成就系列数据...");
|
||||
const transAchievementSeries: TGAchievementSeriesDisplay[] = [];
|
||||
const transAchievement: TGAchievementDisplay[] = [];
|
||||
oriAchievementSeries.map(oriAchievementSeriesItem => {
|
||||
// 查找成就中 series_id 与 oriAchievementSeriesItem.id 相同的成就
|
||||
const achievementItem: TGAchievement[] = oriAchievement.filter(
|
||||
oriAchievementItem => oriAchievementItem.series === oriAchievementSeriesItem.id
|
||||
);
|
||||
const transAchievementDisplay: TGAchievementDisplay[] = [];
|
||||
// 处理成就数据
|
||||
achievementItem.map(singleAchievement => {
|
||||
const transAchievementDisplayItem: TGAchievementDisplay = {
|
||||
id: singleAchievement.id,
|
||||
order: singleAchievement.order,
|
||||
name: singleAchievement.name,
|
||||
description: singleAchievement.description,
|
||||
reward: singleAchievement.reward,
|
||||
completed: false,
|
||||
};
|
||||
transAchievement.push(transAchievementDisplayItem);
|
||||
transAchievementDisplay.push(transAchievementDisplayItem);
|
||||
});
|
||||
// 生成成就系列数据
|
||||
const seriesDisplayItem: TGAchievementSeriesDisplay = {
|
||||
id: oriAchievementSeriesItem.id,
|
||||
order: oriAchievementSeriesItem.order,
|
||||
name: oriAchievementSeriesItem.name,
|
||||
achievements: transAchievementDisplay,
|
||||
total_count: achievementItem.length,
|
||||
completed_count: 0,
|
||||
};
|
||||
transAchievementSeries.push(seriesDisplayItem);
|
||||
});
|
||||
// 对成就系列按照 order 进行排序
|
||||
transAchievementSeries.sort((a, b) => {
|
||||
return a.order - b.order;
|
||||
});
|
||||
// 对成就按照 order 进行排序
|
||||
transAchievement.sort((a, b) => {
|
||||
return a.order - b.order;
|
||||
});
|
||||
// 写入文件
|
||||
console.log("正在写入文件...");
|
||||
console.log("正在写入成就系列数据...");
|
||||
await fs.writeTextFile(
|
||||
`${mergeDataDir}\\achievementSeries.json`,
|
||||
JSON.stringify(transAchievementSeries, null, 2)
|
||||
);
|
||||
console.log("写入成就系列数据成功!正在写入成就数据...");
|
||||
await fs.writeTextFile(
|
||||
`${mergeDataDir}\\achievements.json`,
|
||||
JSON.stringify(transAchievement, null, 2)
|
||||
);
|
||||
console.log("写入成就数据成功!");
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user