diff --git a/src/components/KarakterKepzettsegek.tsx b/src/components/KarakterKepzettsegek.tsx
index 4e5322f..d9d0364 100644
--- a/src/components/KarakterKepzettsegek.tsx
+++ b/src/components/KarakterKepzettsegek.tsx
@@ -1,15 +1,11 @@
import React from "react";
import KepzettsegSelector from "./KepzettsegSelector";
-import {Osztaly} from "../domain-models/osztaly";
import {
- AvailableKezpettsegList,
Kepzettseg,
Kepzettsegek,
KepzettsegId,
+ TolvajKepzettsegList,
} from "../domain-models/kepzettsegek";
-import {Modifier} from "../domain-models/tulajdonsag";
-import {Faj} from "../domain-models/faj";
-
function InternalKepzettsegekSelector(props: {title: string, numberOfKepzettseg: number, getKepzettsegListaN: (n: number) => Kepzettseg[], kepzettsegek: KepzettsegId[], changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void}) {
const {title, numberOfKepzettseg, getKepzettsegListaN, kepzettsegek, changeKepzettsegek} = props
@@ -38,7 +34,7 @@ function InternalKepzettsegekSelector(props: {title: string, numberOfKepzettseg:
- {klist.map((idx) =>
+ {klist.filter(i => i < preCalculated.length && preCalculated[i].selected != null).map((idx) =>
void
+ tolvajKepzettsegek: KepzettsegId[],
+ changeTolvajKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void
}) {
- const { faj, osztaly, t_int, kepzettsegek, changeKepzettsegek} = props
-
- const availableKepzettsegList = AvailableKezpettsegList(osztaly)
-
- let numberOfKepzettseg = 3 + Modifier(t_int) + (faj === Faj.Ember ? 1 : 0)
- console.log('Raw Number of Kepzetsegek = ', numberOfKepzettseg)
-
- if (numberOfKepzettseg < 1) {
- numberOfKepzettseg = 1
- }
- if (numberOfKepzettseg > availableKepzettsegList.length){
- numberOfKepzettseg = availableKepzettsegList.length
- }
- console.log('Adjusted Number of Kepzetsegek = ', numberOfKepzettseg)
+ const { numberOfKepzettsegek, availableKepzettsegList, changeKepzettsegek, tolvajKepzettsegek, changeTolvajKepzettsegek} = props
+ let kepzettsegek = props.kepzettsegek
const getKepzettsegListaN = (n: number) => {
- let response = availableKepzettsegList;
- for (let i = 0; i < numberOfKepzettseg; i++) {
- response = response.filter(x => i === n || x.Id !== kepzettsegek[i])
+ const kepzettsegekWithoutN = [...kepzettsegek.slice(0, n), ...kepzettsegek.slice(n+1)]
+ return availableKepzettsegList.filter(x => !kepzettsegekWithoutN.includes(x.Id) && !tolvajKepzettsegek.includes(x.Id))
+ }
+
+ if (kepzettsegek.length < numberOfKepzettsegek) {
+ for (let i = kepzettsegek.length; i < numberOfKepzettsegek; i++) {
+ const kepzettsegLista = getKepzettsegListaN(i)
+ if (kepzettsegLista.length > 0) {
+ kepzettsegek.push(kepzettsegLista[0].Id)
+ }
}
- return response
+ changeKepzettsegek(kepzettsegek)
+ }
+ if (kepzettsegek.length > numberOfKepzettsegek){
+ kepzettsegek = kepzettsegek.slice(0, numberOfKepzettsegek)
+ changeKepzettsegek(kepzettsegek)
+ }
+
+ const getTolvajKepzettsegListaN = (n: number) : Kepzettseg[] => {
+ const tolvajKepzettsegekWithoutN = [...tolvajKepzettsegek.slice(0, n), ...tolvajKepzettsegek.slice(n+1)]
+ return TolvajKepzettsegList.filter(x => !kepzettsegek.includes(x.Id) && !tolvajKepzettsegekWithoutN.includes(x.Id))
}
return <>
+
+ {tolvajKepzettsegek.length > 0 && }
>
}
diff --git a/src/domain-models/kepzettsegek.ts b/src/domain-models/kepzettsegek.ts
index 88d968d..6d34aca 100644
--- a/src/domain-models/kepzettsegek.ts
+++ b/src/domain-models/kepzettsegek.ts
@@ -201,6 +201,8 @@ export const KepzettsegLista: Kepzettseg[] = [
},
]
+export const TolvajKepzettsegList = KepzettsegLista.filter(x => x.Osztalyok?.includes(Osztaly.Tolvaj))
+
export const Kepzettsegek: Record =
KepzettsegLista.reduce(
(acc: Record, k) => { acc[k.Id] = k; return acc; },
diff --git a/src/pages/CreateCharacter.tsx b/src/pages/CreateCharacter.tsx
index 1af3b53..1298a97 100644
--- a/src/pages/CreateCharacter.tsx
+++ b/src/pages/CreateCharacter.tsx
@@ -6,9 +6,9 @@ import FajSelector from "../components/FajSelector";
import Tulajdonsagok from "../components/Tulajdonsagok";
import OsztalySelector from "../components/OsztalySelector";
import KarakterKepzettsegek from "../components/KarakterKepzettsegek";
-import {KarakterTulajdonsagok} from "../domain-models/tulajdonsag";
+import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag";
import MasodlagosErtekek from "../components/MasodlagosErtekek";
-import {KepzettsegId} from "../domain-models/kepzettsegek";
+import {AvailableKezpettsegList, KepzettsegId, TolvajKepzettsegList} from "../domain-models/kepzettsegek";
const tulajdonsagDefaults: KarakterTulajdonsagok = {
t_ero: 10,
@@ -19,6 +19,20 @@ const tulajdonsagDefaults: KarakterTulajdonsagok = {
t_kar: 10,
}
+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)
+
+ if (numberOfKepzettseg < 1) {
+ numberOfKepzettseg = 1
+ }
+ if (numberOfKepzettseg > max) {
+ numberOfKepzettseg = max
+ }
+ console.log('Adjusted Number of Kepzetsegek = ', numberOfKepzettseg)
+ return numberOfKepzettseg;
+}
+
function CreateCharacterPage() {
let [name, changeName] = useState("Névtelen kanadozó")
@@ -26,6 +40,18 @@ function CreateCharacterPage() {
let [tulajdonsagok, changeTulajdonsagok] = useState(tulajdonsagDefaults)
let [currentOsztaly, changeOsztaly] = useState(Osztaly.Harcos)
let [kepzettsegek, changeKepzettsegek] = useState([])
+ let [tolvajKepzettsegek, changeTolvajKepzettsegek] = useState([])
+
+ const availableKepzettsegList = AvailableKezpettsegList(currentOsztaly)
+
+ if (currentOsztaly !== Osztaly.Tolvaj && tolvajKepzettsegek.length > 0) {
+ tolvajKepzettsegek = []
+ changeTolvajKepzettsegek([])
+ }
+ if (currentOsztaly === Osztaly.Tolvaj && tolvajKepzettsegek.length === 0) {
+ tolvajKepzettsegek = TolvajKepzettsegList.slice(0, 4).map(x => x.Id)
+ changeTolvajKepzettsegek(tolvajKepzettsegek)
+ }
return (
@@ -33,7 +59,7 @@ function CreateCharacterPage() {
Karakter létrehozása