refactor done?

need to start testing
This commit is contained in:
2023-09-03 21:47:31 +02:00
parent 442b930334
commit 413f96ee10
3 changed files with 72 additions and 34 deletions
+37 -28
View File
@@ -1,15 +1,11 @@
import React from "react"; import React from "react";
import KepzettsegSelector from "./KepzettsegSelector"; import KepzettsegSelector from "./KepzettsegSelector";
import {Osztaly} from "../domain-models/osztaly";
import { import {
AvailableKezpettsegList,
Kepzettseg, Kepzettseg,
Kepzettsegek, Kepzettsegek,
KepzettsegId, KepzettsegId,
TolvajKepzettsegList,
} from "../domain-models/kepzettsegek"; } 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}) { function InternalKepzettsegekSelector(props: {title: string, numberOfKepzettseg: number, getKepzettsegListaN: (n: number) => Kepzettseg[], kepzettsegek: KepzettsegId[], changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void}) {
const {title, numberOfKepzettseg, getKepzettsegListaN, kepzettsegek, changeKepzettsegek} = props const {title, numberOfKepzettseg, getKepzettsegListaN, kepzettsegek, changeKepzettsegek} = props
@@ -38,7 +34,7 @@ function InternalKepzettsegekSelector(props: {title: string, numberOfKepzettseg:
<label className='col-form-label text-body-emphasis'>{title}</label> <label className='col-form-label text-body-emphasis'>{title}</label>
</div> </div>
<div className='col'> <div className='col'>
{klist.map((idx) => {klist.filter(i => i < preCalculated.length && preCalculated[i].selected != null).map((idx) =>
<KepzettsegSelector <KepzettsegSelector
key={title+idx} key={title+idx}
kepzettsegek={preCalculated[idx].kepzettsegek} kepzettsegek={preCalculated[idx].kepzettsegek}
@@ -52,43 +48,56 @@ function InternalKepzettsegekSelector(props: {title: string, numberOfKepzettseg:
} }
function KarakterKepzettsegek (props: { function KarakterKepzettsegek (props: {
faj: Faj availableKepzettsegList: Kepzettseg[],
osztaly: Osztaly, numberOfKepzettsegek: number
t_int: number,
kepzettsegek: KepzettsegId[], kepzettsegek: KepzettsegId[],
changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void
tolvajKepzettsegek: KepzettsegId[],
changeTolvajKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void
}) { }) {
const { faj, osztaly, t_int, kepzettsegek, changeKepzettsegek} = props const { numberOfKepzettsegek, availableKepzettsegList, changeKepzettsegek, tolvajKepzettsegek, changeTolvajKepzettsegek} = props
let kepzettsegek = props.kepzettsegek
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 getKepzettsegListaN = (n: number) => { const getKepzettsegListaN = (n: number) => {
let response = availableKepzettsegList; const kepzettsegekWithoutN = [...kepzettsegek.slice(0, n), ...kepzettsegek.slice(n+1)]
for (let i = 0; i < numberOfKepzettseg; i++) { return availableKepzettsegList.filter(x => !kepzettsegekWithoutN.includes(x.Id) && !tolvajKepzettsegek.includes(x.Id))
response = response.filter(x => i === n || x.Id !== kepzettsegek[i])
} }
return response
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)
}
}
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 <> return <>
<InternalKepzettsegekSelector <InternalKepzettsegekSelector
title="Képzettségek" title="Képzettségek"
numberOfKepzettseg={numberOfKepzettseg} numberOfKepzettseg={numberOfKepzettsegek}
getKepzettsegListaN={getKepzettsegListaN} getKepzettsegListaN={getKepzettsegListaN}
changeKepzettsegek={changeKepzettsegek} changeKepzettsegek={changeKepzettsegek}
kepzettsegek={kepzettsegek} /> kepzettsegek={kepzettsegek} />
{tolvajKepzettsegek.length > 0 && <InternalKepzettsegekSelector
title="Tolvaj képzettségek"
numberOfKepzettseg={4}
getKepzettsegListaN={getTolvajKepzettsegListaN}
changeKepzettsegek={changeTolvajKepzettsegek}
kepzettsegek={tolvajKepzettsegek} />}
</> </>
} }
+2
View File
@@ -201,6 +201,8 @@ export const KepzettsegLista: Kepzettseg[] = [
}, },
] ]
export const TolvajKepzettsegList = KepzettsegLista.filter(x => x.Osztalyok?.includes(Osztaly.Tolvaj))
export const Kepzettsegek: Record<KepzettsegId, Kepzettseg> = export const Kepzettsegek: Record<KepzettsegId, Kepzettseg> =
KepzettsegLista.reduce( KepzettsegLista.reduce(
(acc: Record<KepzettsegId, Kepzettseg>, k) => { acc[k.Id] = k; return acc; }, (acc: Record<KepzettsegId, Kepzettseg>, k) => { acc[k.Id] = k; return acc; },
+33 -6
View File
@@ -6,9 +6,9 @@ import FajSelector from "../components/FajSelector";
import Tulajdonsagok from "../components/Tulajdonsagok"; import Tulajdonsagok from "../components/Tulajdonsagok";
import OsztalySelector from "../components/OsztalySelector"; import OsztalySelector from "../components/OsztalySelector";
import KarakterKepzettsegek from "../components/KarakterKepzettsegek"; import KarakterKepzettsegek from "../components/KarakterKepzettsegek";
import {KarakterTulajdonsagok} from "../domain-models/tulajdonsag"; import {KarakterTulajdonsagok, Modifier} from "../domain-models/tulajdonsag";
import MasodlagosErtekek from "../components/MasodlagosErtekek"; import MasodlagosErtekek from "../components/MasodlagosErtekek";
import {KepzettsegId} from "../domain-models/kepzettsegek"; import {AvailableKezpettsegList, KepzettsegId, TolvajKepzettsegList} from "../domain-models/kepzettsegek";
const tulajdonsagDefaults: KarakterTulajdonsagok = { const tulajdonsagDefaults: KarakterTulajdonsagok = {
t_ero: 10, t_ero: 10,
@@ -19,6 +19,20 @@ const tulajdonsagDefaults: KarakterTulajdonsagok = {
t_kar: 10, 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() { function CreateCharacterPage() {
let [name, changeName] = useState<string>("Névtelen kanadozó") let [name, changeName] = useState<string>("Névtelen kanadozó")
@@ -26,6 +40,18 @@ function CreateCharacterPage() {
let [tulajdonsagok, changeTulajdonsagok] = useState(tulajdonsagDefaults) let [tulajdonsagok, changeTulajdonsagok] = useState(tulajdonsagDefaults)
let [currentOsztaly, changeOsztaly] = useState<Osztaly>(Osztaly.Harcos) let [currentOsztaly, changeOsztaly] = useState<Osztaly>(Osztaly.Harcos)
let [kepzettsegek, changeKepzettsegek] = useState<KepzettsegId[]>([]) let [kepzettsegek, changeKepzettsegek] = useState<KepzettsegId[]>([])
let [tolvajKepzettsegek, changeTolvajKepzettsegek] = useState<KepzettsegId[]>([])
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 ( return (
<div> <div>
@@ -33,7 +59,7 @@ function CreateCharacterPage() {
<h1>Karakter létrehozása</h1> <h1>Karakter létrehozása</h1>
</div> </div>
<div className='p-3'> <div className='p-3'>
<form> <form onSubmit={() => console.log("Character created!")}>
<div className='row'> <div className='row'>
<h5 className='col align-self-center'>Származás</h5> <h5 className='col align-self-center'>Származás</h5>
</div> </div>
@@ -64,11 +90,12 @@ function CreateCharacterPage() {
changeOsztaly={changeOsztaly} changeOsztaly={changeOsztaly}
/> />
<KarakterKepzettsegek <KarakterKepzettsegek
faj={faj} availableKepzettsegList={availableKepzettsegList}
osztaly={currentOsztaly} numberOfKepzettsegek={getNumberOfKepzettsegek(tulajdonsagok.t_int, faj, availableKepzettsegList.length)}
t_int={tulajdonsagok.t_int}
kepzettsegek={kepzettsegek} kepzettsegek={kepzettsegek}
changeKepzettsegek={changeKepzettsegek} changeKepzettsegek={changeKepzettsegek}
tolvajKepzettsegek={tolvajKepzettsegek}
changeTolvajKepzettsegek={changeTolvajKepzettsegek}
/> />
<hr /> <hr />