feat(icons): 添加成就系列图标并渲染

* 目前缺失 id 为38的图标
This commit is contained in:
BTMuli
2023-03-10 23:33:00 +08:00
parent f7729de728
commit b1331a935b
44 changed files with 109 additions and 12 deletions

View File

@@ -3,234 +3,273 @@
"id": 0,
"order": 1,
"name": "天地万象",
"icon": "achievements/0.png",
"version": "3.5"
},
{
"id": 17,
"order": 2,
"name": "心跳的记忆",
"icon": "achievements/17.png",
"version": "3.5"
},
{
"id": 1,
"order": 3,
"name": "尘世巡游·第一辑",
"icon": "achievements/1.png",
"version": "1.0"
},
{
"id": 22,
"order": 4,
"name": "尘世巡游·第二辑",
"icon": "achievements/22.png",
"version": "2.0"
},
{
"id": 32,
"order": 5,
"name": "尘世巡游·第三辑",
"icon": "achievements/32.png",
"version": "3.0"
},
{
"id": 2,
"order": 6,
"name": "冒险手艺",
"icon": "achievements/2.png",
"version": "1.0"
},
{
"id": 3,
"order": 7,
"name": "英雄之旅",
"icon": "achievements/3.png",
"version": "1.0"
},
{
"id": 4,
"order": 8,
"name": "蒙德·风与牧歌的城邦",
"icon": "achievements/4.png",
"version": "1.0"
},
{
"id": 5,
"order": 9,
"name": "璃月·岩与契约的海港",
"icon": "achievements/5.png",
"version": "1.0"
},
{
"id": 6,
"order": 10,
"name": "元素专家·第一辑",
"icon": "achievements/6.png",
"version": "1.0"
},
{
"id": 36,
"order": 11,
"name": "元素专家·第二辑",
"icon": "achievements/36.png",
"version": "3.1"
},
{
"id": 7,
"order": 12,
"name": "神射手",
"icon": "achievements/7.png",
"version": "1.0"
},
{
"id": 8,
"order": 13,
"name": "挑战者·第一辑",
"icon": "achievements/8.png",
"version": "1.0"
},
{
"id": 14,
"order": 14,
"name": "挑战者·第二辑",
"icon": "achievements/14.png",
"version": "1.1"
},
{
"id": 15,
"order": 15,
"name": "挑战者·第三辑",
"icon": "achievements/15.png",
"version": "1.2"
},
{
"id": 20,
"order": 16,
"name": "挑战者·第四辑",
"icon": "achievements/20.png",
"version": "2.0"
},
{
"id": 29,
"order": 17,
"name": "挑战者·第五辑",
"icon": "achievements/29.png",
"version": "2.6"
},
{
"id": 34,
"order": 18,
"name": "挑战者·第六辑",
"icon": "achievements/34.png",
"version": "3.1"
},
{
"id": 9,
"order": 20,
"name": "秘境与深境螺旋·第一辑",
"icon": "achievements/9.png",
"version": "1.0"
},
{
"id": 10,
"order": 21,
"name": "Olah第一辑",
"icon": "achievements/10.png",
"version": "1.0"
},
{
"id": 11,
"order": 22,
"name": "至冬国不相信眼泪·第一辑",
"icon": "achievements/11.png",
"version": "1.0"
},
{
"id": 12,
"order": 23,
"name": "岩港往事·第一辑",
"icon": "achievements/12.png",
"version": "1.0"
},
{
"id": 13,
"order": 24,
"name": "异世相逢·第一辑",
"icon": "achievements/13.png",
"version": "1.0"
},
{
"id": 21,
"order": 25,
"name": "异世相逢·第二辑",
"icon": "achievements/21.png",
"version": "2.1"
},
{
"id": 33,
"order": 26,
"name": "异世相逢·第三辑",
"icon": "achievements/33.png",
"version": "3.0"
},
{
"id": 16,
"order": 27,
"name": "雪山上的来客",
"icon": "achievements/16.png",
"version": "1.2"
},
{
"id": 18,
"order": 28,
"name": "世外洞天·第一辑",
"icon": "achievements/18.png",
"version": "1.5"
},
{
"id": 19,
"order": 29,
"name": "世外洞天·第二辑",
"icon": "achievements/19.png",
"version": "1.6"
},
{
"id": 23,
"order": 30,
"name": "世外洞天·第三辑",
"icon": "achievements/23.png",
"version": "2.0"
},
{
"id": 24,
"order": 31,
"name": "稻妻·雷与永恒的群岛·其之一",
"icon": "achievements/24.png",
"version": "2.0"
},
{
"id": 26,
"order": 32,
"name": "稻妻·雷与永恒的群岛·其之二",
"icon": "achievements/26.png",
"version": "2.1"
},
{
"id": 27,
"order": 33,
"name": "雾海纪行",
"icon": "achievements/27.png",
"version": "2.2"
},
{
"id": 25,
"order": 34,
"name": "提瓦特钓鱼指南·第一辑",
"icon": "achievements/25.png",
"version": "2.1"
},
{
"id": 28,
"order": 35,
"name": "白昼之光",
"icon": "achievements/28.png",
"version": "2.4"
},
{
"id": 30,
"order": 36,
"name": "岩窟流明",
"icon": "achievements/30.png",
"version": "2.6"
},
{
"id": 31,
"order": 37,
"name": "须弥·玄识深藏的雨林",
"icon": "achievements/31.png",
"version": "3.0"
},
{
"id": 35,
"order": 38,
"name": "须弥·饰金砂原·其之一",
"icon": "achievements/35.png",
"version": "3.1"
},
{
"id": 38,
"order": 39,
"name": "须弥·饰金砂原·其之二",
"icon": "achievements/38.png",
"version": "3.4"
},
{
"id": 37,
"order": 40,
"name": "七圣召唤",
"icon": "achievements/37.png",
"version": "3.3"
}
]

