add kaloz kritikus fegyverek

This commit is contained in:
2023-10-05 21:33:32 +02:00
parent dbd77a9fcf
commit 324a7896a4
7 changed files with 100 additions and 20 deletions
+14 -4
View File
@@ -1,15 +1,25 @@
import React from "react";
function HarcosFegyverSpecializacio(props: {specialization: string, existingSpecializations: string[], changeSpecialization: (specialization: string) => void }) {
const {specialization, existingSpecializations, changeSpecialization} = props
const hasError = existingSpecializations.filter(x => x === specialization).length > 1
function HarcosFegyverSpecializacio(props: {
specialization: string,
existingSpecializations: string[],
changeSpecialization: (specialization: string) => void
szint: number
}) {
const {
specialization,
existingSpecializations,
changeSpecialization,
szint
} = props
const hasError = existingSpecializations.filter(x => x === specialization).length > (szint < 9 ? 1 : 2)
return <>
<div className='row m-2'>
<label className='col-md-2 col-sm-3 col-form-label' >Fegyver specializáció</label>
<input className='col form-control'
value={specialization}
onChange={(e) => changeSpecialization(e.target.value)}/>
{hasError && <span className='form-field-error'>Már választottad ezt a specializaciót!</span>}
{hasError && <span className='form-field-error'>Már {szint < 9 ? '' : 'kétszer is'} választottad ezt a fegyvert!</span>}
</div>
</>
}
+27
View File
@@ -0,0 +1,27 @@
import React from "react";
function KalozKritikus(props: {
krit: string,
existingKrits: string[],
changeKrit: (specialization: string) => void,
szint: number
}) {
const {
krit,
existingKrits,
changeKrit,
szint
} = props
const hasError = existingKrits.filter(x => x === krit).length > (szint < 9 ? 1 : 2)
return <>
<div className='row m-2'>
<label className='col-md-2 col-sm-3 col-form-label'>Kritikus</label>
<input className='col form-control'
value={krit}
onChange={(e) => changeKrit(e.target.value)}/>
{hasError && <span className='form-field-error'>Már {szint < 9 ? '' : 'kétszer is'} választottad ezt a fegyvert!</span>}
</div>
</>
}
export default KalozKritikus
+38 -3
View File
@@ -6,14 +6,30 @@ import {Tulajdonsag, TulajdonsagokTotal} from "../domain-models/tulajdonsag";
import {arraySetN} from "../util";
import {Osztaly} from "../domain-models/osztaly";
import HarcosFegyverSpecializacio from "./HarcosFegyverSpecializacio";
import KalozKritikus from "./KalozKritikus";
function LevelUp(props: {szint: number, karakter: KarakterInputs, changeTulajdonsagNoveles: (t: Tulajdonsag) => void, changeRolledHP: (rolledHP: number) => void, changeHarcosSpec: (spec: string) => void}) {
const {szint, karakter, changeTulajdonsagNoveles, changeRolledHP, changeHarcosSpec} = props
function LevelUp(props: {
szint: number,
karakter: KarakterInputs,
changeTulajdonsagNoveles: (t: Tulajdonsag) => void,
changeRolledHP: (rolledHP: number) => void,
changeHarcosSpec: (spec: string) => void,
changeKalozKritikus: (krit: string) => void,
}) {
const {
szint,
karakter,
changeTulajdonsagNoveles,
changeRolledHP,
changeHarcosSpec,
changeKalozKritikus,
} = props
const specializationIndex = Math.floor((szint-1) / 2)
console.log('Specialization index: ' + specializationIndex.toString())
const specialization = karakter.harcosSpecializaciok[specializationIndex]
console.log(specialization)
const krit = karakter.kalozKritikus[Math.floor(szint/3)]
return <div key={`level-up-${szint}`}>
<div className='row mt-3'>
@@ -31,7 +47,21 @@ function LevelUp(props: {szint: number, karakter: KarakterInputs, changeTulajdon
changeRolledHP={changeRolledHP}
/>
{karakter.osztaly === Osztaly.Harcos && szint % 2 === 1 &&
<HarcosFegyverSpecializacio specialization={specialization} existingSpecializations={karakter.harcosSpecializaciok} changeSpecialization={changeHarcosSpec} />}
<HarcosFegyverSpecializacio
specialization={specialization}
existingSpecializations={karakter.harcosSpecializaciok}
changeSpecialization={changeHarcosSpec}
szint={szint}
/>
}
{karakter.osztaly === Osztaly.Kaloz && szint % 3 === 0 &&
<KalozKritikus
krit={krit}
existingKrits={karakter.kalozKritikus}
changeKrit={changeKalozKritikus}
szint={szint}
/>
}
</div>
}
@@ -50,6 +80,10 @@ export function LevelUps(props: {karakter: KarakterInputs, changeKarakter: (inpu
changeKarakter({...karakter, harcosSpecializaciok: arraySetN(karakter.harcosSpecializaciok, Math.floor((szint-1) / 2), spec)})
}
const changeKalozKritikusAtSzint = (szint: number) => (spec: string) => {
changeKarakter({...karakter, kalozKritikus: arraySetN(karakter.kalozKritikus, Math.floor(szint / 3), spec)})
}
return <>
{karakter.hpRolls.map((_, i) => i+2).map(szint => <>
<LevelUp
@@ -59,6 +93,7 @@ export function LevelUps(props: {karakter: KarakterInputs, changeKarakter: (inpu
changeTulajdonsagNoveles={changeTulajdonsagNovelesAtSzint(szint)}
changeRolledHP={changeRolledHPAtSzint(szint)}
changeHarcosSpec={changeHarcosSpecializacioAtSzint(szint)}
changeKalozKritikus={changeKalozKritikusAtSzint(szint)}
/>
</>
)}
+3 -3
View File
@@ -28,11 +28,11 @@ export const KarakterDefaults: KarakterInputs = {
kor: 20,
jellem: 'S',
tulajdonsagok: TulajdonsagDefaults,
osztaly: Osztaly.Harcos,
osztaly: Osztaly.Kaloz,
kepzettsegek: [],
szint: 1,
hpRolls: [],
tulajdonsagNovelesek: [],
harcosSpecializaciok: ['szablya'],
kalozKritikus: [],
harcosSpecializaciok: [],
kalozKritikus: ['szablya'],
}
+6 -2
View File
@@ -24,9 +24,13 @@ export function LevelUp(karakter: KarakterInputs, changeKarakter: (input: Karakt
}
let harcosSpecializaciok = karakter.harcosSpecializaciok
if(karakter.osztaly === Osztaly.Harcos && szint % 2 === 1) {
harcosSpecializaciok = [...harcosSpecializaciok, "szablya"]
harcosSpecializaciok = [...harcosSpecializaciok, "Csatabárd"]
}
changeKarakter({...karakter, szint, hpRolls, tulajdonsagNovelesek, harcosSpecializaciok})
let kalozKritikus = karakter.kalozKritikus
if(karakter.osztaly === Osztaly.Kaloz && szint % 3 === 0) {
kalozKritikus = [...kalozKritikus, "Szablya"]
}
changeKarakter({...karakter, szint, hpRolls, tulajdonsagNovelesek, harcosSpecializaciok, kalozKritikus})
}
export function LevelDown(karakter: KarakterInputs, changeKarakter: (input: KarakterInputs) => void) {
+8 -1
View File
@@ -97,7 +97,13 @@ function CreateCharacterPage() {
<OsztalySelector
currentFaj={karakter.faj}
currentOsztaly={karakter.osztaly}
changeOsztaly={(o: Osztaly) => changeKarakter({...karakter, osztaly: o, harcosSpecializaciok: o === Osztaly.Harcos ? ['szablya'] : []})}
changeOsztaly={(o: Osztaly) =>
changeKarakter({
...karakter,
osztaly: o,
harcosSpecializaciok: o === Osztaly.Harcos ? ['kard'] : [],
kalozKritikus: o === Osztaly.Kaloz ? ['szablya'] : [],
})}
/>
{karakter.osztaly === Osztaly.Harcos &&
<div className='mb-6'>
@@ -105,6 +111,7 @@ function CreateCharacterPage() {
specialization={karakter.harcosSpecializaciok[0]}
existingSpecializations={karakter.harcosSpecializaciok}
changeSpecialization={(spec: string) => changeKarakter({...karakter, harcosSpecializaciok: [spec, ...karakter.harcosSpecializaciok.slice(1)]})}
szint={1}
/>
</div>}
<KarakterKepzettsegek