From cd0bc1da73e2a0e50e2ed1791cb84008df7841dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=93=9C=C2=B0?= Date: Tue, 1 Apr 2025 10:26:32 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=84=E9=AD=94=E5=AF=BC=E5=85=A5=20?= =?UTF-8?q?=E8=A3=85=E5=A4=87=E5=9F=BA=E7=A1=80=E4=BF=A1=E6=81=AF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/core/basic/character.py | 7 +- backend/core/basic/equipment.py | 18 ++++- .../GF/gunner_female/spitfire_female.py | 2 +- backend/dataFiles/dcalc_0.db | Bin 1445888 -> 729088 bytes backend/database/models.py | 9 +++ frontend/src/api/info/type.ts | 12 ++-- .../Character/Forge/components/equipment.vue | 12 ++-- .../Skill/components/SkillTree/index.tsx | 62 ++++++++++-------- frontend/src/stores/config.ts | 4 +- frontend/src/stores/info.ts | 4 +- 10 files changed, 81 insertions(+), 49 deletions(-) diff --git a/backend/core/basic/character.py b/backend/core/basic/character.py index c62962d7..59598778 100644 --- a/backend/core/basic/character.py +++ b/backend/core/basic/character.py @@ -400,15 +400,16 @@ class Character: } ) info['skills'] = skillInfo + equInfos = get_equipment(self.equVersion) equs = [] suits = [] - for i in get_equipment(self.equVersion).equs: + for i in equInfos.equs: equs.append(i.__dict__) - for i in get_equipment(self.equVersion).suits: + for i in equInfos.suits: suits.append(i.__dict__) info['equips'] = equs info['suits'] = suits - enchats = [] + info['enchants'] = equInfos.enchants emblems = [] return info diff --git a/backend/core/basic/equipment.py b/backend/core/basic/equipment.py index 006e2dac..0414366b 100644 --- a/backend/core/basic/equipment.py +++ b/backend/core/basic/equipment.py @@ -1,5 +1,5 @@ import importlib -from database.models import Session, EquData, SuitData +from database.models import Session, EquData, SuitData, EnchantData from database.connect import get_db_engine as get_engine from functools import cache @@ -7,7 +7,6 @@ from functools import cache def parse_to_number_list(info: str, default: list[float] = [0]) -> list[float]: return default if not info else [float(i) for i in info.split(',')] - class Equ: id: str name: str @@ -73,10 +72,12 @@ class Equipments: self.equs: list[Equ] = [] self.funs = self.init_func() self.equ_dict: dict[str, Equ] = {} + self.enchants = [] self.suits: list[Suit] = [] self.suit_dict: dict[str, Suit] = {} self.init_equs() self.init_suits() + self.init_enchants() self.engine.dispose() def init_equs(self): @@ -111,6 +112,19 @@ class Equipments: self.suit_dict.setdefault(str(suit.suitId), []).append(suit) pass + def init_enchants(self): + """从数据库中获取所有附魔信息""" + with Session(self.engine) as session: + db_list = session.query(EnchantData).all() + for item in db_list: + enchant = {k: v for k, v in item.__dict__.items() if not k.startswith('_')} + enchant['position'] = [] if enchant['itemType'] is None else enchant['itemType'].split(',') + enchant['categorize'] = [] if enchant['categorize'] is None else enchant['categorize'].split(',') + del enchant['itemType'] + self.enchants.append(enchant) + pass + pass + def init_func(self): """根据装备版本加载装备效果""" try: diff --git a/backend/core/character/GF/gunner_female/spitfire_female.py b/backend/core/character/GF/gunner_female/spitfire_female.py index 359d2be4..012e506d 100644 --- a/backend/core/character/GF/gunner_female/spitfire_female.py +++ b/backend/core/character/GF/gunner_female/spitfire_female.py @@ -312,7 +312,7 @@ class Skill18(ActiveSkill): cube = 3 cd = 30 mp = [800, 1680] - icon = '$char/超真空弹:切利.png' + icon = '$char/超真空弹:切利' data0 = [0, 246, 272, 296, 320, 347, 372, 396, 420, 447, 473, 497, 521, 546, 573, 597, 623, 647, 671, 698, 723, 747, 771, 798, 824, 848, 872, 897, 924, 948, 972, 998, 1022, 1049, 1074, 1098, 1122, 1148, 1175, 1199, 1223, 1248, 1275, 1299, 1323, 1349, 1373, 1400, 1424, 1449, 1473]# noqa: E501 hit0 = 20 diff --git a/backend/dataFiles/dcalc_0.db b/backend/dataFiles/dcalc_0.db index 459eb74ec5c6d8d727198465dfe88fb590565ee4..5262a90f59016058c64a59cc33f4d4d64ae60302 100644 GIT binary patch delta 75617 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 delta 10563 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 CSO(Sr diff --git a/backend/database/models.py b/backend/database/models.py index 01fdc34e..97424c4d 100644 --- a/backend/database/models.py +++ b/backend/database/models.py @@ -55,3 +55,12 @@ class EquData(Base): Attack = Column(Text) Buffer = Column(Text) suit = Column(Text) + +class EnchantData(Base): + __tablename__ = 'enchant' + + id = Column(Integer, primary_key=True) + detail = Column(Text) + categorize = Column(Integer) + itemType = Column(Text) + fame = Column(Integer) diff --git a/frontend/src/api/info/type.ts b/frontend/src/api/info/type.ts index fd53222e..c541b6ea 100644 --- a/frontend/src/api/info/type.ts +++ b/frontend/src/api/info/type.ts @@ -26,7 +26,7 @@ export interface ICharacterInfo { name: string equVersion: string equips: IEquipment[] - enchantings: IEnchantingInfo[] + enchants: IEnchantingInfo[] emblems: IEnchantingInfo[] weapons: string[] skills: ISkill[] @@ -65,10 +65,10 @@ export interface ISuit { export interface IEnchantingInfo { id: string | number - maxFame: number | undefined + fame: number | undefined position: string[] - props: string - type: string | undefined - rarity: string | undefined - rate: number + detail: string + categorize: string[] + rarity?: string + type?: string } diff --git a/frontend/src/pages/Character/Forge/components/equipment.vue b/frontend/src/pages/Character/Forge/components/equipment.vue index 02f93bf6..abd4c308 100644 --- a/frontend/src/pages/Character/Forge/components/equipment.vue +++ b/frontend/src/pages/Character/Forge/components/equipment.vue @@ -30,14 +30,14 @@ export default defineComponent({ const basicInfoStore = useInfoStore() const enchanting_list = computed(() => { - return basicInfoStore.enchantings + return basicInfoStore.enchants ?.filter( (item) => item.position.includes(props.part) && !item.position.includes('武器装扮') && !item.position.includes('宠物装备'), ) - .sort((a, b) => b.rate - a.rate) + .sort((a, b) => (b.fame ?? 0) - (a.fame ?? 0)) }) const emblem_list = computed(() => { @@ -68,7 +68,7 @@ export default defineComponent({ if (global_change.value) { if (name === 'enchanting') { - const enchant = basicInfoStore?.enchantings?.find((item) => item.id == val) as + const enchant = basicInfoStore?.enchants?.find((item) => item.id == val) as | IEnchantingInfo | undefined if (enchant?.position) { @@ -177,7 +177,7 @@ export default defineComponent({ 无 {renderList(enchanting_list.value ?? [], (item) => ( - {item.props} + {item.detail} ))} @@ -193,7 +193,7 @@ export default defineComponent({ {renderList(emblem_list.value ?? [], (item) => ( {`${item.rarity}${item.type}徽章[${item.props}]`} + >{`${item.rarity}${item.type}徽章[${item.detail}]`} ))} {has_emblem_1.value && ( @@ -202,7 +202,7 @@ export default defineComponent({ {renderList(emblem_list.value ?? [], (item) => ( {`${item.rarity}${item.type}徽章[${item.props}]`} + >{`${item.rarity}${item.type}徽章[${item.detail}]`} ))} )} diff --git a/frontend/src/pages/Character/Skill/components/SkillTree/index.tsx b/frontend/src/pages/Character/Skill/components/SkillTree/index.tsx index b23c6b17..850af9fe 100644 --- a/frontend/src/pages/Character/Skill/components/SkillTree/index.tsx +++ b/frontend/src/pages/Character/Skill/components/SkillTree/index.tsx @@ -71,34 +71,41 @@ export default defineComponent({ } } - const renderSkill = (skill: ISkill, index: number) => ( - <> -
- {activeSkill.value == skill.id && renderSkillAction(skill)} -
{ - e.stopPropagation() - chooseSkill(skill) - }} - onContextmenu={(e) => { - e.stopPropagation() - e.preventDefault() - chooseSkill(skill, 'sub') - }} - key={index} - > - -
- {lvInfo.value?.[skill.id.toString()]?.lv ?? 0} + const renderSkill = (skill: ISkill, index: number) => { + const info = lvInfo.value?.[skill.id.toString()] + let color = 'white' + if (info?.lv < skill.maxLearnLv) color = '#32E432' + if (info?.lv > skill.maxLearnLv) color = '#58E0FC' + return ( + <> +
+ {activeSkill.value == skill.id && renderSkillAction(skill)} +
{ + e.stopPropagation() + chooseSkill(skill) + }} + onContextmenu={(e) => { + e.stopPropagation() + e.preventDefault() + chooseSkill(skill, 'sub') + }} + key={index} + > + +
+ {info?.lv ?? 0} +
-
- - ) + + ) + } const renderSkillAction = (skill: ISkill) => ( <> @@ -156,7 +163,8 @@ export default defineComponent({ {lvList.map((lv, index) => (
{lv == 1 || lv % 10 == 0 ? ( -
{lv}
+
{lv}
) : (
)} diff --git a/frontend/src/stores/config.ts b/frontend/src/stores/config.ts index 19a848c4..578e8cc1 100644 --- a/frontend/src/stores/config.ts +++ b/frontend/src/stores/config.ts @@ -21,7 +21,7 @@ export interface IConfig { id: string reinforce: number reinforceType: number - enchat: number + enchant: number emblem_0: string emblem_1: string upgrade: number @@ -36,7 +36,7 @@ const defaultEqusConfig = { id: '', reinforce: 0, reinforceType: 0, - enchat: 0, + enchant: 0, emblem_0: "0", emblem_1: "0", upgrade: 0, diff --git a/frontend/src/stores/info.ts b/frontend/src/stores/info.ts index f64da7b6..4344f4bd 100644 --- a/frontend/src/stores/info.ts +++ b/frontend/src/stores/info.ts @@ -13,7 +13,7 @@ export const useInfoStore = defineStore("infoStore", ()=>{ const suits = computed(()=>infos.value?.suits ?? []) - const enchantings = computed(()=>infos.value?.enchantings?? []) + const enchants = computed(()=>infos.value?.enchants ?? []) const emblems = computed(()=>infos.value?.emblems?? []) @@ -32,7 +32,7 @@ export const useInfoStore = defineStore("infoStore", ()=>{ equips, suits, createCharacter, - enchantings, + enchants, emblems, parts }