diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index eefb149..f56e067 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -12,6 +12,7 @@ import store, {AppDispatch, RootState} from './store' import { Provider } from "react-redux" import { useSelector, useDispatch } from 'react-redux' import {load, setUser, unsetUser, userSelector} from './shared/domain-models/userSlice' +import {setCharacter} from "./second-edition/domain-models/characterSlice"; function Router(props: {faro?: Faro}) { const dispatch = useDispatch.withTypes()() @@ -79,7 +80,18 @@ function Router(props: {faro?: Faro}) { { path: "/2e/karakter/:id", element: , - loader: args => fetch(`${window.location.origin}/api/Character2E/${args.params.id}`), + loader: async args => { + const response = await fetch(`${window.location.origin}/api/Character2E/${args.params.id}`) + if (response.ok) { + const loaded2Echaracter = await response.json() + dispatch(setCharacter(loaded2Echaracter)) + return loaded2Echaracter; + } + return { + isPublic: false, + error: response.statusText, + }; + }, ErrorBoundary: ErrorBoundary, }, ]); diff --git a/frontend/src/second-edition/components/FajSelector2E.tsx b/frontend/src/second-edition/components/FajSelector2E.tsx index 0cb2533..cf399c6 100644 --- a/frontend/src/second-edition/components/FajSelector2E.tsx +++ b/frontend/src/second-edition/components/FajSelector2E.tsx @@ -1,8 +1,13 @@ import React from "react"; import {Faj2E, FajDescription, FajLabel, FajSpecials} from "../domain-models/faj2E"; +import {useDispatch, useSelector} from "react-redux"; +import {AppDispatch, RootState} from "../../store"; +import {characterSelector, setFaj} from "../domain-models/characterSlice"; -function FajSelector2E(props: { faj: Faj2E, changeFaj: (val: Faj2E) => void }) { - const {faj, changeFaj} = props +function FajSelector2E(props: { faj?: Faj2E, changeFaj?: (val: Faj2E) => void }) { + const dispatch = useDispatch.withTypes()() + const faj = props.faj ?? useSelector.withTypes()(characterSelector).faj + const changeFaj = props.changeFaj ?? (faj => dispatch(setFaj(faj))); return <>
diff --git a/frontend/src/second-edition/components/Felszereles.tsx b/frontend/src/second-edition/components/Felszereles.tsx index 992ff6f..d50b712 100644 --- a/frontend/src/second-edition/components/Felszereles.tsx +++ b/frontend/src/second-edition/components/Felszereles.tsx @@ -5,7 +5,7 @@ import {AllowedPajzsTypes, AllowedPancelTypes} from '../domain-models/allowed-pa import fegyverek from '../domain-models/fegyver.json' import {arraySetN} from "../../util"; import {AllowedFegyver} from "../domain-models/allowed-fegyver"; -import FegyverSelector from "./FegyverSelector"; +import FegyverSelector from "../display-components/FegyverSelector"; function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles: (felszereles: KarakterFelszereles) => void, osztaly: Osztaly2E}) { const { felszereles, changeFelszereles, osztaly } = props; diff --git a/frontend/src/second-edition/components/HarcosFegyverSpec.tsx b/frontend/src/second-edition/components/HarcosFegyverSpec.tsx index 01f9b1c..4053dc7 100644 --- a/frontend/src/second-edition/components/HarcosFegyverSpec.tsx +++ b/frontend/src/second-edition/components/HarcosFegyverSpec.tsx @@ -1,25 +1,30 @@ import React from "react"; import {GetFegyver} from "../domain-models/felszereles"; -import FegyverSelector from "./FegyverSelector"; +import FegyverSelector from "../display-components/FegyverSelector"; import {AllowedFegyver} from "../domain-models/allowed-fegyver"; import {Osztaly2E} from "../domain-models/osztaly2E"; +import {useDispatch, useSelector} from "react-redux"; +import {AppDispatch, RootState} from "../../store"; +import {characterSelector, setHarcosSpecialization} from "../domain-models/characterSlice"; function HarcosFegyverSpecializacio(props: { - specialization: string, - existingSpecializations: (string | undefined)[], - changeSpecialization: (specialization: string) => void szint: number }) { const { - specialization, - existingSpecializations, - changeSpecialization, szint } = props + + const dispatch = useDispatch.withTypes()() + const character = useSelector.withTypes()(characterSelector) + const specialization = character.szintlepesek[szint-1].harcosFegyver || 'kard_hosszu' + const existingSpecializations = character.szintlepesek.filter(x => x.harcosFegyver != null).map(x => x.harcosFegyver! as string) + const changeSpecialization = (specialization: string) => dispatch(setHarcosSpecialization({szint, fegyver: specialization})) + const fegyver = GetFegyver(specialization) const availableFegyverek = AllowedFegyver(Osztaly2E.Harcos) const pickableFegyverek = availableFegyverek.filter(f => f.Id === specialization || existingSpecializations.filter(x => x === f.Id).length < (szint < 9 ? 1 : 2)) + return <>
diff --git a/frontend/src/second-edition/components/HarcosFegyverSpecializacio.tsx b/frontend/src/second-edition/components/HarcosFegyverSpecializacio.tsx deleted file mode 100644 index d15f417..0000000 --- a/frontend/src/second-edition/components/HarcosFegyverSpecializacio.tsx +++ /dev/null @@ -1,38 +0,0 @@ -// import React from "react"; -// import fegyverek from "../domain-models/fegyver.json" -// import {defaultFegyverID, GetFegyver} from "../domain-models/felszereles"; -// -// function HarcosFegyverSpecializacio(props: { -// specialization: string, -// existingSpecializations: string[], -// changeSpecialization: (specialization: string) => void -// szint: number -// }) { -// const { -// specialization, -// existingSpecializations, -// changeSpecialization, -// szint -// } = props -// const fegyver = GetFegyver(specialization) -// const pickableFegyverek = fegyverek.data.filter(f => f.Id === specialization || existingSpecializations.filter(x => x === f.Id).length < (szint < 9 ? 1 : 2)) -// const kozelharciPickable = pickableFegyverek.filter(f => f.Type === 'kozelharci') -// const tavolsagiPickable = pickableFegyverek.filter(f => f.Type === 'lofegyver') -// -// return <> -//
-// -// -// {fegyver == null && Ismeretlen fegyver: {specialization}} -//
-// -// } -// -// export default HarcosFegyverSpecializacio diff --git a/frontend/src/second-edition/components/JellemSelector.tsx b/frontend/src/second-edition/components/JellemSelector.tsx index 69476f9..e658726 100644 --- a/frontend/src/second-edition/components/JellemSelector.tsx +++ b/frontend/src/second-edition/components/JellemSelector.tsx @@ -1,8 +1,14 @@ import React from "react"; import {AllJellemIDs, GetJellem, JellemID} from "../domain-models/jellem"; +import {useDispatch, useSelector} from "react-redux"; +import {AppDispatch, RootState} from "../../store"; +import {characterSelector, setJellem} from "../domain-models/characterSlice"; -function JellemSelector(props: {selected: JellemID, changeJellem: (val: JellemID) => void}) { - const { selected, changeJellem } = props +function JellemSelector(props: {selected?: JellemID, changeJellem?: (val: JellemID) => void}) { + const character = useSelector.withTypes()(characterSelector) + const selected = props.selected ?? character.jellem + const dispatch = useDispatch.withTypes()() + const changeJellem = props.changeJellem ?? (val => dispatch(setJellem(val))) const jellem = GetJellem(selected) return <>
diff --git a/frontend/src/second-edition/components/KalozKritikus.tsx b/frontend/src/second-edition/components/KalozKritikus.tsx index 48a4b0d..1069d87 100644 --- a/frontend/src/second-edition/components/KalozKritikus.tsx +++ b/frontend/src/second-edition/components/KalozKritikus.tsx @@ -1,7 +1,7 @@ import React from "react"; import {Osztaly2E} from "../domain-models/osztaly2E"; import {AllowedFegyver} from "../domain-models/allowed-fegyver"; -import FegyverSelector from "./FegyverSelector"; +import FegyverSelector from "../display-components/FegyverSelector"; function KalozKritikus(props: { kritFegyverId: string, diff --git a/frontend/src/second-edition/components/KarakterKepzettsegek2E.tsx b/frontend/src/second-edition/components/KarakterKepzettsegek2E.tsx index 9556278..ab7f3be 100644 --- a/frontend/src/second-edition/components/KarakterKepzettsegek2E.tsx +++ b/frontend/src/second-edition/components/KarakterKepzettsegek2E.tsx @@ -1,12 +1,18 @@ import React from "react"; -import KepzettsegSelector from "./KepzettsegSelector2E"; +import KepzettsegSelector from "../display-components/KepzettsegSelector2E"; import { + GetKepzettsegListaN, + GetNumberOfKepzettsegek, Kepzettseg, Kepzettsegek, KepzettsegId, TolvajKepzettsegList, } from "../domain-models/kepzettsegek2E"; import {arraySetN} from "../../util"; +import {useDispatch, useSelector} from "react-redux"; +import {AppDispatch, RootState} from "../../store"; +import {characterSelector, setKepzettsegek, setTolvajKepzettsegek} from "../domain-models/characterSlice"; +import {TulajdonsagokFajjal} from "../domain-models/faj2E"; function InternalKepzettsegekSelector(props: { title: string, @@ -59,15 +65,19 @@ function InternalKepzettsegekSelector(props: { } -function KarakterKepzettsegek (props: { - numberOfKepzettsegek: number - kepzettsegek: KepzettsegId[], - changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void - tolvajKepzettsegek: KepzettsegId[], - changeTolvajKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void - getKepzettsegListaN: (n: number) => Kepzettseg[] -}) { - const { kepzettsegek, numberOfKepzettsegek, getKepzettsegListaN, changeKepzettsegek, tolvajKepzettsegek, changeTolvajKepzettsegek} = props +function KarakterKepzettsegek () { + const karakter = useSelector.withTypes()(characterSelector); + const dispatch = useDispatch.withTypes()(); + + const tulajdonsagokFajjal = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj) + const numberOfKepzettsegek = GetNumberOfKepzettsegek(tulajdonsagokFajjal.t_int, karakter.faj) + const kepzettsegek = karakter.kepzettsegek + const fajError = karakter.kepzettsegFajError + const osztalyError = karakter.kepzettsegOsztalyError + const tolvajKepzettsegek = karakter.tolvajKepzettsegek || [] + const getKepzettsegListaN = GetKepzettsegListaN(karakter) + const changeKepzettsegek = (k: KepzettsegId[]) => dispatch(setKepzettsegek(k)) + const changeTolvajKepzettsegek = (k: KepzettsegId[]) => dispatch(setTolvajKepzettsegek(k)) // TODO: Birodalmi tolvajnal az Alikmia, vagy Meregkeveres kezelese @@ -85,7 +95,10 @@ function KarakterKepzettsegek (props: { kepzettsegek={kepzettsegek} dataTestId={"kepzettseg"} /> - + {fajError && ( + {fajError})} + {osztalyError && ( + {osztalyError})} {tolvajKepzettsegek.length > 0 && ()(characterSelector) + const dispatch = useDispatch.withTypes()() + return <> +
+ + dispatch(setNev(e.target.value))}/> + {!karakter.nev && + A karaktered nem mászkálhat névtelenül a világban!} +
+ +
+ + dispatch(setIsten(e.target.value))}/> +
+ + +} + +export default KarakterSzarmazas; \ No newline at end of file diff --git a/frontend/src/second-edition/components/LevelUps.tsx b/frontend/src/second-edition/components/LevelUps.tsx index d2b0d57..a285fb7 100644 --- a/frontend/src/second-edition/components/LevelUps.tsx +++ b/frontend/src/second-edition/components/LevelUps.tsx @@ -17,7 +17,6 @@ function LevelUp(props: { karakter: Karakter2E, changeTulajdonsagNoveles: (t: Tulajdonsag2E) => void, changeRolledHP: (rolledHP: number) => void, - changeHarcosSpec: (spec: string) => void, changeKalozKritikus: (krit: string) => void, changeOsztaly: (osztaly: Osztaly2E) => void }) { @@ -27,7 +26,6 @@ function LevelUp(props: { karakter, changeTulajdonsagNoveles, changeRolledHP, - changeHarcosSpec, changeKalozKritikus, changeOsztaly } = props @@ -36,7 +34,6 @@ function LevelUp(props: { const harcosSzint = classLevels[Osztaly2E.Harcos] const kalozSzint = classLevels[Osztaly2E.Tengeresz] - const specialization = karakter.szintlepesek[szint-1].harcosFegyver const krit = karakter.szintlepesek[szint-1].kalozKritikus return
@@ -66,9 +63,6 @@ function LevelUp(props: { /> {osztaly === Osztaly2E.Harcos && harcosSzint % 2 === 1 && x.harcosFegyver)} - changeSpecialization={changeHarcosSpec} szint={harcosSzint} /> } @@ -103,18 +97,6 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs: }; } - const changeHarcosSpecializacioAtSzint = (szint: number) => { - return (spec: string) => { - changeKarakter({ - ...karakter, - szintlepesek: arraySetN(karakter.szintlepesek, szint-1, { - ...karakter.szintlepesek[szint-1], - harcosFegyver: spec - }) - }) - }; - } - const changeKalozKritikusAtSzint = (szint: number) => { return (krit: string) => { changeKarakter({ @@ -138,7 +120,6 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs: karakter={{...karakter, szintlepesek: karakter.szintlepesek.slice(0, szint) ,tulajdonsagok: tulajdonsagokAtSzint(szint)}} changeTulajdonsagNoveles={changeTulajdonsagNovelesAtSzint(szint)} changeRolledHP={changeRolledHPAtSzint(szint)} - changeHarcosSpec={changeHarcosSpecializacioAtSzint(szint)} changeKalozKritikus={changeKalozKritikusAtSzint(szint)} changeOsztaly={(o) => changeKarakter(ChangeOsztalyAtSzint(karakter, o, szint))} /> diff --git a/frontend/src/second-edition/components/MasodlagosErtekek.tsx b/frontend/src/second-edition/components/MasodlagosErtekek.tsx index db0edd3..d561a39 100644 --- a/frontend/src/second-edition/components/MasodlagosErtekek.tsx +++ b/frontend/src/second-edition/components/MasodlagosErtekek.tsx @@ -1,10 +1,32 @@ import React from "react"; import {OverlayTrigger, Tooltip} from "react-bootstrap"; import {SignedNumberToText} from "../../shared/components/Helpers"; -import {MasodlagosErtekekView} from "../domain-models/masodlagos_ertekek"; +import {CalculateMasodlagosErtekek, MasodlagosErtekekView} from "../domain-models/masodlagos_ertekek"; +import {useSelector} from "react-redux"; +import {RootState} from "../../store"; +import {characterSelector} from "../domain-models/characterSlice"; +import {TulajdonsagokTotal} from "../domain-models/tulajdonsag2E"; -function MasodlagosErtekek(props: MasodlagosErtekekView) { +export function MasodlagosErtekek(props: {szint?: number}) { + let karakter = useSelector.withTypes()(characterSelector); + if (props.szint !== karakter.szint && props.szint !== undefined) { + const szintlepesek = karakter.szintlepesek.slice(0, props.szint) + karakter = { + ...karakter, + tulajdonsagok: TulajdonsagokTotal({ + tulajdonsagok: karakter.tulajdonsagok, + faj: karakter.faj, + szintlepesek, + }), + szint: props.szint, + szintlepesek, + } + } + const masodlagosErtekek = CalculateMasodlagosErtekek(karakter) + return +} +export function MasodlagosErtekekPresenter(props: MasodlagosErtekekView) { const { HP, VO, CelzoTB, Mentok, KozelharciTB } = props const tooltip = ( diff --git a/frontend/src/second-edition/components/OsztalySelector2E.tsx b/frontend/src/second-edition/components/OsztalySelector2E.tsx index 52a3419..d7c3b7c 100644 --- a/frontend/src/second-edition/components/OsztalySelector2E.tsx +++ b/frontend/src/second-edition/components/OsztalySelector2E.tsx @@ -7,8 +7,24 @@ import { OsztalySpecialSkills } from "../domain-models/osztaly2E"; import {Faj2E, SzintKorlatokFajokra} from "../domain-models/faj2E"; +import {useDispatch, useSelector} from "react-redux"; +import {AppDispatch, RootState} from "../../store"; +import {characterSelector, setLevel1Osztaly} from "../domain-models/characterSlice"; -function OsztalySelector2E(props: { +export function OsztalySelector2E() { + const karakter = useSelector.withTypes()(characterSelector) + const dispatch = useDispatch.withTypes()() + const currentFaj = karakter.faj + const currentOsztaly = karakter.szintlepesek[0].osztaly + const changeOsztaly = (o: Osztaly2E) => dispatch(setLevel1Osztaly(o)) + return +} + +export function OsztalySelector2EPresenter(props: { currentFaj: Faj2E, currentOsztaly: Osztaly2E, changeOsztaly: (newOsztaly: Osztaly2E) => void diff --git a/frontend/src/second-edition/components/Tulajdonsagok2E.test.tsx b/frontend/src/second-edition/components/Tulajdonsagok2E.test.tsx index 133ceb6..7e1ac56 100644 --- a/frontend/src/second-edition/components/Tulajdonsagok2E.test.tsx +++ b/frontend/src/second-edition/components/Tulajdonsagok2E.test.tsx @@ -5,7 +5,7 @@ import {Faj2E} from "../domain-models/faj2E"; import {TulajdonsagDefaults} from "../domain-models/tulajdonsag2E"; import { setEro, -} from "../domain-models/tulajdonsagSlice"; +} from "../domain-models/characterSlice"; import '@testing-library/jest-dom' import {Provider} from "react-redux"; import store from "../../store"; diff --git a/frontend/src/second-edition/components/Tulajdonsagok2E.tsx b/frontend/src/second-edition/components/Tulajdonsagok2E.tsx index a80a900..72e39d8 100644 --- a/frontend/src/second-edition/components/Tulajdonsagok2E.tsx +++ b/frontend/src/second-edition/components/Tulajdonsagok2E.tsx @@ -3,7 +3,7 @@ import { KarakterTulajdonsagok, Tulajdonsag2E, } from "../domain-models/tulajdonsag2E"; -import TulajdonsagInput from "./TulajdonsagInput2E"; +import TulajdonsagInput from "../display-components/TulajdonsagInput2E"; import {Faj2E, TulajdonsagModositokFajokra} from "../domain-models/faj2E"; import {useDispatch, useSelector} from "react-redux"; import {AppDispatch, RootState} from "../../store"; @@ -12,19 +12,21 @@ import { setBolcsesseg, setEgeszseg, setEro, - setIntelligencia, setKarizma, + setIntelligencia, + setKarizma, setUgyesseg, - tulajdonsagSelector -} from "../domain-models/tulajdonsagSlice"; +} from "../domain-models/characterSlice"; +import {characterSelector} from "../domain-models/characterSlice"; function Tulajdonsagok(props: { - currentFaj: Faj2E, + currentFaj?: Faj2E, tulajdonsagok?: KarakterTulajdonsagok dispatch?: (action: any) => any }) { - const {currentFaj} = props + const karakter = useSelector.withTypes()(characterSelector) const dispatch = props.dispatch ?? useDispatch.withTypes()() - const tulajdonsagok = props.tulajdonsagok ?? useSelector.withTypes()(tulajdonsagSelector) + const currentFaj = props.currentFaj ?? karakter.faj + const tulajdonsagok = props.tulajdonsagok ?? karakter.tulajdonsagok return <>
Tulajdonságok
diff --git a/frontend/src/second-edition/components/FegyverSelector.tsx b/frontend/src/second-edition/display-components/FegyverSelector.tsx similarity index 62% rename from frontend/src/second-edition/components/FegyverSelector.tsx rename to frontend/src/second-edition/display-components/FegyverSelector.tsx index a4f6fda..fdd4b8e 100644 --- a/frontend/src/second-edition/components/FegyverSelector.tsx +++ b/frontend/src/second-edition/display-components/FegyverSelector.tsx @@ -1,57 +1,10 @@ import React from "react"; import {Fegyver} from "../domain-models/felszereles"; +import {FegyverFlags} from "../domain-models/fegyver"; -export function FegyverFlags(fegyver: Fegyver): string { - const flags = [] as string[] - if (fegyver.Megterheltseg) { - flags.push("M") - } - if (fegyver.Harcos) { - flags.push("H") - } - if (fegyver.Masfelkezes) { - flags.push("1½K") - } - if (fegyver.Ketkezes) { - if (fegyver.Type === "kozelharci") { - flags.push("2K") - } else { - if (fegyver.KetkezesBonusz) { - flags.push("2KB") - } else { - flags.push("2KN") - } - } - } - if (fegyver.HarciManover) { - flags.push("+2 HM") - } - if (fegyver.Alakzat){ - flags.push("AL") - } - if (fegyver.Hosszu) { - flags.push("HO") - } - if (fegyver.Kabito) { - flags.push("KO") - } - if (fegyver.LovasRoham) { - flags.push("LR") - } - if (fegyver.PancelToro) { - flags.push("PT") - } - if (fegyver.PajzsZuzo) { - flags.push("PZ") - } - if (fegyver.Rohamtoro) { - flags.push("RT") - } - return flags.join(' '); -} export function FegyverLabel(fegyver: Fegyver): string { - const serializedFlags = FegyverFlags(fegyver) + (fegyver.Megjegyzes != null ? " " + fegyver.Megjegyzes : ""); + const serializedFlags = (FegyverFlags(fegyver) + (fegyver.Megjegyzes != null ? " " + fegyver.Megjegyzes : "")).trim(); const sizeLabel = fegyver.Size < 1 && fegyver.Size > 0 ? ` [1/${Math.round(1 / fegyver.Size)}]` : (fegyver.Size > 1 ? ` [${fegyver.Size}]` : ''); return `${fegyver.Name}${sizeLabel} | ${serializedFlags.length > 0 ? serializedFlags + " |" : ''}${ fegyver.DamageMultiplier > 1 ? `${fegyver.DamageMultiplier}*` : ''}${ diff --git a/frontend/src/second-edition/components/KepzettsegSelector2E.tsx b/frontend/src/second-edition/display-components/KepzettsegSelector2E.tsx similarity index 100% rename from frontend/src/second-edition/components/KepzettsegSelector2E.tsx rename to frontend/src/second-edition/display-components/KepzettsegSelector2E.tsx diff --git a/frontend/src/second-edition/components/TulajdonsagInput2E.tsx b/frontend/src/second-edition/display-components/TulajdonsagInput2E.tsx similarity index 100% rename from frontend/src/second-edition/components/TulajdonsagInput2E.tsx rename to frontend/src/second-edition/display-components/TulajdonsagInput2E.tsx diff --git a/frontend/src/second-edition/domain-models/characterSlice.ts b/frontend/src/second-edition/domain-models/characterSlice.ts new file mode 100644 index 0000000..4d8425b --- /dev/null +++ b/frontend/src/second-edition/domain-models/characterSlice.ts @@ -0,0 +1,147 @@ +import {createSlice} from "@reduxjs/toolkit"; +import {Faj2E, TulajdonsagokFajjal} from "./faj2E"; +import {JellemID} from "./jellem"; +import {DefaultKarakter, Karakter2E} from "./karakter2E"; +import {RollAllAbilities} from "./tulajdonsag2E"; +import {Osztaly2E} from "./osztaly2E"; +import {arraySetN} from "../../util"; +import {GetNumberOfKepzettsegek, KepzettsegId} from "./kepzettsegek2E"; +import {BaseHP} from "./masodlagos_ertekek"; + +export const characterSlice = createSlice({ + name: "character2E", + initialState: DefaultKarakter, + reducers: { + setNev: (state, action: { payload: string }) => { + state.nev = action.payload; + }, + setIsten: (state, action: { payload: string }) => { + state.isten = action.payload; + }, + setJellem: (state, action: { payload: JellemID }) => { + state.jellem = action.payload; + }, + setFaj: (state, action: { payload: Faj2E }) => { + state.faj = action.payload; + const tulajdonsagokFajjal = TulajdonsagokFajjal(state.tulajdonsagok, state.faj) + const numberOfKepzettsegek = GetNumberOfKepzettsegek(tulajdonsagokFajjal.t_int, state.faj) + state.kepzettsegek = state.kepzettsegek.slice(0, numberOfKepzettsegek); + state.kepzettsegFajError = getKepzettsegErrorForFaj(action.payload, [...state.kepzettsegek, ...(state.tolvajKepzettsegek || [])]) + }, + rollAbilities: (state) => { + state.tulajdonsagok = RollAllAbilities() + }, + setEro: (state, action: {payload: number}) => { + state.tulajdonsagok.t_ero = action.payload; + }, + setUgyesseg: (state, action: {payload: number}) => { + state.tulajdonsagok.t_ugy = action.payload; + }, + setEgeszseg: (state, action: {payload: number}) => { + state.tulajdonsagok.t_egs = action.payload; + }, + setIntelligencia: (state, action: {payload: number}) => { + state.tulajdonsagok.t_int = action.payload; + const tulajdonsagokFajjal = TulajdonsagokFajjal(state.tulajdonsagok, state.faj) + const numberOfKepzettsegek = GetNumberOfKepzettsegek(tulajdonsagokFajjal.t_int, state.faj) + state.kepzettsegek = state.kepzettsegek.slice(0, numberOfKepzettsegek); + }, + setBolcsesseg: (state, action: {payload: number}) => { + state.tulajdonsagok.t_bol = action.payload; + }, + setKarizma: (state, action: {payload: number}) => { + state.tulajdonsagok.t_kar = action.payload; + }, + setLevel1Osztaly : (state, action: {payload: Osztaly2E}) => { + const szintlepesek = [{...state.szintlepesek[0], HProll: BaseHP(action.payload) , osztaly: action.payload}, ...state.szintlepesek.slice(1)] + state.szintlepesek = szintlepesek + // if character is not a tolvaj anymore remove all tolvaj kepzettsegek + if (szintlepesek.every(l => l.osztaly !== Osztaly2E.Tolvaj)){ + state.tolvajKepzettsegek = []; + state.kepzettsegFajError = getKepzettsegErrorForFaj(state.faj, [...state.kepzettsegek]) + } + const osztalyok = new Set(szintlepesek.map(x => x.osztaly)) + state.kepzettsegOsztalyError = getKepzettsegErrorForOsztaly(osztalyok, state.kepzettsegek); + }, + setCharacter: (state, action: {payload: Karakter2E}) => { + state = action.payload + const osztalyok = new Set(state.szintlepesek.map(x => x.osztaly)) + state.kepzettsegOsztalyError = getKepzettsegErrorForOsztaly(osztalyok, state.kepzettsegek); + return state; + }, + setHarcosSpecialization: (state, action: {payload: {szint: number, fegyver: string}}) => { + const idx = action.payload.szint - 1 + const szintlepes = { + ...state.szintlepesek[idx], + harcosFegyver: action.payload.fegyver, + } + state.szintlepesek = arraySetN(state.szintlepesek, idx, szintlepes) + }, + setKepzettsegek: (state, action: {payload: KepzettsegId[]}) => { + state.kepzettsegek = action.payload; + state.kepzettsegFajError = getKepzettsegErrorForFaj(state.faj, [...action.payload, ...(state.tolvajKepzettsegek || [])]) + const osztalyok = new Set(state.szintlepesek.map(x => x.osztaly)) + state.kepzettsegOsztalyError = getKepzettsegErrorForOsztaly(osztalyok, action.payload); + }, + setTolvajKepzettsegek: (state, action: {payload: KepzettsegId[]}) => { + state.tolvajKepzettsegek = action.payload; + state.kepzettsegFajError = getKepzettsegErrorForFaj(state.faj, [...state.kepzettsegek, ...action.payload]) + }, + } +}) + +const getKepzettsegErrorForFaj = (faj: Faj2E, kepzettsegek: KepzettsegId[]) : (string | undefined) => { + if (faj === Faj2E.Eszaki && kepzettsegek.every(x => x !== "k_hajozas")){ + return "Szomjan haltál miután északi létedre, hajódat zátonyra futtatad a tengeren :(" + } + if (faj === Faj2E.Nomad && kepzettsegek.every(x => x !== "k_lovaglas")){ + return "Minden nomád lovon születik!" + } + if (faj === Faj2E.Birodalmi && kepzettsegek.every(x => + x !== "k_alkimia" && x !== "k_meregkeveres" && x !== "k_okkultizmus")){ + return "Belehaltál a birodalmi intrikákba :(" + } + if (faj === Faj2E.Torpe && kepzettsegek.every(x => x !== "k_ertekbecsles")){ + return "Törpeként a hegy mélyére sűllyedtél szégyenedben mikor átvertek egy drágakő eladásakor :(" + } + if ((faj === Faj2E.Elf || faj === Faj2E.Felelf) && kepzettsegek.every(x => x !== "k_vadonjaras")){ + return "Eltévedtél az elf vadonban és éhen haltál :(" + } + return; +} + +const getKepzettsegErrorForOsztaly = (osztalyok: Set, kepzettsegek: KepzettsegId[]) : (string | undefined) => { + if (osztalyok.has(Osztaly2E.Druida) && kepzettsegek.every(x => x !== "k_vadonjaras")) { + return "Druida létedre, eltévedtél a vadonban és éhen haltál :(" + } + if (osztalyok.has(Osztaly2E.Vandor) && kepzettsegek.every(x => x !== "k_vadonjaras")) { + return "Vándor létedre, eltévedtél a vadonban és éhen haltál :(" + } + if (osztalyok.has(Osztaly2E.Dalnok) && kepzettsegek.every(x => x !== "k_eloadas")) { + return "Az előadásodat rohadt paradicsomok zápora szakította meg, karriered csúfos véget ért :(" + } + return; +} + +export const { + setCharacter, + setNev, + setJellem, + setFaj, + setIsten, + setEro, + setUgyesseg, + setEgeszseg, + setIntelligencia, + setBolcsesseg, + setKarizma, + rollAbilities, + setLevel1Osztaly, + setHarcosSpecialization, + setKepzettsegek, + setTolvajKepzettsegek, +} = characterSlice.actions + +export const characterSelector = characterSlice.selectSlice + +export default characterSlice.reducer \ No newline at end of file diff --git a/frontend/src/second-edition/domain-models/fegyver.ts b/frontend/src/second-edition/domain-models/fegyver.ts new file mode 100644 index 0000000..daacbaa --- /dev/null +++ b/frontend/src/second-edition/domain-models/fegyver.ts @@ -0,0 +1,50 @@ +import {Fegyver} from "./felszereles"; + +export function FegyverFlags(fegyver: Fegyver): string { + const flags = [] as string[] + if (fegyver.Megterheltseg) { + flags.push("M") + } + if (fegyver.Harcos) { + flags.push("H") + } + if (fegyver.Masfelkezes) { + flags.push("1½K") + } + if (fegyver.Ketkezes) { + if (fegyver.Type === "kozelharci") { + flags.push("2K") + } else { + if (fegyver.KetkezesBonusz) { + flags.push("2KB") + } else { + flags.push("2KN") + } + } + } + if (fegyver.HarciManover) { + flags.push("+2 HM") + } + if (fegyver.Alakzat){ + flags.push("AL") + } + if (fegyver.Hosszu) { + flags.push("HO") + } + if (fegyver.Kabito) { + flags.push("KO") + } + if (fegyver.LovasRoham) { + flags.push("LR") + } + if (fegyver.PancelToro) { + flags.push("PT") + } + if (fegyver.PajzsZuzo) { + flags.push("PZ") + } + if (fegyver.Rohamtoro) { + flags.push("RT") + } + return flags.join(' '); +} diff --git a/frontend/src/second-edition/domain-models/karakter2E.ts b/frontend/src/second-edition/domain-models/karakter2E.ts index c67c9d5..168a35e 100644 --- a/frontend/src/second-edition/domain-models/karakter2E.ts +++ b/frontend/src/second-edition/domain-models/karakter2E.ts @@ -10,6 +10,7 @@ import {BaseHP} from "./masodlagos_ertekek"; import {dAny} from "../../shared/domain-models/kockak"; export interface Karakter2E { + id?: string, nev: string, nem?: string, kor: number, @@ -17,7 +18,9 @@ export interface Karakter2E { jellem: JellemID, tulajdonsagok: KarakterTulajdonsagok faj: Faj2E - kepzettsegek: KepzettsegId[] + kepzettsegek: KepzettsegId[], + kepzettsegFajError?: string, + kepzettsegOsztalyError?: string, tolvajKepzettsegek?: KepzettsegId[] szint: number, felszereles: KarakterFelszereles, @@ -30,7 +33,12 @@ export const DefaultKarakter: Karakter2E = { jellem: 'S', tulajdonsagok: TulajdonsagDefaults, faj: Faj2E.Ember, - kepzettsegek: [], + kepzettsegek: [ + "k_maszas", + "k_ugras", + "k_uszas", + "k_osonas" + ], tolvajKepzettsegek: [], szint: 1, felszereles: DefaultFelszereles, diff --git a/frontend/src/second-edition/domain-models/kepzettsegek2E.ts b/frontend/src/second-edition/domain-models/kepzettsegek2E.ts index 9c023d2..0a4479c 100644 --- a/frontend/src/second-edition/domain-models/kepzettsegek2E.ts +++ b/frontend/src/second-edition/domain-models/kepzettsegek2E.ts @@ -241,104 +241,60 @@ export function SetDefaultTolvajKepzettsegek(karakter: Pick) { const osztalyok = new Set(karakter.szintlepesek.map(x => x.osztaly)) - const availableKepzettsegList = AvailableKezpettsegList(...osztalyok) + let availableKepzettsegList = AvailableKezpettsegList(...osztalyok) + if (karakter.faj === Faj2E.Birodalmi && availableKepzettsegList.every(x => x.Id !== "k_okkultizmus")) { + availableKepzettsegList = [Kepzettsegek.k_okkultizmus, ...availableKepzettsegList] + } + if (karakter.faj === Faj2E.Birodalmi && availableKepzettsegList.every(x => x.Id !== "k_meregkeveres")) { + availableKepzettsegList = [Kepzettsegek.k_meregkeveres, ...availableKepzettsegList] + } + if (karakter.faj === Faj2E.Birodalmi && availableKepzettsegList.every(x => x.Id !== "k_alkimia")) { + availableKepzettsegList = [Kepzettsegek.k_alkimia, ...availableKepzettsegList] + } return (n: number): Kepzettseg[] => { let available = [...availableKepzettsegList] - if (n === 0) { - if (karakter.faj === Faj2E.Eszaki) { - return [Kepzettsegek.k_hajozas] - } - if (karakter.faj === Faj2E.Nomad) { - return [Kepzettsegek.k_lovaglas] - } - // TODO birodalmi tolvaj, tolvajképzettségek! - if (karakter.faj === Faj2E.Birodalmi) { - return [Kepzettsegek.k_alkimia, Kepzettsegek.k_meregkeveres, Kepzettsegek.k_okkultizmus] - } - if (karakter.faj === Faj2E.Torpe) { - return [Kepzettsegek.k_ertekbecsles] - } - if (karakter.faj === Faj2E.Elf || karakter.faj === Faj2E.Felelf) { - return [Kepzettsegek.k_vadonjaras] - } - if (osztalyok.has(Osztaly2E.Druida) || osztalyok.has(Osztaly2E.Vandor)) { - return [Kepzettsegek.k_vadonjaras] - } - if (osztalyok.has(Osztaly2E.Dalnok)) { - return [Kepzettsegek.k_eloadas] - } - } - if (n === 1) { - if ((osztalyok.has(Osztaly2E.Vandor) || osztalyok.has(Osztaly2E.Druida)) - && karakter.kepzettsegek[0] !== Kepzettsegek.k_vadonjaras.Id) { - return [Kepzettsegek.k_vadonjaras] - } - if (osztalyok.has(Osztaly2E.Dalnok) - && karakter.kepzettsegek[0] !== Kepzettsegek.k_eloadas.Id) { - return [Kepzettsegek.k_eloadas] - } - } - if (n === 2) { // maybe write a better abstraction? - if (osztalyok.has(Osztaly2E.Dalnok) - && karakter.kepzettsegek[0] !== Kepzettsegek.k_eloadas.Id - && karakter.kepzettsegek[1] !== Kepzettsegek.k_eloadas.Id) { - return [Kepzettsegek.k_eloadas] - } - } + // if (n === 0) { + // if (karakter.faj === Faj2E.Eszaki) { + // return [Kepzettsegek.k_hajozas] + // } + // if (karakter.faj === Faj2E.Nomad) { + // return [Kepzettsegek.k_lovaglas] + // } + // // TODO birodalmi tolvaj, tolvajképzettségek! + // if (karakter.faj === Faj2E.Birodalmi) { + // return [Kepzettsegek.k_alkimia, Kepzettsegek.k_meregkeveres, Kepzettsegek.k_okkultizmus] + // } + // if (karakter.faj === Faj2E.Torpe) { + // return [Kepzettsegek.k_ertekbecsles] + // } + // if (karakter.faj === Faj2E.Elf || karakter.faj === Faj2E.Felelf) { + // return [Kepzettsegek.k_vadonjaras] + // } + // if (osztalyok.has(Osztaly2E.Druida) || osztalyok.has(Osztaly2E.Vandor)) { + // return [Kepzettsegek.k_vadonjaras] + // } + // if (osztalyok.has(Osztaly2E.Dalnok)) { + // return [Kepzettsegek.k_eloadas] + // } + // } + // if (n === 1) { + // if ((osztalyok.has(Osztaly2E.Vandor) || osztalyok.has(Osztaly2E.Druida)) + // && karakter.kepzettsegek[0] !== Kepzettsegek.k_vadonjaras.Id) { + // return [Kepzettsegek.k_vadonjaras] + // } + // if (osztalyok.has(Osztaly2E.Dalnok) + // && karakter.kepzettsegek[0] !== Kepzettsegek.k_eloadas.Id) { + // return [Kepzettsegek.k_eloadas] + // } + // } + // if (n === 2) { // maybe write a better abstraction? + // if (osztalyok.has(Osztaly2E.Dalnok) + // && karakter.kepzettsegek[0] !== Kepzettsegek.k_eloadas.Id + // && karakter.kepzettsegek[1] !== Kepzettsegek.k_eloadas.Id) { + // return [Kepzettsegek.k_eloadas] + // } + // } const kepzettsegekWithoutN = [...karakter.kepzettsegek.slice(0, n), ...karakter.kepzettsegek.slice(n + 1)] return available.filter(x => !kepzettsegekWithoutN.includes(x.Id) && !karakter.tolvajKepzettsegek?.includes(x.Id)) } } - -export function SetDefaultKepzettsegek(karakter: Pick, changeKepzettsegek: (k: KepzettsegId[]) => void) { - const osztalyok = karakter.szintlepesek.map(x => x.osztaly) - const availableKepzettsegList = AvailableKezpettsegList(...osztalyok) - const numberOfKepzettsegek = GetNumberOfKepzettsegek(karakter.tulajdonsagok.t_int, karakter.faj, availableKepzettsegList.length) - let kepzettsegek = [...karakter.kepzettsegek] - - let mustChangeKepzettsegek = false - - const restrictedKepzettsegek = GetKepzettsegListaN(karakter)(0) - if (kepzettsegek.length === 0) { - if (restrictedKepzettsegek.length > 0) { - kepzettsegek.push(restrictedKepzettsegek[0].Id) - mustChangeKepzettsegek = true - } - } else { - if (!restrictedKepzettsegek.includes(Kepzettsegek[kepzettsegek[0]])) { - kepzettsegek[0] = restrictedKepzettsegek[0].Id - mustChangeKepzettsegek = true - } - } - - // // TODO: really fix this sometimes. - // const uglyDoubleRestrictedKepzettsegek = GetKepzettsegListaN(karakter)(1) - // if (kepzettsegek.length === 1) { - // if (uglyDoubleRestrictedKepzettsegek.length > 0) { - // kepzettsegek.push(uglyDoubleRestrictedKepzettsegek[0].Id) - // mustChangeKepzettsegek = true - // } - // } else { - // if (!uglyDoubleRestrictedKepzettsegek.includes(Kepzettsegek[kepzettsegek[1]])) { - // kepzettsegek[1] = uglyDoubleRestrictedKepzettsegek[0].Id - // mustChangeKepzettsegek = true - // } - // } - - if (kepzettsegek.length < numberOfKepzettsegek) { - for (let i = kepzettsegek.length; i < numberOfKepzettsegek; i++) { - const kepzettsegLista = GetKepzettsegListaN({...karakter, kepzettsegek})(i) - if (kepzettsegLista.length > 0) { - kepzettsegek.push(kepzettsegLista[0].Id) - } - } - mustChangeKepzettsegek = true - } - if (kepzettsegek.length > numberOfKepzettsegek){ - kepzettsegek = kepzettsegek.slice(0, numberOfKepzettsegek) - mustChangeKepzettsegek = true - } - if (mustChangeKepzettsegek){ - changeKepzettsegek(kepzettsegek) - } -} \ No newline at end of file diff --git a/frontend/src/second-edition/domain-models/tulajdonsagSlice.ts b/frontend/src/second-edition/domain-models/tulajdonsagSlice.ts deleted file mode 100644 index 66c3164..0000000 --- a/frontend/src/second-edition/domain-models/tulajdonsagSlice.ts +++ /dev/null @@ -1,37 +0,0 @@ -import {createSlice} from "@reduxjs/toolkit"; -import {RollAllAbilities, TulajdonsagDefaults} from "./tulajdonsag2E"; - -export const tulajdonsagSlice = createSlice({ - name: "tulajdonsag2E", - initialState: TulajdonsagDefaults, - reducers: { - rollAbilities: (state) => { - state = RollAllAbilities() - return state; - }, - setEro: (state, action: {payload: number}) => { - state.t_ero = action.payload; - }, - setUgyesseg: (state, action: {payload: number}) => { - state.t_ugy = action.payload; - }, - setEgeszseg: (state, action: {payload: number}) => { - state.t_egs = action.payload; - }, - setIntelligencia: (state, action: {payload: number}) => { - state.t_int = action.payload; - }, - setBolcsesseg: (state, action: {payload: number}) => { - state.t_bol = action.payload; - }, - setKarizma: (state, action: {payload: number}) => { - state.t_kar = action.payload; - }, - }, -}) - -export const { rollAbilities, setEro, setUgyesseg, setEgeszseg, setIntelligencia, setBolcsesseg, setKarizma } = tulajdonsagSlice.actions - -export const tulajdonsagSelector = tulajdonsagSlice.selectSlice; - -export default tulajdonsagSlice.reducer \ No newline at end of file diff --git a/frontend/src/second-edition/pages/CreateCharacter2E.tsx b/frontend/src/second-edition/pages/CreateCharacter2E.tsx index 4bfad98..331990a 100644 --- a/frontend/src/second-edition/pages/CreateCharacter2E.tsx +++ b/frontend/src/second-edition/pages/CreateCharacter2E.tsx @@ -1,39 +1,28 @@ import React, {useState} from 'react' import {useLoaderData, useNavigate, useParams} from "react-router-dom"; import {OverlayTrigger, Toast, ToastContainer} from "react-bootstrap"; -import {ChangeLvl1Osztaly, DefaultKarakter, Karakter2E} from "../domain-models/karakter2E"; -import FajSelector2E from "../components/FajSelector2E"; +import {Karakter2E} from "../domain-models/karakter2E"; import Tulajdonsagok2E from "../components/Tulajdonsagok2E"; import OsztalySelector2E from "../components/OsztalySelector2E"; import {Osztaly2E} from "../domain-models/osztaly2E"; -import { - GetKepzettsegListaN, - GetNumberOfKepzettsegek, - KepzettsegId, - SetDefaultKepzettsegek, - SetDefaultTolvajKepzettsegek -} from "../domain-models/kepzettsegek2E"; import KarakterKepzettsegek from "../components/KarakterKepzettsegek2E"; -import {TulajdonsagokFajjal} from "../domain-models/faj2E"; -import JellemSelector from "../components/JellemSelector"; import MasodlagosErtekek from "../components/MasodlagosErtekek"; -import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek"; import Felszereles from "../components/Felszereles"; import {KarakterFelszereles} from "../domain-models/felszereles"; import LevelUps from "../components/LevelUps"; import {LevelDown, LevelUp} from "../domain-models/szintlepes"; import HarcosFegyverSpecializacio from "../components/HarcosFegyverSpec"; -import {arraySetN} from "../../util"; import saveOverlayTooltip from "../../first-edition/components/SaveOverlayTooltip"; import {StoreNewCharacter2E, UpdateCharacter2E} from "../api/character.api"; import {Faro} from "@grafana/faro-web-sdk"; import {CreatePDF} from "../pdf/character.pdf"; import {KarakterInputToPdfView} from "../pdf/karakter_pdf_view"; -import {useSelector} from "react-redux"; -import {RootState} from "../../store"; +import {useDispatch, useSelector} from "react-redux"; +import {AppDispatch, RootState} from "../../store"; import {userSelector} from "../../shared/domain-models/userSlice"; import {SaveModal} from "../../shared/components/SaveModal"; -import {tulajdonsagSelector} from "../domain-models/tulajdonsagSlice"; +import {characterSelector, setCharacter} from "../domain-models/characterSlice"; +import KarakterSzarmazas from "../components/KarakterSzarmazas"; function CreateCharacter2E(props: { faro?: Faro @@ -42,21 +31,13 @@ function CreateCharacter2E(props: { const { id } = useParams(); const fetchedUser = useSelector.withTypes()(userSelector); const loaderData = useLoaderData() as Karakter2E & { isPublic: boolean } | undefined; - let initialKarakterInputs = DefaultKarakter; - if (loaderData != null) { - const { isPublic: t1, ...t2 } = loaderData; - initialKarakterInputs = t2 - } + const dispatch = useDispatch.withTypes()() const initialIsPublic = loaderData?.isPublic ?? fetchedUser?.email == null; const navigate = useNavigate(); - - const [karakter, setKarakter] = useState(initialKarakterInputs) - karakter.tulajdonsagok = useSelector.withTypes()(tulajdonsagSelector) - const tulajdonsagokFajjal = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj) - const changeKepzettseg = (k: KepzettsegId[]) => setKarakter({...karakter, kepzettsegek: k}) - const changeTolvajKepzettseg = (tk?: KepzettsegId[]) => setKarakter({...karakter, tolvajKepzettsegek: tk}) - SetDefaultTolvajKepzettsegek(karakter, changeTolvajKepzettseg) - SetDefaultKepzettsegek({...karakter, tulajdonsagok: tulajdonsagokFajjal}, changeKepzettseg) + + const karakter = useSelector.withTypes()(characterSelector) + const setKarakter = (newState: Karakter2E) => dispatch(setCharacter(newState)); + const changeFelszereles = (f: KarakterFelszereles) => setKarakter({...karakter, felszereles: f}) @@ -67,7 +48,6 @@ function CreateCharacter2E(props: { const newCharacterUrl = () => `${window.location.origin}/2e/karakter/${newId}` const handleSaveModalCopyAndClose = async () => { - await navigator.clipboard.writeText(newCharacterUrl()); handleSaveModalClose() } @@ -119,70 +99,19 @@ function CreateCharacter2E(props: {
Származás
-
- - setKarakter({...karakter, nev: e.target.value})}/> - {!karakter.nev && - A karaktered nem mászkálhat névtelenül a világban!} -
- setKarakter({...karakter, jellem: val})}/> -
- - setKarakter({...karakter, isten: e.target.value})}/> -
- setKarakter({...karakter, faj})} - faj={karakter.faj} - /> +
- +
Tanult
- setKarakter(ChangeLvl1Osztaly(karakter, o))} - /> - {karakter.szintlepesek[0].osztaly === Osztaly2E.Harcos && - setKarakter({ - ...karakter, - szintlepesek: arraySetN(karakter.szintlepesek, 0, { - ...karakter.szintlepesek[0], - harcosFegyver: spec - }) - })} - existingSpecializations={karakter.szintlepesek.map(x => x.harcosFegyver)} - />} - + + {karakter.szintlepesek[0].osztaly === Osztaly2E.Harcos && } +
{/* 1. szinten */} - +
{karakter.szint > 1 &&
} diff --git a/frontend/src/second-edition/pdf/karakter_pdf_view.ts b/frontend/src/second-edition/pdf/karakter_pdf_view.ts index ed44f28..094894c 100644 --- a/frontend/src/second-edition/pdf/karakter_pdf_view.ts +++ b/frontend/src/second-edition/pdf/karakter_pdf_view.ts @@ -14,7 +14,7 @@ import { import {SignedNumberToText} from "../../shared/components/Helpers"; import {Kepzettseg, Kepzettsegek} from "../domain-models/kepzettsegek2E"; import {getClassLevels} from "../domain-models/szintlepes"; -import {FegyverFlags} from "../components/FegyverSelector"; +import {FegyverFlags} from "../domain-models/fegyver"; interface KepzettsegPdfView { nev: string, diff --git a/frontend/src/store.ts b/frontend/src/store.ts index 74db900..80e1a20 100644 --- a/frontend/src/store.ts +++ b/frontend/src/store.ts @@ -1,11 +1,12 @@ -import { configureStore } from "@reduxjs/toolkit" +import {configureStore} from "@reduxjs/toolkit" import userReducer from './shared/domain-models/userSlice' -import tulajdonsag2eReducer from './second-edition/domain-models/tulajdonsagSlice'; +import character2eReducer from './second-edition/domain-models/characterSlice'; + const store = configureStore({ reducer: { user: userReducer, - tulajdonsag2E: tulajdonsag2eReducer + character2E: character2eReducer, }, }); diff --git a/nginx.conf b/nginx.conf index f5245df..f616def 100644 --- a/nginx.conf +++ b/nginx.conf @@ -32,7 +32,7 @@ http { } upstream backend { - server 172.17.0.1:7251; + server backend:8080; } server {