diff --git a/src/components/Level2.tsx b/src/components/Level2.tsx new file mode 100644 index 0000000..c3ccd05 --- /dev/null +++ b/src/components/Level2.tsx @@ -0,0 +1,39 @@ +import React from "react"; +import {Osztaly} from "../domain-models/osztaly"; +import {SignedNumberToText} from "./Helpers"; +import {Modifier} from "../domain-models/tulajdonsag"; + +function Level2(props: { + osztaly: Osztaly + rolledHP: number + t_egs: number +}) { + const {osztaly, rolledHP, t_egs} = props + return <> +
+
2. Szint
+
+
+
+
+ + {SignedNumberToText(rolledHP + Modifier(t_egs))} +
+
+
+
+ + +1 +
+
+
+
+ + +1 +
+
+
+ +} + +export default Level2 \ No newline at end of file diff --git a/src/components/MasodlagosErtekek.tsx b/src/components/MasodlagosErtekek.tsx index 36e3953..692f286 100644 --- a/src/components/MasodlagosErtekek.tsx +++ b/src/components/MasodlagosErtekek.tsx @@ -26,33 +26,33 @@ function MasodlagosErtekek(props: {ertekek: KarakterMasodlagosErtekek}) { (HP) -

{ertekek.HP}

+

{ertekek.HP}

-

{ertekek.VO}

+

{ertekek.VO}

-

{SignedNumberToText(ertekek.KozelHarciTB)}

+

{SignedNumberToText(ertekek.KozelHarciTB)}

-

{SignedNumberToText(ertekek.CelzoTB)}

+

{SignedNumberToText(ertekek.CelzoTB)}

-

{SignedNumberToText(ertekek.KitartasMento)}

+

{SignedNumberToText(ertekek.KitartasMento)}

-

{SignedNumberToText(ertekek.ReflexMento)}

+

{SignedNumberToText(ertekek.ReflexMento)}

-

{SignedNumberToText(ertekek.AkarateroMento)}

+

{SignedNumberToText(ertekek.AkarateroMento)}

diff --git a/src/domain-models/karakter.ts b/src/domain-models/karakter.ts index b120ff1..dd5fbe5 100644 --- a/src/domain-models/karakter.ts +++ b/src/domain-models/karakter.ts @@ -2,7 +2,7 @@ import {Faj} from "./faj"; import {Osztaly} from "./osztaly"; import {KarakterTulajdonsagok, Modifier} from "./tulajdonsag"; import {CalculateMasodlagosErtekek, KarakterMasodlagosErtekek} from "./masodlagos_ertekek"; -import {Kepzettseg} from "./kepzettsegek"; +import {Kepzettseg, Kepzettsegek, KepzettsegId} from "./kepzettsegek"; export interface Karakter { Name: string @@ -13,7 +13,6 @@ export interface Karakter { Osztaly: Osztaly Tulajdonsagok: KarakterTulajdonsagok, Szint: number - MasodlagosErtekek: KarakterMasodlagosErtekek HP: () => number VO: () => number Mozgas: () => number @@ -27,6 +26,20 @@ export interface Karakter { TolvajKepzettsegek: Kepzettseg[] } +export interface KarakterInputs { + name: string, + nem?: string, + kor: number, + isten?: string, + faj: Faj, + osztaly: Osztaly, + tulajdonsagok: KarakterTulajdonsagok, + kepzettsegek: KepzettsegId[], + tolvajKepzettsegek?: KepzettsegId[] + szint: number + HProlls: number[], +} + export class KarakterClass implements Karakter { public Name : string @@ -37,31 +50,23 @@ export class KarakterClass implements Karakter { public Osztaly : Osztaly public Tulajdonsagok : KarakterTulajdonsagok public Szint : number = 1 - public MasodlagosErtekek : KarakterMasodlagosErtekek public Kepzettsegek: Kepzettseg[] public TolvajKepzettsegek: Kepzettseg[] - constructor( - name: string, - nem: string, - kor: number, - isten: string, - faj: Faj, - osztaly: Osztaly, - tulajdonsagok: KarakterTulajdonsagok, - kepzettsegek: Kepzettseg[], - tolvajKepzettsegek: Kepzettseg[] = [] - ) { - this.Name = name - this.Nem = nem - this.Kor = kor - this.Isten = isten - this.Faj = faj - this.Osztaly = osztaly - this.Tulajdonsagok = tulajdonsagok - this.MasodlagosErtekek = CalculateMasodlagosErtekek(osztaly, tulajdonsagok) - this.Kepzettsegek = kepzettsegek - this.TolvajKepzettsegek = tolvajKepzettsegek + private MasodlagosErtekek : KarakterMasodlagosErtekek + + constructor(inputs: KarakterInputs) { + this.Name = inputs.name + this.Nem = inputs.nem || "" + this.Kor = inputs.kor + this.Isten = inputs.isten || "" + this.Faj = inputs.faj + this.Osztaly = inputs.osztaly + this.Tulajdonsagok = inputs.tulajdonsagok + this.MasodlagosErtekek = CalculateMasodlagosErtekek(inputs.osztaly, inputs.tulajdonsagok) + this.Kepzettsegek = inputs.kepzettsegek.map(k => Kepzettsegek[k]) + this.TolvajKepzettsegek = (inputs.tolvajKepzettsegek || []).map(k => Kepzettsegek[k]) + this.Szint = inputs.szint } public HP = () => this.MasodlagosErtekek.HP diff --git a/src/pages/CreateCharacter.tsx b/src/pages/CreateCharacter.tsx index f72041f..cad7a1e 100644 --- a/src/pages/CreateCharacter.tsx +++ b/src/pages/CreateCharacter.tsx @@ -8,10 +8,11 @@ import OsztalySelector from "../components/OsztalySelector"; import KarakterKepzettsegek from "../components/KarakterKepzettsegek"; import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag"; import MasodlagosErtekek from "../components/MasodlagosErtekek"; -import {AvailableKezpettsegList, Kepzettsegek, KepzettsegId, TolvajKepzettsegList} from "../domain-models/kepzettsegek"; +import {AvailableKezpettsegList, TolvajKepzettsegList} from "../domain-models/kepzettsegek"; import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek"; import {CreatePDF} from "../pdf/character.pdf"; -import {KarakterClass} from "../domain-models/karakter"; +import {KarakterClass, KarakterInputs} from "../domain-models/karakter"; +import Level2 from "../components/Level2"; const tulajdonsagDefaults: KarakterTulajdonsagok = { t_ero: 10, @@ -22,6 +23,17 @@ const tulajdonsagDefaults: KarakterTulajdonsagok = { t_kar: 10, } +const karakterDefaults: KarakterInputs = { + name: "Névtelen Kalandozó", + faj: Faj.Ember, + kor: 20, + tulajdonsagok: tulajdonsagDefaults, + osztaly: Osztaly.Harcos, + kepzettsegek: [], + szint: 1, + HProlls: [], +} + function getNumberOfKepzettsegek(t_int: number, faj: Faj, max: number) { let numberOfKepzettseg = 3 + Modifier(t_int) + (faj === Faj.Ember ? 1 : 0) console.log('Raw Number of Kepzetsegek = ', numberOfKepzettseg) @@ -38,38 +50,25 @@ function getNumberOfKepzettsegek(t_int: number, faj: Faj, max: number) { function CreateCharacterPage() { - let [name, changeName] = useState("Névtelen kalandozó") - let [nem, changeNem] = useState("") - let [kor, changeKor] = useState(20) - let [isten, changeIsten] = useState("") - let [faj, changeFaj] = useState(Faj.Ember) - let [tulajdonsagok, changeTulajdonsagok] = useState(tulajdonsagDefaults) - let [osztaly, changeOsztaly] = useState(Osztaly.Harcos) - let [kepzettsegek, changeKepzettsegek] = useState([]) - let [tolvajKepzettsegek, changeTolvajKepzettsegek] = useState([]) + let [karakter, changeKarakter] = useState(karakterDefaults) - const availableKepzettsegList = AvailableKezpettsegList(osztaly) + const availableKepzettsegList = AvailableKezpettsegList(karakter.osztaly) - if (osztaly !== Osztaly.Tolvaj && tolvajKepzettsegek.length > 0) { - tolvajKepzettsegek = [] - changeTolvajKepzettsegek([]) + if (karakter.osztaly !== Osztaly.Tolvaj && karakter.tolvajKepzettsegek != null) { + changeKarakter({...karakter, tolvajKepzettsegek: undefined}) } - if (osztaly === Osztaly.Tolvaj && tolvajKepzettsegek.length === 0) { - tolvajKepzettsegek = TolvajKepzettsegList.slice(0, 4).map(x => x.Id) - changeTolvajKepzettsegek(tolvajKepzettsegek) + if (karakter.osztaly === Osztaly.Tolvaj && (karakter.tolvajKepzettsegek == null || karakter.tolvajKepzettsegek.length === 0)) { + const tolvajKepzettsegek = TolvajKepzettsegList.slice(0, 4).map(x => x.Id) + changeKarakter({...karakter, tolvajKepzettsegek: tolvajKepzettsegek}) } - const karakter = () => new KarakterClass( - name, - nem, - kor, - isten, - faj, - osztaly, - tulajdonsagok, - kepzettsegek.map(k => Kepzettsegek[k]), - osztaly === Osztaly.Tolvaj ? tolvajKepzettsegek.map(k => Kepzettsegek[k]) : [] - ) + function levelUp() { + changeKarakter({...karakter, szint: karakter.szint + 1, HProlls: [...karakter.HProlls, 1]}) + } + + function levelDown() { + changeKarakter({...karakter, szint: karakter.szint - 1, HProlls: karakter.HProlls.slice(0, karakter.HProlls.length - 1)}) + } return (
@@ -84,62 +83,69 @@ function CreateCharacterPage() {
changeName(e.target.value)}/> - {!name && A karaktered nem mászkálhat névtelenül a világban!} + value={karakter.name} + onChange={(e) => changeKarakter({...karakter, name: e.target.value})}/> + {!karakter.name && A karaktered nem mászkálhat névtelenül a világban!}
changeNem(e.target.value)}/> + value={karakter.nem} + onChange={(e) => changeKarakter({...karakter, nem: e.target.value})}/>
changeKor(Number(e.target.value))}/> + onChange={(e) => changeKarakter({...karakter, kor: Number(e.target.value)})}/>
changeIsten(e.target.value)}/> + value={karakter.isten} + onChange={(e) => changeKarakter({...karakter, isten: e.target.value})}/>
changeKarakter({...karakter, faj: faj})} + faj={karakter.faj} />
changeKarakter({...karakter, tulajdonsagok: tul})} />
Tanult
changeKarakter({...karakter, osztaly: o})} /> changeKarakter({...karakter, kepzettsegek: ks}) } + tolvajKepzettsegek={karakter.tolvajKepzettsegek || []} + changeTolvajKepzettsegek={(tks) => changeKarakter({...karakter, tolvajKepzettsegek: tks})} />
- + + + {karakter.szint > 1 && }
- + {karakter.szint < 2 && } + {karakter.szint > 1 && } +
+ +
+