import React from "react";
import {ChangeOsztalyAtSzint, Karakter2E} from "../domain-models/karakter2E";
import BasicNewLevel from "./BasicNewLevel";
import TulajdonsagNoveles from "./TulajdonsagNoveles";
import {Tulajdonsag2E, TulajdonsagokTotal} from "../domain-models/tulajdonsag2E";
import {arraySetN} from "../../util";
import {Osztaly2E} from "../domain-models/osztaly2E";
import KalozKritikus from "./KalozKritikus";
import HarcosFegyverSpecializacio from "./HarcosFegyverSpec";
import MultiClassOsztalySelector2E from "./MultiClassOsztalySelector2E";
import {getClassLevels} from "../domain-models/szintlepes";
import KepzettsegSelector from "../display-components/KepzettsegSelector2E";
import {GetAvailableKepzettsegek} from "../domain-models/kepzettsegek2E";
import { Kepzettsegek, KepzettsegId } from "../domain-models/kepzettsegek2E.data"
function LevelUp(props: {
szint: number,
osztaly: Osztaly2E,
karakter: Karakter2E,
changeTulajdonsagNoveles: (t: Tulajdonsag2E) => void,
changeRolledHP: (rolledHP: number) => void,
changeKalozKritikus: (krit: string) => void,
changeOsztaly: (osztaly: Osztaly2E) => void,
changeExtraTolvajKepzettseg: (kepzettseg: KepzettsegId) => void,
}) {
const {
szint,
osztaly,
karakter,
changeTulajdonsagNoveles,
changeRolledHP,
changeKalozKritikus,
changeOsztaly,
changeExtraTolvajKepzettseg
} = props
const classLevels = getClassLevels(karakter.szintlepesek)
const harcosSzint = classLevels[Osztaly2E.Harcos]
const kalozSzint = classLevels[Osztaly2E.Tengeresz]
const tolvajSzint = classLevels[Osztaly2E.Tolvaj]
const szintlepes = karakter.szintlepesek[szint-1];
const tulajdonsagNoveles = szintlepes?.tulajdonsagNoveles;
const kalozKritikus = szintlepes?.kalozKritikus;
return
{szint}. Szint
{osztaly !== Osztaly2E.Druida &&
}
{szint % 4 === 0 && tulajdonsagNoveles != null &&
}
{osztaly === Osztaly2E.Harcos && harcosSzint % 2 === 1 &&
}
{osztaly === Osztaly2E.Tengeresz && kalozSzint % 3 === 0 && kalozKritikus != null &&
x.kalozKritikus)}
changeKrit={changeKalozKritikus}
szint={kalozSzint}
/>
}
{osztaly === Osztaly2E.Tolvaj
&& (tolvajSzint === 5 || tolvajSzint === 9)
&& szintlepes?.tolvajExtraKepzettseg != null &&
}
}
export function LevelUps(props: {karakter: Karakter2E, changeKarakter: (inputs: Karakter2E) => void}){
const {karakter, changeKarakter} = props;
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 szintlepes = szintlepesAt(szint)
changeKarakter({...karakter, szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {...szintlepes, HProll: newHProll})})
console.log(karakter)
}
const changeTulajdonsagNovelesAtSzint = (szint: number) => {
return (t: Tulajdonsag2E) => {
const szintlepes = szintlepesAt(szint)
changeKarakter({...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
...szintlepes,
tulajdonsagNoveles: t
})
})
};
}
const changeKalozKritikusAtSzint = (szint: number) => {
return (krit: string) => {
const szintlepes = szintlepesAt(szint)
changeKarakter({
...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
...szintlepes,
kalozKritikus: krit
})
})
};
}
const changeExtraTolvajKepzettseg = (szint: number) => {
return (k: KepzettsegId) => {
const szintlepes = szintlepesAt(szint)
changeKarakter({
...karakter,
szintlepesek: arraySetN(karakter.szintlepesek, szint-1, {
...szintlepes,
tolvajExtraKepzettseg: k,
})
})
}
}
const levels = karakter.szintlepesek.map((_, i) => i+1);
return <>
{levels.slice(1).map(szint =>
{
const szintlepes = szintlepesAt(szint)
return (
changeKarakter(ChangeOsztalyAtSzint(karakter, o, szint))}
changeExtraTolvajKepzettseg={changeExtraTolvajKepzettseg(szint)}
/>
)
}
)}
>
}
export default LevelUps