mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-12 09:18:14 +08:00
fix(dev): 数据解析功能实现,开始测试
This commit is contained in:
@@ -5,6 +5,9 @@
|
|||||||
<v-list-item @click="initDev()" prepend-icon="mdi-refresh">
|
<v-list-item @click="initDev()" prepend-icon="mdi-refresh">
|
||||||
<v-list-item-title>初始化开发</v-list-item-title>
|
<v-list-item-title>初始化开发</v-list-item-title>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
|
<v-list-item @click="parseAchievement()" prepend-icon="mdi-export">
|
||||||
|
<v-list-item-title>解析成就数据</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-card>
|
</v-card>
|
||||||
</template>
|
</template>
|
||||||
@@ -12,15 +15,160 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from "vue";
|
import { defineComponent } from "vue";
|
||||||
import useDevStore from "../store/modules/dev";
|
import useDevStore from "../store/modules/dev";
|
||||||
|
import useAppStore from "../store/modules/app";
|
||||||
|
import { fs } from "@tauri-apps/api";
|
||||||
|
import { SnapHutaoData } from "../plugins/Snap.Hutao";
|
||||||
|
import {
|
||||||
|
Achievement as HutaoAchievement,
|
||||||
|
AchievementGoal as HutaoAchievementGoal,
|
||||||
|
} from "../plugins/Snap.Hutao/interface/achievement";
|
||||||
|
import { PaimonMoeData } from "../plugins/Paimon.moe";
|
||||||
|
import {
|
||||||
|
AchievementJson as PaimonAchievementJson,
|
||||||
|
AchievementSeries as PaimonAchievementSeries,
|
||||||
|
} from "../plugins/Paimon.moe/interface/achievement";
|
||||||
|
import {
|
||||||
|
Achievement as TGAchievement,
|
||||||
|
AchievementSeries as TGAchievementSeries,
|
||||||
|
} from "../interface/achievements";
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "Dev",
|
name: "Dev",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
originRaw: {
|
||||||
|
Hutao: "" as string,
|
||||||
|
Paimon: "" as string,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initDev() {
|
initDev() {
|
||||||
const devStore = useDevStore();
|
const devStore = useDevStore();
|
||||||
devStore.showDev = false;
|
devStore.showDev = false;
|
||||||
devStore.magicCount = 0;
|
devStore.magicCount = 0;
|
||||||
},
|
},
|
||||||
|
async parseAchievement() {
|
||||||
|
const appStore = useAppStore();
|
||||||
|
const appDataDir = appStore.dataPath.app;
|
||||||
|
await console.log("正在读取原始数据...");
|
||||||
|
// 读取原始数据
|
||||||
|
await console.log("正在读取 Snap.Hutao 数据库...");
|
||||||
|
const hutaoAchievementData: HutaoAchievement[] = SnapHutaoData.Achievement.data;
|
||||||
|
await console.log("读取胡桃成就数据成功!");
|
||||||
|
const hutaoAchievementGoalData: HutaoAchievementGoal[] =
|
||||||
|
SnapHutaoData.AchievementGoal.data;
|
||||||
|
await console.log("读取胡桃成就系列数据成功!");
|
||||||
|
await console.log("正在读取 Paimon.moe 数据库...");
|
||||||
|
const paimonAchievementJsonData: PaimonAchievementJson = PaimonMoeData.Achievement.data;
|
||||||
|
await console.log("读取 Paimon.moe 成就数据成功!");
|
||||||
|
// 新建目标数据
|
||||||
|
await console.log("正在生成目标数据...");
|
||||||
|
const achievementSeries: TGAchievementSeries[] = [];
|
||||||
|
const achievement: TGAchievement[] = [];
|
||||||
|
// 先解析 Hutao 的成就数据
|
||||||
|
await console.log("正在解析胡桃成就系列数据...");
|
||||||
|
hutaoAchievementGoalData.map(hutaoAchievementGoal => {
|
||||||
|
const achievementSeriesItem: TGAchievementSeries = {
|
||||||
|
id: hutaoAchievementGoal.Id,
|
||||||
|
order: hutaoAchievementGoal.Order,
|
||||||
|
name: hutaoAchievementGoal.Name,
|
||||||
|
card: hutaoAchievementGoal?.FinishReward?.ID,
|
||||||
|
};
|
||||||
|
achievementSeries.push(achievementSeriesItem);
|
||||||
|
});
|
||||||
|
await console.log("解析胡桃成就系列数据成功!");
|
||||||
|
await console.log("正在解析胡桃成就数据...");
|
||||||
|
hutaoAchievementData.map(hutaoAchievement => {
|
||||||
|
const achievementItem: TGAchievement = {
|
||||||
|
id: hutaoAchievement.Id,
|
||||||
|
series: hutaoAchievement.Goal,
|
||||||
|
order: hutaoAchievement.Order,
|
||||||
|
name: hutaoAchievement.Title,
|
||||||
|
description: hutaoAchievement.Description,
|
||||||
|
reward: hutaoAchievement.FinishReward.ID,
|
||||||
|
version: "",
|
||||||
|
progress: hutaoAchievement.Progress,
|
||||||
|
};
|
||||||
|
achievement.push(achievementItem);
|
||||||
|
});
|
||||||
|
await console.log("解析胡桃成就数据成功!");
|
||||||
|
// 再解析 Paimon.moe 的成就数据
|
||||||
|
await console.log("正在解析 Paimon.moe 成就数据...");
|
||||||
|
for (let paimonAchievementJsonDataKey in paimonAchievementJsonData) {
|
||||||
|
const paimonSeries: PaimonAchievementSeries =
|
||||||
|
paimonAchievementJsonData[paimonAchievementJsonDataKey];
|
||||||
|
// 寻找成就系列中名称相同的成就系列
|
||||||
|
const achievementSeriesItem: TGAchievementSeries | undefined =
|
||||||
|
achievementSeries.find(
|
||||||
|
achievementSeriesItem => achievementSeriesItem.name === paimonSeries.name
|
||||||
|
);
|
||||||
|
// 成就版本-暂存
|
||||||
|
let achievementVersion: string = "";
|
||||||
|
paimonSeries.achievements.map(paimonAchievementItem => {
|
||||||
|
// 判断是不是数组
|
||||||
|
if (Array.isArray(paimonAchievementItem)) {
|
||||||
|
paimonAchievementItem.map(paimonAchievement => {
|
||||||
|
// 查找成就中 id 相同的成就
|
||||||
|
const achievementItem: TGAchievement | undefined = achievement.find(
|
||||||
|
achievementItem => achievementItem.id === paimonAchievement.id
|
||||||
|
);
|
||||||
|
if (achievementItem) {
|
||||||
|
// 更新数据
|
||||||
|
achievementItem.version = paimonAchievement.ver;
|
||||||
|
if (achievementSeriesItem) {
|
||||||
|
if (achievementVersion === "") {
|
||||||
|
achievementVersion = paimonAchievement.ver;
|
||||||
|
} else {
|
||||||
|
// 比较 v1.1 和 v1.2 的大小
|
||||||
|
if (achievementVersion < paimonAchievement.ver) {
|
||||||
|
achievementVersion = paimonAchievement.ver;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// 查找成就中 id 相同的成就
|
||||||
|
const achievementItem: TGAchievement | undefined = achievement.find(
|
||||||
|
achievementItem => achievementItem.id === paimonAchievementItem.id
|
||||||
|
);
|
||||||
|
if (achievementItem) {
|
||||||
|
// 更新数据
|
||||||
|
achievementItem.version = paimonAchievementItem.ver;
|
||||||
|
if (achievementSeriesItem) {
|
||||||
|
if (achievementVersion === "") {
|
||||||
|
achievementVersion = paimonAchievementItem.ver;
|
||||||
|
} else {
|
||||||
|
// 比较 v1.1 和 v1.2 的大小
|
||||||
|
if (achievementVersion < paimonAchievementItem.ver) {
|
||||||
|
achievementVersion = paimonAchievementItem.ver;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 更新成就系列版本
|
||||||
|
if (achievementSeriesItem && achievementVersion !== "") {
|
||||||
|
achievementSeriesItem.version = achievementVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await console.log("解析 Paimon.moe 成就数据成功!");
|
||||||
|
// 输出数据
|
||||||
|
await console.log("正在输出目标数据...");
|
||||||
|
// 输出成就系列数据
|
||||||
|
await console.log("正在输出成就系列数据...");
|
||||||
|
await fs.writeFile(
|
||||||
|
`${appDataDir}\\achievement.json`,
|
||||||
|
JSON.stringify(achievementSeries)
|
||||||
|
);
|
||||||
|
await console.log("输出成就系列数据成功!");
|
||||||
|
// 输出成就数据
|
||||||
|
await console.log("正在输出成就数据...");
|
||||||
|
await fs.writeFile(`${appDataDir}\\achievements.json`, JSON.stringify(achievement));
|
||||||
|
await console.log("输出成就数据成功!");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
6879
src/plugins/Paimon.moe/data/Achievement.json
Normal file
6879
src/plugins/Paimon.moe/data/Achievement.json
Normal file
File diff suppressed because it is too large
Load Diff
9
src/plugins/Paimon.moe/index.ts
Normal file
9
src/plugins/Paimon.moe/index.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import Achievement from "./data/Achievement.json";
|
||||||
|
import { AchievementJson } from "./interface/achievement";
|
||||||
|
|
||||||
|
export const PaimonMoeData = {
|
||||||
|
Achievement: {
|
||||||
|
name: "Achievement.json",
|
||||||
|
data: Achievement as unknown as AchievementJson,
|
||||||
|
},
|
||||||
|
};
|
||||||
49
src/plugins/Paimon.moe/interface/achievement.ts
Normal file
49
src/plugins/Paimon.moe/interface/achievement.ts
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/**
|
||||||
|
* @file plugins Paimon.moe Interface Achievement
|
||||||
|
* @description plugins Paimon.moe Interface Achievement
|
||||||
|
* @author BTMuli<bt-muli@outlook.com>
|
||||||
|
* @see https://github.com/MadeBaruna/paimon-moe/blob/main/src/data/achievement/zh.json
|
||||||
|
* @version v3.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description Paimon.moe Achievement json data interface
|
||||||
|
* @interface AchievementJson
|
||||||
|
* @example [key: string]: { AchievementSeries }
|
||||||
|
* @return {AchievementJson}
|
||||||
|
*/
|
||||||
|
export interface AchievementJson {
|
||||||
|
[key: string]: AchievementSeries;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description Paimon.moe Achievement series
|
||||||
|
* @interface AchievementSeries
|
||||||
|
* @property {string} name - Achievement series name
|
||||||
|
* @property {(Achievement|Achievement[])[]} achievements - Achievement list
|
||||||
|
* @property {number} order - Achievement series order
|
||||||
|
* @return {AchievementSeries}
|
||||||
|
*/
|
||||||
|
export interface AchievementSeries {
|
||||||
|
name: string;
|
||||||
|
achievements: (Achievement | Achievement[])[];
|
||||||
|
order: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description Paimon.moe Achievement
|
||||||
|
* @interface Achievement
|
||||||
|
* @property {number} id - Achievement id
|
||||||
|
* @property {string} name - Achievement name
|
||||||
|
* @property {string} desc - Achievement description
|
||||||
|
* @property {number} reward - Achievement reward
|
||||||
|
* @property {string} ver - Achievement version
|
||||||
|
* @return {Achievement}
|
||||||
|
*/
|
||||||
|
interface Achievement {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
desc: string;
|
||||||
|
reward: number;
|
||||||
|
ver: string;
|
||||||
|
}
|
||||||
10859
src/plugins/Snap.Hutao/data/Achievement.json
Normal file
10859
src/plugins/Snap.Hutao/data/Achievement.json
Normal file
File diff suppressed because it is too large
Load Diff
384
src/plugins/Snap.Hutao/data/AchievementGoal.json
Normal file
384
src/plugins/Snap.Hutao/data/AchievementGoal.json
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"Id": 0,
|
||||||
|
"Order": 1,
|
||||||
|
"Name": "天地万象",
|
||||||
|
"Icon": "UI_AchievementIcon_O001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 17,
|
||||||
|
"Order": 2,
|
||||||
|
"Name": "心跳的记忆",
|
||||||
|
"Icon": "UI_AchievementIcon_E001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 1,
|
||||||
|
"Order": 3,
|
||||||
|
"Name": "尘世巡游·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210021,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 22,
|
||||||
|
"Order": 4,
|
||||||
|
"Name": "尘世巡游·第二辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210087,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A001_Part2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 32,
|
||||||
|
"Order": 5,
|
||||||
|
"Name": "尘世巡游·第三辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210128,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A001_Part3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 2,
|
||||||
|
"Order": 6,
|
||||||
|
"Name": "冒险手艺",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210022,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A002"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 3,
|
||||||
|
"Order": 7,
|
||||||
|
"Name": "英雄之旅",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210023,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A003"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 4,
|
||||||
|
"Order": 8,
|
||||||
|
"Name": "蒙德·风与牧歌的城邦",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210024,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A004"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 5,
|
||||||
|
"Order": 9,
|
||||||
|
"Name": "璃月·岩与契约的海港",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210025,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A005"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 6,
|
||||||
|
"Order": 10,
|
||||||
|
"Name": "元素专家·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210026,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 36,
|
||||||
|
"Order": 11,
|
||||||
|
"Name": "元素专家·第二辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210137,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B001_Part2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 7,
|
||||||
|
"Order": 12,
|
||||||
|
"Name": "神射手",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210027,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B002"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 8,
|
||||||
|
"Order": 13,
|
||||||
|
"Name": "挑战者·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210028,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B004"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 14,
|
||||||
|
"Order": 14,
|
||||||
|
"Name": "挑战者·第二辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210041,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B004_Part2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 15,
|
||||||
|
"Order": 15,
|
||||||
|
"Name": "挑战者·第三辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210051,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B004_Part3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 20,
|
||||||
|
"Order": 16,
|
||||||
|
"Name": "挑战者·第四辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210088,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B004_Part4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 29,
|
||||||
|
"Order": 17,
|
||||||
|
"Name": "挑战者·第五辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210116,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B004_Part5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 34,
|
||||||
|
"Order": 18,
|
||||||
|
"Name": "挑战者·第六辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210139,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B004_Part6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 9,
|
||||||
|
"Order": 20,
|
||||||
|
"Name": "秘境与深境螺旋·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210029,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_B005"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 10,
|
||||||
|
"Order": 21,
|
||||||
|
"Name": "Olah!第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210030,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_C001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 11,
|
||||||
|
"Order": 22,
|
||||||
|
"Name": "至冬国不相信眼泪·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210031,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_C002"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 12,
|
||||||
|
"Order": 23,
|
||||||
|
"Name": "岩港往事·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210032,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_C003"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13,
|
||||||
|
"Order": 24,
|
||||||
|
"Name": "异世相逢·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210033,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_D001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 21,
|
||||||
|
"Order": 25,
|
||||||
|
"Name": "异世相逢·第二辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210086,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_D001_Part2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 33,
|
||||||
|
"Order": 26,
|
||||||
|
"Name": "异世相逢·第三辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210129,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_D001_Part3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 16,
|
||||||
|
"Order": 27,
|
||||||
|
"Name": "雪山上的来客",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210052,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A006"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 18,
|
||||||
|
"Order": 28,
|
||||||
|
"Name": "世外洞天·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210072,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A007"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 19,
|
||||||
|
"Order": 29,
|
||||||
|
"Name": "世外洞天·第二辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210075,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A007_Part2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 23,
|
||||||
|
"Order": 30,
|
||||||
|
"Name": "世外洞天·第三辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210089,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A007_Part3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 24,
|
||||||
|
"Order": 31,
|
||||||
|
"Name": "稻妻·雷与永恒的群岛·其之一",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210090,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A008"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 26,
|
||||||
|
"Order": 32,
|
||||||
|
"Name": "稻妻·雷与永恒的群岛·其之二",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210097,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A008_Part2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 27,
|
||||||
|
"Order": 33,
|
||||||
|
"Name": "雾海纪行",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210103,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A008_Part3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 25,
|
||||||
|
"Order": 34,
|
||||||
|
"Name": "提瓦特钓鱼指南·第一辑",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210098,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A009"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 28,
|
||||||
|
"Order": 35,
|
||||||
|
"Name": "白昼之光",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210109,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A010"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 30,
|
||||||
|
"Order": 36,
|
||||||
|
"Name": "岩窟流明",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210117,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A011"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 31,
|
||||||
|
"Order": 37,
|
||||||
|
"Name": "须弥·玄识深藏的雨林",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210130,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A012"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 35,
|
||||||
|
"Order": 38,
|
||||||
|
"Name": "须弥·饰金砂原·其之一",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210138,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A013"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 38,
|
||||||
|
"Order": 39,
|
||||||
|
"Name": "须弥·饰金砂原·其之二",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210151,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A013_Part2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 37,
|
||||||
|
"Order": 40,
|
||||||
|
"Name": "七圣召唤",
|
||||||
|
"FinishReward": {
|
||||||
|
"Id": 210145,
|
||||||
|
"Count": 1
|
||||||
|
},
|
||||||
|
"Icon": "UI_AchievementIcon_A014"
|
||||||
|
}
|
||||||
|
]
|
||||||
17
src/plugins/Snap.Hutao/index.ts
Normal file
17
src/plugins/Snap.Hutao/index.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import {
|
||||||
|
Achievement as TypeAchievement,
|
||||||
|
AchievementGoal as TypeAchievementGoal,
|
||||||
|
} from "./interface/achievement";
|
||||||
|
import Achievement from "./data/Achievement.json";
|
||||||
|
import AchievementGoal from "./data/AchievementGoal.json";
|
||||||
|
|
||||||
|
export const SnapHutaoData = {
|
||||||
|
Achievement: {
|
||||||
|
name: "Achievement.json",
|
||||||
|
data: Achievement as unknown as TypeAchievement[],
|
||||||
|
},
|
||||||
|
AchievementGoal: {
|
||||||
|
name: "AchievementGoal.json",
|
||||||
|
data: AchievementGoal as unknown as TypeAchievementGoal[],
|
||||||
|
},
|
||||||
|
};
|
||||||
61
src/plugins/Snap.Hutao/interface/achievement.ts
Normal file
61
src/plugins/Snap.Hutao/interface/achievement.ts
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
/**
|
||||||
|
* @file plugins Snap.Hutao Interface Achievement
|
||||||
|
* @description plugins Snap.Hutao Interface Achievement
|
||||||
|
* @author BTMuli<bt-muli@outlook.com>
|
||||||
|
* @see https://github.com/DGP-Studio/Snap.Metadata/blob/main/Output/CHS/Achievement.json
|
||||||
|
* @version v3.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description Snap.Hutao Achievement data interface
|
||||||
|
* @interface Achievement
|
||||||
|
* @property {number} Id - 成就ID
|
||||||
|
* @property {number} Goal - 成就系列对应顺序
|
||||||
|
* @property {number} Order - 成就对应顺序
|
||||||
|
* @property {string} Title - 成就标题
|
||||||
|
* @property {string} Description - 成就描述
|
||||||
|
* @property FinishReward - 成就完成奖励
|
||||||
|
* @property {number} FinishReward.ID - 物品ID,201为原石
|
||||||
|
* @property {number} FinishReward.Count - 物品数量
|
||||||
|
* @property {number} Progress - 成就进度
|
||||||
|
* @property {string|undefined} Icon - 成就图标
|
||||||
|
* @return Achievement
|
||||||
|
*/
|
||||||
|
export interface Achievement {
|
||||||
|
Id: number;
|
||||||
|
Goal: number;
|
||||||
|
Order: number;
|
||||||
|
Title: string;
|
||||||
|
Description: string;
|
||||||
|
FinishReward: {
|
||||||
|
ID: number;
|
||||||
|
Count: number;
|
||||||
|
};
|
||||||
|
Progress: number;
|
||||||
|
Icon?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description Snap.Hutao AchievementGoal data interface
|
||||||
|
* @see https://github.com/DGP-Studio/Snap.Metadata/blob/main/Output/CHS/AchievementGoal.json
|
||||||
|
* @interface AchievementGoal
|
||||||
|
* @property {number} Id - 成就系列ID
|
||||||
|
* @property {number} Order - 成就系列对应顺序
|
||||||
|
* @property {string} Name - 成就系列名称
|
||||||
|
* @property FinishReward - 成就系列完成奖励
|
||||||
|
* @description 某些成就系列没有完成奖励,这边的FinishReward可能为undefined
|
||||||
|
* @property {number} FinishReward.ID - 物品ID,这边指的应该是成就名片ID
|
||||||
|
* @property {number} FinishReward.Count - 物品数量
|
||||||
|
* @property {string} Icon - 成就系列图标
|
||||||
|
* @return AchievementGoal
|
||||||
|
*/
|
||||||
|
export interface AchievementGoal {
|
||||||
|
Id: number;
|
||||||
|
Order: number;
|
||||||
|
Name: string;
|
||||||
|
FinishReward?: {
|
||||||
|
ID: number;
|
||||||
|
Count: number;
|
||||||
|
};
|
||||||
|
Icon: string;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user