🌱 添加 wiki 角色类型相关

This commit is contained in:
BTMuli
2023-12-15 17:00:24 +08:00
parent 2df65515a4
commit 39cc07694a
5 changed files with 379 additions and 15 deletions

View File

@@ -1,11 +1,9 @@
/**
* @file data index
* @description data index
* @author BTMuli<bt-muli@outlook.com>
* @since Alpha v0.1.5
* @file src/data/index.ts
* @description 数据文件入口
* @since Beta v0.3.8
*/
// Data
import achievements from "./app/achievements.json";
import achievementSeries from "./app/achievementSeries.json";
import calendar from "./app/calendar.json";
@@ -26,11 +24,15 @@ const wikiFiles = import.meta.glob("./wiki/**/*.json");
/**
* @description 动态读取wiki文件
* @since Alpha v0.1.5
* @since Beta v0.3.8
* @param {string} dir 目录
* @param {string} name 文件名
* @returns {Promise<any>} 文件内容
*/
export async function getWikiData(
dir: "Character",
name: string,
): Promise<{ default: TGApp.App.Character.WikiItem } | undefined>;
export async function getWikiData(dir: string, name: string): Promise<any> {
return await wikiFiles[`./wiki/${dir}/${name}.json`]();
}

View File

@@ -1,13 +1,12 @@
/**
* @file src plugins Hutao types Base.d.ts
* @file src/plugins/Hutao/types/Base.d.ts
* @description Hutao 插件基础类型定义文件
* @author BTMuli <bt-muli@outlook.com>
* @since Alpha v0.2.1
* @since Beta v0.3.8
*/
/**
* @description Hutao 插件基础类型
* @since Alpha v0.2.1
* @since Beta v0.3.8
* @namespace Base
* @return Base
*/
@@ -21,9 +20,29 @@ declare namespace TGApp.Plugins.Hutao.Base {
* @property {any} data 数据
* @return Response
*/
export interface Response {
interface Response {
retcode?: number;
message?: string;
data?: any;
}
/**
* @description 武器类型枚举,英文-中文对照
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Base
* @enum {string}
* @property {string} sword 单手剑
* @property {string} claymore 双手剑
* @property {string} pole 长柄武器
* @property {string} bow 弓
* @property {string} catalyst 法器
* @return WeaponTypeEnum
*/
const enum WeaponType {
sword = "单手剑",
claymore = "双手剑",
pole = "长柄武器",
bow = "弓",
catalyst = "法器",
}
}

257
src/plugins/Hutao/types/Character.d.ts vendored Normal file
View File

@@ -0,0 +1,257 @@
/**
* @file plugins/Hutao/types/Character.d.ts
* @description 角色类型定义
* @since Beta v0.3.8
*/
/**
* @description 角色类型 namespace
* @since Beta v0.3.8
* @namespace TGApp.Plugins.Hutao.Character
* @memberof TGApp.Plugins.Hutao
*/
declare namespace TGApp.Plugins.Hutao.Character {
/**
* @description 元数据-胡桃
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem => Rhi
* @property {number} Id 角色编号
* @property {number} PromoteId 未知
* @property {number} Sort 排序
* @property {number} Body 未知
* @property {string} Icon 角色头像
* @property {string} SideIcon 角色侧面头像
* @property {string} Name 角色名称
* @property {string} Description 角色简介
* @property {string} BeginTime 上线时间 // 2021-03-02T16:00:00+08:00
* @property {number} Quality 角色星级
* @property {TGApp.Plugins.Hutao.Base.WeaponType} Weapon 武器类型
* @property {RhiBaseValue} BaseValue 角色基础属性
* @property {RhiGrowCurve[]} GrowCurves 未知
* @property {RhiSkillDepot} SkillDepot 角色技能
* @property {RhiFetterInfo} FetterInfo 好感信息
* @property {RhiCostume[]} Costumes 角色皮肤
* @property {number[]} CultivationItems 角色培养材料
* @return RawHutaoItem
*/
interface RawHutaoItem {
Id: number;
PromoteId: number;
Sort: number;
Body: number;
Icon: string;
SideIcon: string;
Name: string;
Description: string;
BeginTime: string;
Quality: number;
Weapon: TGApp.Plugins.Hutao.Base.WeaponType;
BaseValue: RhiBaseValue;
GrowCurves: RhiGrowCurve[];
SkillDepot: RhiSkillDepot;
FetterInfo: RhiFetterInfo;
Costumes: RhiCostume[];
CultivationItems: number[];
}
/**
* @description 元数据-胡桃-基础属性
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.BaseValue => Rhi.BaseValue
* @property {number} HpBase 生命值
* @property {number} AttackBase 攻击力
* @property {number} DefenseBase 防御力
* @return RhiBaseValue
*/
interface RhiBaseValue {
HpBase: number;
AttackBase: number;
DefenseBase: number;
}
/**
* @description 元数据-胡桃-成长曲线
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.GrowCurves => Rhi.GrowCurves
* @property {number} Type 未知
* @property {number} Value 未知
* @return RhiGrowCurve
*/
interface RhiGrowCurve {
Type: number;
Value: number;
}
/**
* @description 元数据-胡桃-技能
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.SkillDepot => Rhi.SkillDepot
* @property {number} Arkhe 未知
* @property {RhisdSkill[]} Skills 角色技能
* @property {RhisdSkill} EnergySkill 角色元素爆发
* @property {RhisdSkill[]} Inherents 角色天赋
* @property {RhisdTalent[]} Talents 角色天赋
* @return RhiSkillDepot
*/
interface RhiSkillDepot {
Arkhe: number;
Skills: RhisdSkill[];
EnergySkill: RhisdSkill;
Inherents: RhisdSkill[];
Talents: RhisdTalent[];
}
/**
* @description 元数据-胡桃-技能
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.SkillDepot.Skill => RhisdSkill
* @property {number} GroupId 技能组编号
* @property {string[]} Proud.Description 技能描述
* @property {RhiParameter[]} Proud.Parameters 技能参数
* @property {number} Id 技能编号
* @property {string} Name 技能名称
* @property {string} Description 技能描述
* @property {string} Icon 技能图标
* @return RhisdSkill
*/
interface RhisdSkill {
GroupId: number;
Proud: {
Description: string[];
Parameters: RhiParameter[];
};
Id: number;
Name: string;
Description: string;
Icon: string;
}
/**
* @description 元数据-胡桃-技能-参数
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.SkillDepot.Skill.Proud.Parameters => RhiParameter
* @property {number} Level 技能等级
* @property {number[]} Parameters 技能参数
* @return RhiParameter
*/
interface RhiParameter {
Level: number;
Parameters: number[];
}
/**
* @description 元数据-胡桃-技能-天赋
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.SkillDepot.Talents => RhisdTalent
* @property {number} Id 天赋编号
* @property {string} Name 天赋名称
* @property {string} Description 天赋描述
* @property {string} Icon 天赋图标
* @return RhisdTalent
*/
interface RhisdTalent {
Id: number;
Name: string;
Description: string;
Icon: string;
}
/**
* @description 元数据-胡桃-好感信息
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.FetterInfo => RhiFetterInfo
* @property {string} Title 角色称号
* @property {string} Detail 角色简介
* @property {number} Association 角色地区
* @property {string} Native 角色地区
* @property {number} BirthMonth 角色生日-月
* @property {number} BirthDay 角色生日-日
* @property {string} VisionBefore 角色元素类型
* @property {string} VisionAfter 未知
* @property {string} ConstellationBefore 角色星座
* @property {string} ConstellationAfter 未知
* @property {string} CvChinese 角色声优-中文
* @property {string} CvJapanese 角色声优-日文
* @property {string} CvEnglish 角色声优-英文
* @property {string} CvKorean 角色声优-韩文
* @property {number} CookBonus.OriginItemId 角色特殊料理编号
* @property {number} CookBonus.ItemId 角色特殊料理编号
* @property {number[]} CookBonus.InputList 角色特殊料理材料
* @property {RhiFetter[]} Fetters 角色语音
* @property {RhiFetter[]} FetterStories 角色好感故事
* @return RhiFetterInfo
*/
interface RhiFetterInfo {
Title: string;
Detail: string;
Association: number;
Native: string;
BirthMonth: number;
BirthDay: number;
VisionBefore: string;
VisionAfter: string;
ConstellationBefore: string;
ConstellationAfter: string;
CvChinese: string;
CvJapanese: string;
CvEnglish: string;
CvKorean: string;
CookBonus: {
OriginItemId: number;
ItemId: number;
InputList: number[];
};
Fetters: RhiFetter[];
FetterStories: RhiFetter[];
}
/**
* @description 元数据-胡桃-好感信息-语音
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.FetterInfo.Fetters => RhiFetter
* @property {string} Title 语音标题
* @property {string} Context 语音内容
* @return RhiFetter
*/
interface RhiFetter {
Title: string;
Context: string;
}
/**
* @description 元数据-胡桃-皮肤
* @since Beta v0.3.8
* @memberof TGApp.Plugins.Hutao.Character
* @description RawHutaoItem.Costumes => RhiCostume
* @property {number} Id 皮肤编号
* @property {string} Name 皮肤名称
* @property {string} Description 皮肤描述
* @property {boolean} IsDefault 是否默认皮肤
* @property {string} [FrontIcon] 非默认皮肤头像
* @property {string} [SideIcon] 非默认皮肤侧面头像
* @return RhiCostume
*/
type RhiCostume = {
Id: number;
Name: string;
Description: string;
} & (
| {
FrontIcon: string;
SideIcon: string;
IsDefault: false;
}
| {
IsDefault: true;
}
);
}

View File

@@ -1,8 +1,7 @@
/**
* @file types App Character.d.ts
* @file types/App/Character.d.ts
* @description 角色相关类型定义文件
* @author BTMuli <bt-muli@outlook.com>
* @since Alpha v0.2.2
* @since Beta v0.3.8
*/
declare namespace TGApp.App.Character {
@@ -32,4 +31,63 @@ declare namespace TGApp.App.Character {
weapon: string;
nameCard: string;
}
/**
* @description Wiki 详细数据
* @since Beta v0.3.8
* @interface WikiItem
* @memberof TGApp.Plugins.Hutao.Character
* @property {number} id 角色编号
* @property {string} name 角色名称
* @property {string} title 角色称号
* @property {string} description 角色简介
* @property {object} brief 角色简介
* @property {string} brief.camp 角色地区
* @property {string} brief.constellation 角色星座
* @property {string} brief.birth 角色生日
* @property {object} brief.cv 角色声优
* @property {string} brief.cv.cn 角色声优-中文
* @property {string} brief.cv.jp 角色声优-日文
* @property {string} brief.cv.en 角色声优-英文
* @property {string} brief.cv.kr 角色声优-韩文
* @property {number} star 角色星级
* @property {string} element 角色元素类型
* @property {TGApp.Plugins.Hutao.Base.WeaponType} weapon 角色武器类型
* @property {TGApp.App.Calendar.Material[]} materials 角色培养材料
* @property {object} skills 角色技能
* @property {TGApp.Plugins.Hutao.Character.RhisdSkill[]} skills.normal 正常技能-普攻、战技、元素爆发
* @property {TGApp.Plugins.Hutao.Character.RhisdSkill[]} skills.special 特殊技能
* @property {TGApp.Plugins.Hutao.Character.RhisdTalent[]} constellation 角色命座
* @property {TGApp.Plugins.Hutao.Character.RhiFetter[]} talks 闲聊
* @property {TGApp.Plugins.Hutao.Character.RhiFetter[]} stories 故事
* @return WikiItem
*/
interface WikiItem {
id: number;
name: string;
title: string;
description: string;
brief: {
camp: string;
constellation: string;
birth: string;
cv: {
cn: string;
jp: string;
en: string;
kr: string;
};
};
star: number;
element: string;
weapon: TGApp.Plugins.Hutao.Base.WeaponType;
materials: TGApp.App.Calendar.Material[];
skills: {
normal: TGApp.Plugins.Hutao.Character.RhisdSkill[];
special: TGApp.Plugins.Hutao.Character.RhisdSkill[];
};
constellation: TGApp.Plugins.Hutao.Character.RhisdTalent[];
talks: TGApp.Plugins.Hutao.Character.RhiFetter[];
stories: TGApp.Plugins.Hutao.Character.RhiFetter[];
}
}

View File

@@ -1 +1,29 @@
<template />
<template>
{{ data }}
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import { useRoute } from "vue-router";
import showSnackbar from "../../components/func/snackbar";
import { getWikiData } from "../../data";
const id = <string>useRoute().params.id;
const data = ref<TGApp.App.Character.WikiItem>();
onMounted(async () => {
try {
const res = await getWikiData("Character", id);
if (res !== undefined) {
data.value = res.default;
}
} catch (e) {
console.error(e);
showSnackbar({
text: "Wiki 数据获取失败",
color: "error",
});
history.back();
}
});
</script>