diff --git a/Kemkas.Web/frontend/src/second-edition/components/BasicNewLevel.tsx b/Kemkas.Web/frontend/src/second-edition/components/BasicNewLevel.tsx new file mode 100644 index 0000000..1d87cea --- /dev/null +++ b/Kemkas.Web/frontend/src/second-edition/components/BasicNewLevel.tsx @@ -0,0 +1,88 @@ +import React from "react"; +import {Karakter2E} from "../domain-models/karakter2E"; +import {SignedNumberToText} from "../../shared/components/Helpers"; +import {Mentok, MentoTipus, MentoTipusLabel, MentokTotal} from "../domain-models/mentok"; +import {BaseHP, HP} from "../domain-models/masodlagos_ertekek"; +import {TamadasBonusz} from "../domain-models/tamadas_bonusz"; + +function MentoNovekedes(props : {tipus: MentoTipus, ujMentok: Mentok, regiMentok: Mentok}) { + const {tipus, ujMentok, regiMentok} = props + if (ujMentok[tipus] === regiMentok[tipus]) { + return null + } + return
+ + {SignedNumberToText(ujMentok[tipus] - regiMentok[tipus])} +
; +} + +function UjMento(props : {tipus: MentoTipus, ujMentok: Mentok, regiMentok: Mentok}) { + const {tipus, ujMentok, regiMentok} = props + if (ujMentok[tipus] === regiMentok[tipus]) { + return null + } + return
+ + {SignedNumberToText(ujMentok[tipus])} +
; +} + +function BasicNewLevel(props: { + karakter: Pick + szint: number + changeRolledHP: (hp: number) => void, +}) { + const {karakter, szint, changeRolledHP} = props + const regiMentok = MentokTotal({...karakter, szint: szint - 1}) + const ujMentok = MentokTotal({...karakter, szint: szint}) + + const regiTB = TamadasBonusz(karakter.osztaly, szint-1) + const ujTB = TamadasBonusz(karakter.osztaly, szint) + if (regiTB.length < ujTB.length) { + regiTB.push(0) + } + const TBdiff = ujTB.map((x, i) => x - regiTB[i]) + const isTBincreased = TBdiff.length > 0 && TBdiff.some(x => x > 0) + + return <> +
+
+
+ +
+ changeRolledHP(Number(e.target.value))} /> +
+
+ { isTBincreased &&
+ + {TBdiff.map(SignedNumberToText).join(" / ")} +
} + + + +
+
+
+ + {HP({...karakter, szintlepesek: karakter.szintlepesek.slice(0, szint-1)})} +
+ {isTBincreased &&
+ + {ujTB.map(SignedNumberToText).join(" / ")} +
} + + + +
+
+ +} + +export default BasicNewLevel \ No newline at end of file diff --git a/Kemkas.Web/frontend/src/second-edition/components/FegyverSelector.tsx b/Kemkas.Web/frontend/src/second-edition/components/FegyverSelector.tsx new file mode 100644 index 0000000..29cffb6 --- /dev/null +++ b/Kemkas.Web/frontend/src/second-edition/components/FegyverSelector.tsx @@ -0,0 +1,86 @@ +import React from "react"; +import {Fegyver} from "../domain-models/felszereles"; + +export function FegyverLabel(fegyver: Fegyver): string { + const flags = [] as string[] + if (fegyver.Harcos) { + flags.push("H") + } + if (fegyver.Masfelkezes) { + flags.push("1½K") + } + if (fegyver.Ketkezes) { + if (fegyver.Type === "kozelharci") { + flags.push("2K") + } else { + if (fegyver.KetkezesBonusz) { + flags.push("2KB") + } else { + flags.push("2KN") + } + } + } + if (fegyver.HarciManover) { + flags.push("+2 HM") + } + if (fegyver.Alakzat){ + flags.push("AL") + } + if (fegyver.Hosszu) { + flags.push("HO") + } + if (fegyver.Kabito) { + flags.push("KO") + } + if (fegyver.LovasRoham) { + flags.push("LR") + } + if (fegyver.PancelToro) { + flags.push("PT") + } + if (fegyver.PajzsZuzo) { + flags.push("PZ") + } + if (fegyver.Rohamtoro) { + flags.push("RT") + } + // Replaced by new group "dobhato" + // if (fegyver.EroBonusz) { + // flags.push("ER") + // } + if (fegyver.Megjegyzes != null && fegyver.Megjegyzes.length > 0) { + flags.push(fegyver.Megjegyzes) + } + const serializedFlags = flags.reduce((p,c) => `${p}${c} `, ''); + const sizeLabel = fegyver.Size < 1 && fegyver.Size > 0 ? ` [1/${Math.round(1 / fegyver.Size)}]` : (fegyver.Size > 1 ? ` [${fegyver.Size}]` : ''); + return `${fegyver.Name}${sizeLabel} ${serializedFlags.length > 0 ? "| " + serializedFlags : ''}| ${ + fegyver.DamageMultiplier > 1 ? `${fegyver.DamageMultiplier}*` : ''}${fegyver.NumberOfDamageDice}d${fegyver.DamageDice}${fegyver.DamageBonus > 0 ? ` +${fegyver.DamageBonus}` : ''} ${ + fegyver.CritRangeStart < 20 ? `${fegyver.CritRangeStart}-20` : ''}x${fegyver.CritMultiplier}${ + fegyver.Price > 0 ? ` | ár: ${fegyver.Price} at ` : ''}${ + fegyver.Range > 10 ? ` | táv: ${fegyver.Range}` : ''}` +} + +function FegyverSelector(props: {fegyverek: Fegyver[], selectedId: string, onChange: (id: string) => void}) { + + const { fegyverek, selectedId, onChange } = props + + return <> + + +} + +export default FegyverSelector \ No newline at end of file diff --git a/Kemkas.Web/frontend/src/second-edition/components/Felszereles.tsx b/Kemkas.Web/frontend/src/second-edition/components/Felszereles.tsx index d7f1447..4dd135f 100644 --- a/Kemkas.Web/frontend/src/second-edition/components/Felszereles.tsx +++ b/Kemkas.Web/frontend/src/second-edition/components/Felszereles.tsx @@ -5,64 +5,7 @@ import {AllowedPajzsTypes, AllowedPancelTypes} from '../domain-models/allowed-pa import fegyverek from '../domain-models/fegyver.json' import {arraySetN} from "../../util"; import {AllowedFegyver} from "../domain-models/allowed-fegyver"; - -export function FegyverLabel(fegyver: Fegyver): string { - const flags = [] as string[] - if (fegyver.Harcos) { - flags.push("H") - } - if (fegyver.Masfelkezes) { - flags.push("1½K") - } - if (fegyver.Ketkezes) { - if (fegyver.Type === "kozelharci") { - flags.push("2K") - } else { - if (fegyver.KetkezesBonusz) { - flags.push("2KB") - } else { - flags.push("2KN") - } - } - } - if (fegyver.HarciManover) { - flags.push("+2 HM") - } - if (fegyver.Alakzat){ - flags.push("AL") - } - if (fegyver.Hosszu) { - flags.push("HO") - } - if (fegyver.Kabito) { - flags.push("KO") - } - if (fegyver.LovasRoham) { - flags.push("LR") - } - if (fegyver.PancelToro) { - flags.push("PT") - } - if (fegyver.PajzsZuzo) { - flags.push("PZ") - } - if (fegyver.Rohamtoro) { - flags.push("RT") - } - // if (fegyver.EroBonusz) { - // flags.push("ER") - // } - if (fegyver.Megjegyzes != null && fegyver.Megjegyzes.length > 0) { - flags.push(fegyver.Megjegyzes) - } - const serializedFlags = flags.reduce((p,c) => `${p}${c} `, ''); - const sizeLabel = fegyver.Size < 1 && fegyver.Size > 0 ? ` [1/${Math.round(1 / fegyver.Size)}]` : (fegyver.Size > 1 ? ` [${fegyver.Size}]` : ''); - return `${fegyver.Name}${sizeLabel} ${serializedFlags.length > 0 ? "| " + serializedFlags : ''}| ${ - fegyver.DamageMultiplier > 1 ? `${fegyver.DamageMultiplier}*` : ''}${fegyver.NumberOfDamageDice}d${fegyver.DamageDice}${fegyver.DamageBonus > 0 ? ` +${fegyver.DamageBonus}` : ''} ${ - fegyver.CritRangeStart < 20 ? `${fegyver.CritRangeStart}-20` : ''}x${fegyver.CritMultiplier}${ - fegyver.Price > 0 ? ` | ár: ${fegyver.Price} at ` : ''}${ - fegyver.Range > 10 ? ` | táv: ${fegyver.Range}` : ''}` -} +import FegyverSelector from "./FegyverSelector"; function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles: (felszereles: KarakterFelszereles) => void, osztaly: Osztaly2E}) { const { felszereles, changeFelszereles, osztaly } = props; @@ -116,21 +59,7 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles {valasztottFegyverek.map(({idx, fegyver}) => (
- + changeFegyver(idx, fegyverId)} /> } + {karakter.szint > 1 && + } +
+
+