refactor done?
need to start testing
This commit is contained in:
@@ -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])
|
}
|
||||||
|
|
||||||
|
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 <>
|
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} />}
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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; },
|
||||||
|
|||||||
@@ -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 />
|
||||||
|
|||||||
Reference in New Issue
Block a user