View File

@@ -3,6 +3,7 @@
"id": 0,
"order": 1,
"name": "天地万象",
"icon": "achievements/0.png",
"achievements": [
80091, 80127, 80128, 80129, 80142, 80143, 80144, 81000, 81001, 81002, 81003, 81004, 81005,
81010, 81014, 81015, 81016, 81017, 81018, 81019, 81020, 81021, 81022, 81023, 81024, 81025,
@@ -48,6 +49,7 @@
"id": 1,
"order": 3,
"name": "尘世巡游·第一辑",
"icon": "achievements/1.png",
"achievements": [80001, 80002, 80003, 80004, 80005, 80006],
"total_count": 6,
"completed_count": 0
@@ -56,6 +58,7 @@
"id": 2,
"order": 6,
"name": "冒险手艺",
"icon": "achievements/2.png",
"achievements": [80007, 80008, 80009, 80010, 80011, 80012, 80013],
"total_count": 7,
"completed_count": 0
@@ -64,6 +67,7 @@
"id": 3,
"order": 7,
"name": "英雄之旅",
"icon": "achievements/3.png",
"achievements": [
80014, 80015, 80016, 80017, 80018, 80019, 80020, 80021, 80022, 80023, 80024, 80025, 80026,
80027, 80028, 80029
@@ -75,6 +79,7 @@
"id": 4,
"order": 8,
"name": "蒙德·风与牧歌的城邦",
"icon": "achievements/4.png",
"achievements": [
80030, 80031, 80032, 80033, 80034, 80035, 80036, 80037, 80038, 80039, 80040, 80041, 80042
],
@@ -85,6 +90,7 @@
"id": 5,
"order": 9,
"name": "璃月·岩与契约的海港",
"icon": "achievements/5.png",
"achievements": [
80043, 80044, 80045, 80046, 80047, 80048, 80049, 80050, 80051, 80052, 80053, 80054, 80055
],
@@ -95,6 +101,7 @@
"id": 6,
"order": 10,
"name": "元素专家·第一辑",
"icon": "achievements/6.png",
"achievements": [
82019, 82020, 82021, 82022, 82023, 82024, 82025, 82026, 82027, 82028, 82029, 82030, 82031,
82032, 82033, 82034, 82035, 82036, 82037, 82038, 82039
@@ -106,6 +113,7 @@
"id": 7,
"order": 12,
"name": "神射手",
"icon": "achievements/7.png",
"achievements": [82001, 82002, 82003],
"total_count": 3,
"completed_count": 0
@@ -114,6 +122,7 @@
"id": 8,
"order": 13,
"name": "挑战者·第一辑",
"icon": "achievements/8.png",
"achievements": [82004, 82005, 82006, 82007],
"total_count": 4,
"completed_count": 0
@@ -122,6 +131,7 @@
"id": 9,
"order": 20,
"name": "秘境与深境螺旋·第一辑",
"icon": "achievements/9.png",
"achievements": [82044, 82045, 82046, 82047, 82048, 82049, 82050, 82051],
"total_count": 8,
"completed_count": 0
@@ -130,6 +140,7 @@
"id": 10,
"order": 21,
"name": "Olah第一辑",
"icon": "achievements/10.png",
"achievements": [84501, 84502],
"total_count": 2,
"completed_count": 0
@@ -138,6 +149,7 @@
"id": 11,
"order": 22,
"name": "至冬国不相信眼泪·第一辑",
"icon": "achievements/11.png",
"achievements": [84503, 84504],
"total_count": 2,
"completed_count": 0
@@ -146,6 +158,7 @@
"id": 12,
"order": 23,
"name": "岩港往事·第一辑",
"icon": "achievements/12.png",
"achievements": [84505, 84506, 84507],
"total_count": 3,
"completed_count": 0
@@ -154,6 +167,7 @@
"id": 13,
"order": 24,
"name": "异世相逢·第一辑",
"icon": "achievements/13.png",
"achievements": [
86001, 86002, 86003, 86004, 86005, 86006, 86007, 86008, 86009, 86010, 86011, 86012, 86013
],
@@ -164,6 +178,7 @@
"id": 14,
"order": 14,
"name": "挑战者·第二辑",
"icon": "achievements/14.png",
"achievements": [82053, 82054, 82055, 82056, 82057, 82058, 82059, 82060, 82061, 82062],
"total_count": 10,
"completed_count": 0
@@ -172,6 +187,7 @@
"id": 15,
"order": 15,
"name": "挑战者·第三辑",
"icon": "achievements/15.png",
"achievements": [82066, 82067, 82068, 82069, 82070, 82071, 82072, 82073],
"total_count": 8,
"completed_count": 0
@@ -180,6 +196,7 @@
"id": 16,
"order": 27,
"name": "雪山上的来客",
"icon": "achievements/16.png",
"achievements": [
80056, 80057, 80058, 80059, 80060, 80061, 80062, 80063, 80064, 80065, 80066, 80067, 80068
],
@@ -190,6 +207,7 @@
"id": 17,
"order": 2,
"name": "心跳的记忆",
"icon": "achievements/17.png",
"achievements": [
84026, 84100, 84101, 84104, 84028, 84107, 84102, 84108, 84105, 84103, 84106, 84109, 84110,
84111, 84112, 84113, 84114, 84115, 84116, 84117, 84118, 84119, 84120, 84121, 84122, 84123,
@@ -203,6 +221,7 @@
"id": 18,
"order": 28,
"name": "世外洞天·第一辑",
"icon": "achievements/18.png",
"achievements": [
81049, 81050, 81051, 81052, 81053, 81054, 81055, 81056, 81057, 81058, 81059, 81060, 81061,
81062, 81063, 81064, 81065, 81066, 81067, 81068, 81069, 81070, 81071, 81072, 81073
@@ -214,6 +233,7 @@
"id": 19,
"order": 29,
"name": "世外洞天·第二辑",
"icon": "achievements/19.png",
"achievements": [81079, 81080, 81081, 81082, 81083, 81084, 81085],
"total_count": 7,
"completed_count": 0
@@ -222,6 +242,7 @@
"id": 20,
"order": 16,
"name": "挑战者·第四辑",
"icon": "achievements/20.png",
"achievements": [82091, 82092, 82093, 82094, 82095, 82096, 82097, 82098, 82109],
"total_count": 9,
"completed_count": 0
@@ -230,6 +251,7 @@
"id": 21,
"order": 25,
"name": "异世相逢·第二辑",
"icon": "achievements/21.png",
"achievements": [86021, 86015, 86016, 86017, 86018, 86019, 86020],
"total_count": 7,
"completed_count": 0
@@ -238,6 +260,7 @@
"id": 22,
"order": 4,
"name": "尘世巡游·第二辑",
"icon": "achievements/22.png",
"achievements": [80069, 80070, 80071, 80072, 80073],
"total_count": 5,
"completed_count": 0
@@ -246,6 +269,7 @@
"id": 23,
"order": 30,
"name": "世外洞天·第三辑",
"icon": "achievements/23.png",
"achievements": [81086, 81087, 81088, 81089, 81090, 81091, 81092, 81093, 81094, 81095],
"total_count": 10,
"completed_count": 0
@@ -254,6 +278,7 @@
"id": 24,
"order": 31,
"name": "稻妻·雷与永恒的群岛·其之一",
"icon": "achievements/24.png",
"achievements": [
80074, 80075, 80076, 80077, 80078, 80079, 80080, 80081, 80082, 80083, 80084, 80085, 80086,
80087, 80088, 80089, 80090, 80093, 80094, 80095
@@ -265,6 +290,7 @@
"id": 25,
"order": 34,
"name": "提瓦特钓鱼指南·第一辑",
"icon": "achievements/25.png",
"achievements": [
81131, 81132, 81133, 81134, 81135, 81136, 81137, 81138, 81139, 81140, 81143, 81144
],
@@ -275,6 +301,7 @@
"id": 26,
"order": 32,
"name": "稻妻·雷与永恒的群岛·其之二",
"icon": "achievements/26.png",
"achievements": [
80096, 80097, 80098, 80099, 80100, 80101, 80102, 80105, 80106, 80107, 80110, 80111, 80112,
80108, 80109
@@ -286,6 +313,7 @@
"id": 27,
"order": 33,
"name": "雾海纪行",
"icon": "achievements/27.png",
"achievements": [
80113, 80114, 80115, 80116, 80119, 80120, 80121, 80122, 80123, 80124, 80125, 80126
],
@@ -296,6 +324,7 @@
"id": 28,
"order": 35,
"name": "白昼之光",
"icon": "achievements/28.png",
"achievements": [
80130, 80131, 80132, 80133, 80134, 80135, 80136, 80137, 80138, 80139, 80140, 80141
],
@@ -306,6 +335,7 @@
"id": 29,
"order": 17,
"name": "挑战者·第五辑",
"icon": "achievements/29.png",
"achievements": [82115, 82116, 82117, 82118, 82119, 82120, 82126, 82128],
"total_count": 8,
"completed_count": 0
@@ -314,6 +344,7 @@
"id": 30,
"order": 36,
"name": "岩窟流明",
"icon": "achievements/30.png",
"achievements": [
80145, 80146, 80147, 80148, 80149, 80150, 80151, 80152, 80153, 80154, 80155, 80156, 80157,
80158, 80159
@@ -325,6 +356,7 @@
"id": 31,
"order": 37,
"name": "须弥·玄识深藏的雨林",
"icon": "achievements/31.png",
"achievements": [
80160, 80161, 80162, 80163, 80164, 80165, 80166, 80167, 80168, 80169, 80170, 80171, 80172,
80173, 80174
@@ -336,6 +368,7 @@
"id": 32,
"order": 5,
"name": "尘世巡游·第三辑",
"icon": "achievements/32.png",
"achievements": [80175, 80176, 80177, 80178],
"total_count": 4,
"completed_count": 0
@@ -344,6 +377,7 @@
"id": 33,
"order": 26,
"name": "异世相逢·第三辑",
"icon": "achievements/33.png",
"achievements": [86022, 86023, 86024, 86025, 86026, 86027, 86028, 86029],
"total_count": 8,
"completed_count": 0
@@ -352,6 +386,7 @@
"id": 34,
"order": 18,
"name": "挑战者·第六辑",
"icon": "achievements/34.png",
"achievements": [82134, 82135, 82136, 82137, 82138, 82139, 82140, 82141],
"total_count": 8,
"completed_count": 0
@@ -360,6 +395,7 @@
"id": 35,
"order": 38,
"name": "须弥·饰金砂原·其之一",
"icon": "achievements/35.png",
"achievements": [
80179, 80180, 80181, 80182, 80183, 80184, 80185, 80186, 80187, 80188, 80189, 80190, 80191
],
@@ -370,6 +406,7 @@
"id": 36,
"order": 11,
"name": "元素专家·第二辑",
"icon": "achievements/36.png",
"achievements": [82146, 82147, 82148, 82149, 82150, 82151, 82159],
"total_count": 7,
"completed_count": 0
@@ -378,6 +415,7 @@
"id": 37,
"order": 40,
"name": "七圣召唤",
"icon": "achievements/37.png",
"achievements": [
80192, 80193, 80197, 80198, 80199, 80203, 80204, 80205, 80206, 80207, 80208, 80209, 80210,
80211, 80212, 80213, 80214, 80215, 80216, 80217, 80218, 80219, 80220, 80221, 80222, 80223
@@ -389,6 +427,7 @@
"id": 38,
"order": 39,
"name": "须弥·饰金砂原·其之二",
"icon": "achievements/38.png",
"achievements": [
80224, 80225, 80226, 80228, 80229, 80230, 80231, 80232, 80233, 80234, 80235, 80236, 80227
],

View File

@@ -41,7 +41,7 @@ export interface Achievement {
* @property {number} card - 成就系列奖励,这边是名片 ID
* @description 像是天地万象这种一直更新的成就系列,这边的 version 可能为 undefined
* @property {string} version - 成就系列版本
* @property {string} icon - 成就系列图标 todo
* @property {string} icon - 成就系列图标
* @return AchievementSeries
*/
export interface AchievementSeries {
@@ -50,7 +50,7 @@ export interface AchievementSeries {
name: string;
card?: number;
version?: string;
icon?: string;
icon: string;
}
/**
@@ -65,7 +65,7 @@ export interface AchievementSeries {
* @property {number} total_count - 成就系列包含的成就数
* @property {number} completed_count - 成就系列已完成的成就数
* @property {number} card - 成就系列奖励,这边是名片 ID todo
* @property {string} icon - 成就系列图标 todo
* @property {string} icon - 成就系列图标
* @return SeriesMap
*/
export interface SeriesMap {
@@ -76,7 +76,7 @@ export interface SeriesMap {
total_count: number;
completed_count: number;
card?: number;
icon?: string;
icon: string;
}
/**

View File

@@ -21,12 +21,14 @@
<v-card
class="left-list"
v-for="series in seriesList"
:key="series.order"
@click="selectSeries(series.id)"
style="margin-bottom: 10px"
>
<v-list>
<v-list-item prepend-icon="mdi-trophy-outline">
<v-list-item>
<template v-slot:prepend>
<v-img width="40px" style="margin-right: 10px" :src="getImgSrc(series.icon)" />
</template>
<v-list-item-title>{{ series.name }}</v-list-item-title>
<v-list-item-subtitle
>{{ series.completed_count }} / {{ series.total_count }}</v-list-item-subtitle
@@ -55,7 +57,7 @@
<v-btn variant="flat" disabled>
<template v-slot:append>
<img
src="../source/material/原石.png"
src="/source/material/原石.png"
alt="原石"
class="icon"
style="width: 32px"
@@ -73,18 +75,23 @@
</template>
<script lang="ts" setup>
// Node
import { dialog, fs } from "@tauri-apps/api";
import { onMounted, ref } from "vue";
// Store
import useAppStore from "../store/modules/app";
import useAchievementsStore from "../store/modules/achievements";
import UIAF_Oper from "../plugins/UIAF";
import { dialog, fs } from "@tauri-apps/api";
// Interface
import { Achievements, UIAF_Achievement } from "../plugins/UIAF/interface/UIAF";
import {
AchievementMap as TGAchievementMap,
SeriesMap as TGSeriesMap,
} from "../interface/Achievements";
import TGMap from "../utils/TGMap";
import { Map } from "../interface/Base";
import { onMounted, ref } from "vue";
// Plugins
import UIAF_Oper from "../plugins/UIAF";
// Utils
import TGMap from "../utils/TGMap";
// Store
const appStore = useAppStore();
@@ -101,6 +108,15 @@ onMounted(() => {
loadData();
});
// 转换图像路径
function getImgSrc(img: string) {
// todo 目前缺失了一些图像,需要补充
if (img === "achievements/38.png") {
return `/source/material/原石.png`;
}
return `/source/${img}`;
}
// 加载数据,数据源:合并后的本地数据
async function loadData() {
const mergeAchievementMap: TGMap<TGAchievementMap> = new TGMap<TGAchievementMap>(
@@ -109,7 +125,8 @@ async function loadData() {
const mergeSeriesMap: TGMap<TGSeriesMap> = new TGMap<TGSeriesMap>(
JSON.parse(await fs.readTextFile(appStore.mergePath.achievementSeries))
);
seriesList.value = mergeSeriesMap.getMap();
// 按照 order 排序
seriesList.value = mergeSeriesMap.sort((a, b) => a.order - b.order).getMap();
achievementsList.value = mergeAchievementMap.getMap();
selectedAchievement.value = transGroup(mergeSeriesMap, mergeAchievementMap);
achievementsStore.flushData(mergeSeriesMap);

View File

@@ -61,6 +61,7 @@ async function parseAchievement() {
order: hutaoGoalItem.Order,
name: hutaoGoalItem.Name,
card: hutaoGoalItem?.FinishReward?.ID,
icon: `achievements/${hutaoGoalItem.Id}.png`,
};
achievementSeries.push(achievementSeriesItem);
});
@@ -154,6 +155,7 @@ async function mergeAchievement() {
id: oriSeriesItem.id,
order: oriSeriesItem.order,
name: oriSeriesItem.name,
icon: oriSeriesItem.icon,
achievements: [],
total_count: 0,
completed_count: 0,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB