address review comments

This commit is contained in:
2026-04-05 11:39:37 +02:00
parent 88b0379c93
commit 43959ae94f
2 changed files with 109 additions and 9 deletions
@@ -66,4 +66,92 @@ describe("LevelUps Harcos specialization indexing", () => {
expect(stateAfter.szintlepesek[0]?.harcosFegyver).toBeUndefined(); expect(stateAfter.szintlepesek[0]?.harcosFegyver).toBeUndefined();
expect(stateAfter.szintlepesek[1]?.harcosFegyver).toBe(nextSpec); expect(stateAfter.szintlepesek[1]?.harcosFegyver).toBe(nextSpec);
}); });
it("does not render tulajdonsag selector at level 4 when all abilities are maxed", () => {
const maxedCharacter: Karakter2E = {
...DefaultKarakter,
szint: 1,
tulajdonsagok: {
t_ero: 18,
t_ugy: 18,
t_egs: 18,
t_int: 18,
t_bol: 18,
t_kar: 18,
},
szintlepesek: [{
osztaly: Osztaly2E.Pap,
HProll: 8,
}],
tolvajKepzettsegek: [],
varazslatok: [],
};
const level2 = applyLevelUp(maxedCharacter);
const level3 = applyLevelUp(level2);
const level4 = applyLevelUp(level3);
expect(level4.szintlepesek[3]?.tulajdonsagNoveles).toBeUndefined();
const store = configureStore({
reducer: {
user: userReducer,
character2E: characterReducer,
},
});
store.dispatch(setCharacter(level4));
const sut = render(
<Provider store={store}>
<LevelUps
karakter={store.getState().character2E}
changeKarakter={(updated) => store.dispatch(setCharacter(updated))}
/>
</Provider>
);
expect(sut.queryByTestId("tulajdonsag-4")).toBeNull();
});
it("does not render kaloz krit selector when tengeresz milestone exists but krit is missing", () => {
const inconsistentTengeresz: Karakter2E = {
...DefaultKarakter,
szint: 3,
szintlepesek: [
{
osztaly: Osztaly2E.Tengeresz,
HProll: 10,
},
{
osztaly: Osztaly2E.Tengeresz,
HProll: 5,
},
{
osztaly: Osztaly2E.Tengeresz,
HProll: 7,
}
],
tolvajKepzettsegek: [],
varazslatok: [],
};
const store = configureStore({
reducer: {
user: userReducer,
character2E: characterReducer,
},
});
store.dispatch(setCharacter(inconsistentTengeresz));
const sut = render(
<Provider store={store}>
<LevelUps
karakter={store.getState().character2E}
changeKarakter={(updated) => store.dispatch(setCharacter(updated))}
/>
</Provider>
);
expect(sut.queryByTestId("kaloz-krit-3")).toBeNull();
});
}); });
@@ -41,6 +41,8 @@ function LevelUp(props: {
const kalozSzint = classLevels[Osztaly2E.Tengeresz] const kalozSzint = classLevels[Osztaly2E.Tengeresz]
const tolvajSzint = classLevels[Osztaly2E.Tolvaj] const tolvajSzint = classLevels[Osztaly2E.Tolvaj]
const szintlepes = karakter.szintlepesek[szint-1]; const szintlepes = karakter.szintlepesek[szint-1];
const tulajdonsagNoveles = szintlepes?.tulajdonsagNoveles;
const kalozKritikus = szintlepes?.kalozKritikus;
return <div> return <div>
<div className='row mt-3'> <div className='row mt-3'>
@@ -54,10 +56,10 @@ function LevelUp(props: {
osztalySzint={classLevels[osztaly]} osztalySzint={classLevels[osztaly]}
dataTestId={`osztaly-${szint}`} dataTestId={`osztaly-${szint}`}
/>} />}
{szint % 4 === 0 && {szint % 4 === 0 && tulajdonsagNoveles != null &&
<TulajdonsagNoveles <TulajdonsagNoveles
tulajdonsagok={karakter.tulajdonsagok} tulajdonsagok={karakter.tulajdonsagok}
tulajdonsagNoveles={karakter.szintlepesek[szint-1]!.tulajdonsagNoveles!} tulajdonsagNoveles={tulajdonsagNoveles}
changeTulajdonsagNoveles={changeTulajdonsagNoveles} changeTulajdonsagNoveles={changeTulajdonsagNoveles}
dataTestId={`tulajdonsag-${szint}`} dataTestId={`tulajdonsag-${szint}`}
/>} />}
@@ -73,9 +75,9 @@ function LevelUp(props: {
karakterSzint={szint} karakterSzint={szint}
/> />
} }
{osztaly === Osztaly2E.Tengeresz && kalozSzint % 3 === 0 && {osztaly === Osztaly2E.Tengeresz && kalozSzint % 3 === 0 && kalozKritikus != null &&
<KalozKritikus <KalozKritikus
kritFegyverId={szintlepes!.kalozKritikus!} kritFegyverId={kalozKritikus}
existingKrits={karakter.szintlepesek.map(x => x.kalozKritikus)} existingKrits={karakter.szintlepesek.map(x => x.kalozKritikus)}
changeKrit={changeKalozKritikus} changeKrit={changeKalozKritikus}
szint={kalozSzint} szint={kalozSzint}
@@ -101,16 +103,19 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
const {karakter, changeKarakter} = props; const {karakter, changeKarakter} = props;
const tulajdonsagokAtSzint = (szint: number) => TulajdonsagokTotal({...karakter, szintlepesek: karakter.szintlepesek.slice(0, szint)}) const tulajdonsagokAtSzint = (szint: number) => TulajdonsagokTotal({...karakter, szintlepesek: karakter.szintlepesek.slice(0, szint)})
const szintlepesAt = (szint: number) => karakter.szintlepesek[szint-1]!
const changeRolledHPAtSzint = (szint: number) => (newHProll: number) => { const changeRolledHPAtSzint = (szint: number) => (newHProll: number) => {
changeKarakter({...karakter, szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {...karakter.szintlepesek[szint-1], HProll: newHProll})}) const szintlepes = szintlepesAt(szint)
changeKarakter({...karakter, szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {...szintlepes, HProll: newHProll})})
console.log(karakter) console.log(karakter)
} }
const changeTulajdonsagNovelesAtSzint = (szint: number) => { const changeTulajdonsagNovelesAtSzint = (szint: number) => {
return (t: Tulajdonsag2E) => { return (t: Tulajdonsag2E) => {
const szintlepes = szintlepesAt(szint)
changeKarakter({...karakter, changeKarakter({...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, { szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
...karakter.szintlepesek[szint-1], ...szintlepes,
tulajdonsagNoveles: t tulajdonsagNoveles: t
}) })
}) })
@@ -119,10 +124,11 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
const changeKalozKritikusAtSzint = (szint: number) => { const changeKalozKritikusAtSzint = (szint: number) => {
return (krit: string) => { return (krit: string) => {
const szintlepes = szintlepesAt(szint)
changeKarakter({ changeKarakter({
...karakter, ...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, { szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
...karakter.szintlepesek[szint-1], ...szintlepes,
kalozKritikus: krit kalozKritikus: krit
}) })
}) })
@@ -131,10 +137,11 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
const changeExtraTolvajKepzettseg = (szint: number) => { const changeExtraTolvajKepzettseg = (szint: number) => {
return (k: KepzettsegId) => { return (k: KepzettsegId) => {
const szintlepes = szintlepesAt(szint)
changeKarakter({ changeKarakter({
...karakter, ...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, { szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
...karakter.szintlepesek[szint-1], ...szintlepes,
tolvajExtraKepzettseg: k, tolvajExtraKepzettseg: k,
}) })
}) })
@@ -145,10 +152,13 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
return <> return <>
{levels.slice(1).map(szint => {levels.slice(1).map(szint =>
{
const szintlepes = szintlepesAt(szint)
return (
<LevelUp <LevelUp
key={`level-up-${szint}`} key={`level-up-${szint}`}
szint={szint} szint={szint}
osztaly={karakter.szintlepesek[szint-1].osztaly} osztaly={szintlepes.osztaly}
karakter={{...karakter, szintlepesek: karakter.szintlepesek.slice(0, szint) ,tulajdonsagok: tulajdonsagokAtSzint(szint)}} karakter={{...karakter, szintlepesek: karakter.szintlepesek.slice(0, szint) ,tulajdonsagok: tulajdonsagokAtSzint(szint)}}
changeTulajdonsagNoveles={changeTulajdonsagNovelesAtSzint(szint)} changeTulajdonsagNoveles={changeTulajdonsagNovelesAtSzint(szint)}
changeRolledHP={changeRolledHPAtSzint(szint)} changeRolledHP={changeRolledHPAtSzint(szint)}
@@ -156,6 +166,8 @@ export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs:
changeOsztaly={(o) => changeKarakter(ChangeOsztalyAtSzint(karakter, o, szint))} changeOsztaly={(o) => changeKarakter(ChangeOsztalyAtSzint(karakter, o, szint))}
changeExtraTolvajKepzettseg={changeExtraTolvajKepzettseg(szint)} changeExtraTolvajKepzettseg={changeExtraTolvajKepzettseg(szint)}
/> />
)
}
)} )}
</> </>
} }