From 2e98428c8101d1829946bafe47d51bc6d77c2cba Mon Sep 17 00:00:00 2001 From: Balint Morasz Date: Wed, 24 Jul 2024 14:16:20 +0200 Subject: [PATCH] feat: 2e Varazskonyv/tanult varazslatok --- .../second-edition/components/Varazskonyv.tsx | 20 +++++++++++++++++-- .../components/VarazskonyvSzint.tsx | 6 +++--- .../second-edition/components/Varazslatok.tsx | 6 ++++-- .../domain-models/characterSlice.ts | 17 +++++++++------- .../second-edition/domain-models/varazslat.ts | 1 + 5 files changed, 36 insertions(+), 14 deletions(-) diff --git a/frontend/src/second-edition/components/Varazskonyv.tsx b/frontend/src/second-edition/components/Varazskonyv.tsx index 949fed5..71a60b7 100644 --- a/frontend/src/second-edition/components/Varazskonyv.tsx +++ b/frontend/src/second-edition/components/Varazskonyv.tsx @@ -3,6 +3,22 @@ import {ClassSpells, KarakterVarazslat} from "../domain-models/varazslat"; import VarazskonyvSzint from "./VarazskonyvSzint"; import React from "react"; +function getTitle(osztaly: Osztaly2E) : string { + if (osztaly === Osztaly2E.Varazslo) { + return "Varázslói Varázskönyv"; + } + if (osztaly === Osztaly2E.Illuzionista) { + return "Illúzionista Varázskönyv"; + } + if (osztaly === Osztaly2E.Dalnok) { + return "Dalnok tanult varázslatok"; + } + if (osztaly === Osztaly2E.Vandor) { + return "Vándor tanult varázslatok"; + } + return "" +} + function Varazskonyv(props: { osztaly: Osztaly2E, varazslatok: KarakterVarazslat[] }) { const {osztaly, varazslatok} = props; @@ -11,7 +27,7 @@ function Varazskonyv(props: { osztaly: Osztaly2E, varazslatok: KarakterVarazslat return <>
-

{osztaly === Osztaly2E.Varazslo ? "Varázslói" : "Illúzionista"} Varázskönyv

+

{getTitle(osztaly)}

{spells.some(v => v.szint === 0) && } @@ -22,4 +38,4 @@ function Varazskonyv(props: { osztaly: Osztaly2E, varazslatok: KarakterVarazslat ; } -export default Varazskonyv \ No newline at end of file +export default Varazskonyv diff --git a/frontend/src/second-edition/components/VarazskonyvSzint.tsx b/frontend/src/second-edition/components/VarazskonyvSzint.tsx index 4c7ec2e..32e2bd9 100644 --- a/frontend/src/second-edition/components/VarazskonyvSzint.tsx +++ b/frontend/src/second-edition/components/VarazskonyvSzint.tsx @@ -28,13 +28,13 @@ function VarazskonyvSzint(props: { osztaly: Osztaly2E, level: number, varazslato selected={v.id} available={[v, ...availableSpells]} dataTestId={`varazskonyv_varazslo_1_${v.id}`} - onChange={(nextId) => dispatch(setVarazslat({prev: v.id, next: nextId}))} + onChange={(next_id) => dispatch(setVarazslat({prev: {id: v.id, osztaly }, next_id: next_id}))} />
@@ -46,7 +46,7 @@ function VarazskonyvSzint(props: { osztaly: Osztaly2E, level: number, varazslato ))} {availableSpells.length > 0 && } ; diff --git a/frontend/src/second-edition/components/Varazslatok.tsx b/frontend/src/second-edition/components/Varazslatok.tsx index fe3dcef..4c14719 100644 --- a/frontend/src/second-edition/components/Varazslatok.tsx +++ b/frontend/src/second-edition/components/Varazslatok.tsx @@ -11,8 +11,10 @@ function Varazslatok() { const classLevels = getClassLevels(karakter.szintlepesek) return <> - {classLevels[Osztaly2E.Varazslo] > 0 && } - {classLevels[Osztaly2E.Illuzionista] > 0 && } + {classLevels[Osztaly2E.Varazslo] > 0 && x.osztaly === Osztaly2E.Varazslo)} />} + {classLevels[Osztaly2E.Illuzionista] > 0 && x.osztaly === Osztaly2E.Illuzionista)} />} + {classLevels[Osztaly2E.Vandor] > 0 && x.osztaly === Osztaly2E.Vandor)} />} + {classLevels[Osztaly2E.Dalnok] > 0 && x.osztaly === Osztaly2E.Dalnok)} />} } diff --git a/frontend/src/second-edition/domain-models/characterSlice.ts b/frontend/src/second-edition/domain-models/characterSlice.ts index a5d3886..4344d3a 100644 --- a/frontend/src/second-edition/domain-models/characterSlice.ts +++ b/frontend/src/second-edition/domain-models/characterSlice.ts @@ -96,17 +96,20 @@ export const characterSlice = createSlice({ setFelszereles: (state, action: {payload: KarakterFelszereles}) => { state.felszereles = action.payload; }, - addVarazslat: (state, action: {payload: string}) => { - state.varazslatok = [...state.varazslatok, {id: action.payload, bekeszitve: false}]; + addVarazslat: (state, action: {payload: {id: string, osztaly: Osztaly2E}}) => { + state.varazslatok = [...state.varazslatok, {id: action.payload.id, osztaly: action.payload.osztaly, bekeszitve: false}]; }, - setVarazslat: (state, action: {payload: {prev: string, next: string}}) => { - let spell = state.varazslatok.find(x => x.id === action.payload.prev) + setVarazslat: (state, action: {payload: {prev: {id: string, osztaly: Osztaly2E}, next_id: string}}) => { + let spell = state.varazslatok.find(x => + x.id === action.payload.prev.id + && x.osztaly === action.payload.prev.osztaly) if (spell !== undefined) { - spell.id = action.payload.next + spell.id = action.payload.next_id } }, - removeVarazslat: (state, action: {payload: string}) => { - state.varazslatok = [...state.varazslatok.filter(x => x.id !== action.payload)]; + removeVarazslat: (state, action: {payload: {id: string, osztaly: Osztaly2E}}) => { + state.varazslatok = [...state.varazslatok.filter(x => + x.id !== action.payload.id && x.osztaly !== action.payload.osztaly)]; }, } }) diff --git a/frontend/src/second-edition/domain-models/varazslat.ts b/frontend/src/second-edition/domain-models/varazslat.ts index 252cf4c..f1a581f 100644 --- a/frontend/src/second-edition/domain-models/varazslat.ts +++ b/frontend/src/second-edition/domain-models/varazslat.ts @@ -40,6 +40,7 @@ export type OsztalyVarazslat = OsztalyCantrip | OsztalySzintVarazslat; export interface KarakterVarazslat { id: string bekeszitve: boolean + osztaly: Osztaly2E } export function GetCantrips(osztaly: Osztaly2E): Cantrip[] {