From 73600317286b3e61527b6727394a8acdd3212254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=93=9C=C2=B0?= Date: Thu, 17 Apr 2025 18:47:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A7=89=E9=86=92=E7=BB=91?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dataFiles/dcalc_0.db | Bin 1007616 -> 1007616 bytes .../components/SkillTree/img/awake_50.png | Bin 0 -> 3299 bytes .../components/SkillTree/img/awake_85.png | Bin 0 -> 3372 bytes .../Skill/components/SkillTree/img/skill.png | Bin 0 -> 545 bytes .../components/SkillTree/img/skillActive.png | Bin 0 -> 1391 bytes .../Skill/components/SkillTree/index.tsx | 85 ++++++++++++------ .../Skill/components/SkillTree/style.scss | 20 +++++ frontend/src/pages/Character/Skill/index.vue | 2 +- frontend/src/stores/config.ts | 4 + 9 files changed, 85 insertions(+), 26 deletions(-) create mode 100644 frontend/src/pages/Character/Skill/components/SkillTree/img/awake_50.png create mode 100644 frontend/src/pages/Character/Skill/components/SkillTree/img/awake_85.png create mode 100644 frontend/src/pages/Character/Skill/components/SkillTree/img/skill.png create mode 100644 frontend/src/pages/Character/Skill/components/SkillTree/img/skillActive.png diff --git a/backend/dataFiles/dcalc_0.db b/backend/dataFiles/dcalc_0.db index 59bd9672a9680aa02ac1fbd86c802940615d5290..2749a28615e5a35552bc4f064e1fdab137953da1 100644 GIT binary patch delta 125 zcmZoTVB2uOc7inH`H3>ljOQB@S`!#s6PQ{Pm|GKAS`%1X6WCf4*jp1gS`#>16S%e} za4(16S%e} za4(Hq)$ diff --git a/frontend/src/pages/Character/Skill/components/SkillTree/img/awake_50.png b/frontend/src/pages/Character/Skill/components/SkillTree/img/awake_50.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb5df99300e29033603f9150f1d30ea74db7d18 GIT binary patch literal 3299 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 literal 0 HcmV?d00001 diff --git a/frontend/src/pages/Character/Skill/components/SkillTree/index.tsx b/frontend/src/pages/Character/Skill/components/SkillTree/index.tsx index 63fdea84..521c9540 100644 --- a/frontend/src/pages/Character/Skill/components/SkillTree/index.tsx +++ b/frontend/src/pages/Character/Skill/components/SkillTree/index.tsx @@ -14,10 +14,15 @@ export default defineComponent({ type: Object as PropType>, default: () => ({}), }, + bindAwake: { + type: Number, + default: ()=>50, + }, }, setup(props) { const skills = computed(() => props.skills) const lvInfo = useVModel(props, 'lvInfo') + const bindAwake = useVModel(props, 'bindAwake') const getSkill = (lvStart: number, lvEnd: number, position: number) => { if (position >= 0) @@ -48,6 +53,13 @@ export default defineComponent({ else activeSkill.value = skill.id } + const awakeSkill_1 = computed(() => + skills.value.find((item) => item.learnLv == 50 && item.type == 'active'), + ) + const awakeSkill_2 = computed(() => + skills.value.find((item) => item.learnLv == 85 && item.type == 'active'), + ) + const actionSkillLv = (skill: ISkill, operation: string) => { if (operation == 'add') { lvInfo.value[skill.id.toString()] = { @@ -71,6 +83,11 @@ export default defineComponent({ } } + const chooseBindAwake = (lv:number) => { + bindAwake.value = lv + console.log(bindAwake.value,lv) + } + const renderSkill = (skill: ISkill, index: number) => { const info = lvInfo.value?.[skill.id.toString()] let color = 'white' @@ -81,7 +98,7 @@ export default defineComponent({
{activeSkill.value == skill.id && renderSkillAction(skill)}
{ e.stopPropagation() chooseSkill(skill) @@ -94,16 +111,33 @@ export default defineComponent({ key={index} > -
+
{info?.lv ?? 0}
+ {skill.learnLv == 100 && ( + <> +
+
chooseBindAwake(50)}> + +
1次
+
+
chooseBindAwake(85)}> + +
2次
+
+
+ + )}
) @@ -112,10 +146,8 @@ export default defineComponent({ const renderSkillAction = (skill: ISkill) => ( <> <> -
-
-
-
+
+
{ @@ -145,7 +177,6 @@ export default defineComponent({ }} >
-
@@ -167,20 +198,24 @@ export default defineComponent({ )} - {lvList.map((lv, index) => ((getSkill(lv, lvList[index + 1] ?? 150, -1) as ISkill[])?.length ?? 0) > 0 ?( -
- {lv == 1 || lv % 10 == 0 ? ( -
{lv}
- ) : ( -
- )} - {columns.map((column, i) => { - const skill = getSkill(lv, lvList[index + 1] ?? 150, column) as ISkill - return skill ? renderSkill(skill, index) :
- })} -
(activeSkill.value = -1)}>
-
- ):(<>))} + {lvList.map((lv, index) => + ((getSkill(lv, lvList[index + 1] ?? 150, -1) as ISkill[])?.length ?? 0) > 0 ? ( +
+ {lv == 1 || lv % 10 == 0 ? ( +
{lv}
+ ) : ( +
+ )} + {columns.map((column, i) => { + const skill = getSkill(lv, lvList[index + 1] ?? 150, column) as ISkill + return skill ? renderSkill(skill, index) :
+ })} +
(activeSkill.value = -1)}>
+
+ ) : ( + <> + ), + )}
) diff --git a/frontend/src/pages/Character/Skill/components/SkillTree/style.scss b/frontend/src/pages/Character/Skill/components/SkillTree/style.scss index 6b7bd45e..ca23eb27 100644 --- a/frontend/src/pages/Character/Skill/components/SkillTree/style.scss +++ b/frontend/src/pages/Character/Skill/components/SkillTree/style.scss @@ -12,3 +12,23 @@ .passive { filter: grayscale(100%) invert(3%) sepia(14%) saturate(874%) hue-rotate(65deg) brightness(105%) contrast(102%); } + +.skill{ + background-image: url('./img/skill.png'); + background-size: 100% 100%; +} + +.skill-active{ + background-image: url('./img/skillActive.png'); + background-size: 100% 100%; +} + +.awake_50{ + background-image: url('./img/awake_50.png'); + background-size: 100% 100%; +} + +.awake_85{ + background-image: url('./img/awake_85.png'); + background-size: 100% 100%; +} diff --git a/frontend/src/pages/Character/Skill/index.vue b/frontend/src/pages/Character/Skill/index.vue index ac191f39..57123a52 100644 --- a/frontend/src/pages/Character/Skill/index.vue +++ b/frontend/src/pages/Character/Skill/index.vue @@ -1,7 +1,7 @@ diff --git a/frontend/src/stores/config.ts b/frontend/src/stores/config.ts index affdfd7a..40d5db62 100644 --- a/frontend/src/stores/config.ts +++ b/frontend/src/stores/config.ts @@ -51,6 +51,7 @@ export interface IConfig { } > sundry: Record + bindAwake: number } const defaultEqusConfig = { @@ -82,6 +83,7 @@ export const useConfigStore = defineStore('configStore', () => { jades: {}, avatar: {}, sundry: {}, + bindAwake: 50 }) const skillCountConfig = ref([]) @@ -107,12 +109,14 @@ export const useConfigStore = defineStore('configStore', () => { jades: {}, avatar: {}, sundry: {}, + bindAwake: 50 } if (!config.value?.equips) config.value.equips = {} if (!config.value?.skills) config.value.skills = {} if (!config.value?.jades) config.value.jades = {} if (!config.value?.avatar) config.value.avatar = {} if (!config.value?.sundry) config.value.sundry = {} + if (!config.value?.bindAwake) config.value.bindAwake = 50 const part = [...infoStore.parts, '宠物', '副武器'].filter( (a) => !config.value?.equips.hasOwnProperty(a),