From 49826d1059f69c2b115cda2236f17f235779bb6f Mon Sep 17 00:00:00 2001 From: Balint Morasz Date: Sun, 22 Oct 2023 11:28:57 +0200 Subject: [PATCH] fix kaloz kritIndex & refactor all Id --- src/components/Felszereles.tsx | 16 ++--- src/components/HarcosFegyverSpecializacio.tsx | 6 +- src/components/KalozKritikus.tsx | 15 +++-- src/components/LevelUps.tsx | 14 ++-- src/domain-models/fegyver.json | 66 +++++++++---------- src/domain-models/felszereles.ts | 12 ++-- src/domain-models/osztaly.ts | 10 +-- src/domain-models/pajzs.json | 8 +-- src/domain-models/pancel.json | 24 +++---- src/pdf/karakter_pdf_view.ts | 2 +- 10 files changed, 88 insertions(+), 85 deletions(-) diff --git a/src/components/Felszereles.tsx b/src/components/Felszereles.tsx index 7ee16bd..6572a14 100644 --- a/src/components/Felszereles.tsx +++ b/src/components/Felszereles.tsx @@ -19,12 +19,12 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles const { felszereles, changeFelszereles, osztaly } = props; const allowedPancelTypes = AllowedPancelTypes([osztaly]) const valasztottFegyverek = felszereles.fegyverIDk - .map((id, idx) => ({idx, fegyver: fegyverek.data.find(f => f.ID === id)})).filter((x) => x.fegyver != null).map(({idx, fegyver}) => ({idx, fegyver: fegyver as Fegyver})) + .map((id, idx) => ({idx, fegyver: fegyverek.data.find(f => f.Id === id)})).filter((x) => x.fegyver != null).map(({idx, fegyver}) => ({idx, fegyver: fegyver as Fegyver})) const osztalyAllowedFegyverek = OsztalyAllowedFegyver(osztaly) - const allowedFegyverek = [...osztalyAllowedFegyverek, ...valasztottFegyverek.filter(({idx, fegyver}) => !osztalyAllowedFegyverek.map(f => f.ID).includes(fegyver.ID)).map(({fegyver}) => fegyver)] + const allowedFegyverek = [...osztalyAllowedFegyverek, ...valasztottFegyverek.filter(({idx, fegyver}) => !osztalyAllowedFegyverek.map(f => f.Id).includes(fegyver.Id)).map(({fegyver}) => fegyver)] const changeFegyver = (idx: number, newID: string) => { - const found = fegyverek.data.find(x => x.ID === newID) + const found = fegyverek.data.find(x => x.Id === newID) if (!found) { console.log('Nem létező fegyver ID: ', newID) return @@ -40,7 +40,7 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles { allowedPancelTypes.map(pancelType => ( - {pancelok['pancel'].filter(p => p.Type === pancelType).map(p => )} + {pancelok['pancel'].filter(p => p.Type === pancelType).map(p => )} )) } @@ -50,18 +50,18 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles {valasztottFegyverek.map(({idx, fegyver}) => (
- changeFegyver(idx, e.target.value)}> - {allowedFegyverek.filter(f => f.Type === 'kozelharci').map(f => )} + {allowedFegyverek.filter(f => f.Type === 'kozelharci').map(f => )} - {allowedFegyverek.filter(f => f.Type === 'lofegyver').map(f => )} + {allowedFegyverek.filter(f => f.Type === 'lofegyver').map(f => )} diff --git a/src/components/HarcosFegyverSpecializacio.tsx b/src/components/HarcosFegyverSpecializacio.tsx index 91899c2..7f0ecee 100644 --- a/src/components/HarcosFegyverSpecializacio.tsx +++ b/src/components/HarcosFegyverSpecializacio.tsx @@ -19,12 +19,12 @@ function HarcosFegyverSpecializacio(props: { return <>
- changeSpecialization(e.target.value)}> - {fegyverek.data.filter(f => f.Type === 'kozelharci').map(f => )} + {fegyverek.data.filter(f => f.Type === 'kozelharci').map(f => )} - {fegyverek.data.filter(f => f.Type === 'lofegyver').map(f => )} + {fegyverek.data.filter(f => f.Type === 'lofegyver').map(f => )} {fegyver == null && Ismeretlen fegyver: {specialization}} diff --git a/src/components/KalozKritikus.tsx b/src/components/KalozKritikus.tsx index b606e4b..c65918e 100644 --- a/src/components/KalozKritikus.tsx +++ b/src/components/KalozKritikus.tsx @@ -1,28 +1,29 @@ import React from "react"; -import fegyverek from "../domain-models/fegyver.json" +import {Osztaly, OsztalyAllowedFegyver} from "../domain-models/osztaly"; function KalozKritikus(props: { - krit: string, + kritFegyverId: string, existingKrits: string[], changeKrit: (krit: string) => void, szint: number }) { const { - krit, + kritFegyverId, existingKrits, changeKrit, szint } = props - const hasError = existingKrits.filter(x => x === krit).length > (szint < 9 ? 1 : 2) + const hasError = existingKrits.filter(x => x === kritFegyverId).length > (szint < 9 ? 1 : 2) + const fegyverek = OsztalyAllowedFegyver(Osztaly.Kaloz) return <>
- changeKrit(e.target.value)}> - {fegyverek.data.filter(f => f.Type === 'kozelharci').map(f => )} + {fegyverek.filter(f => f.Type === 'kozelharci').map(f => )} - {fegyverek.data.filter(f => f.Type === 'lofegyver').map(f => )} + {fegyverek.filter(f => f.Type === 'lofegyver').map(f => )} {hasError && Már {szint < 9 ? '' : 'kétszer is'} választottad ezt a fegyvert!} diff --git a/src/components/LevelUps.tsx b/src/components/LevelUps.tsx index 5401393..f13d409 100644 --- a/src/components/LevelUps.tsx +++ b/src/components/LevelUps.tsx @@ -8,6 +8,10 @@ import {Osztaly} from "../domain-models/osztaly"; import HarcosFegyverSpecializacio from "./HarcosFegyverSpecializacio"; import KalozKritikus from "./KalozKritikus"; +function kalozKritIndex(szint: number) { + return Math.floor(szint/3)-1 +} + function LevelUp(props: { szint: number, karakter: KarakterInputs, @@ -26,12 +30,10 @@ function LevelUp(props: { } = props const specializationIndex = Math.floor((szint-1) / 2) - console.log('Specialization index: ' + specializationIndex.toString()) const specialization = karakter.harcosSpecializaciok[specializationIndex] console.log(specialization) - const kritIndex = Math.floor(szint/3)-1 + const kritIndex = kalozKritIndex(szint) const krit = karakter.kalozKritikus[kritIndex] - console.log(`kaloz krit @${szint}: ${krit}`) return
@@ -58,7 +60,7 @@ function LevelUp(props: { } {karakter.osztaly === Osztaly.Kaloz && szint % 3 === 0 && !!krit && (spec: string) => { - changeKarakter({...karakter, kalozKritikus: arraySetN(karakter.kalozKritikus, Math.floor(szint / 3), spec)}) + const changeKalozKritikusAtSzint = (szint: number) => (krit: string) => { + changeKarakter({...karakter, kalozKritikus: arraySetN(karakter.kalozKritikus, kalozKritIndex(szint), krit)}) } return <> diff --git a/src/domain-models/fegyver.json b/src/domain-models/fegyver.json index 7916faa..09044c9 100644 --- a/src/domain-models/fegyver.json +++ b/src/domain-models/fegyver.json @@ -1,7 +1,7 @@ { "data": [ { - "ID": "alabard", + "Id": "alabard", "Name": "Alabárd és más szálfegyverek", "Type": "kozelharci", "Ketkezes": true, @@ -15,7 +15,7 @@ "Range": 0 }, { - "ID": "bot", + "Id": "bot", "Name": "Bot", "Type": "kozelharci", "Ketkezes": false, @@ -29,7 +29,7 @@ "Range": 0 }, { - "ID": "bunko", + "Id": "bunko", "Name": "Bunkó", "Type": "kozelharci", "Ketkezes": false, @@ -43,7 +43,7 @@ "Range": 0 }, { - "ID": "buzogany", + "Id": "buzogany", "Name": "Buzogány és láncos buzogány", "Type": "kozelharci", "Ketkezes": false, @@ -57,7 +57,7 @@ "Range": 0 }, { - "ID": "csatabard", + "Id": "csatabard", "Name": "Csatabárd", "Type": "kozelharci", "Ketkezes": false, @@ -71,7 +71,7 @@ "Range": 0 }, { - "ID": "csatabard_2", + "Id": "csatabard_2", "Name": "Kétkezes csatabárd", "Type": "kozelharci", "Ketkezes": true, @@ -85,7 +85,7 @@ "Range": 0 }, { - "ID": "csakany", + "Id": "csakany", "Name": "Csákány", "Type": "kozelharci", "Ketkezes": true, @@ -99,7 +99,7 @@ "Range": 0 }, { - "ID": "darda", + "Id": "darda", "Name": "Dárda", "Type": "kozelharci", "Ketkezes": true, @@ -113,7 +113,7 @@ "Range": 0 }, { - "ID": "fejsze", + "Id": "fejsze", "Name": "Fejsze", "Type": "kozelharci", "Ketkezes": false, @@ -127,7 +127,7 @@ "Range": 10 }, { - "ID": "torpe_fejsze", + "Id": "torpe_fejsze", "Name": "Törpe fejsze", "Type": "kozelharci", "Ketkezes": false, @@ -141,7 +141,7 @@ "Range": 0 }, { - "ID": "handzsar", + "Id": "handzsar", "Name": "Handzsár", "Type": "kozelharci", "Ketkezes": true, @@ -155,7 +155,7 @@ "Range": 0 }, { - "ID": "harci_kalapacs", + "Id": "harci_kalapacs", "Name": "Harci kalapács", "Type": "kozelharci", "Ketkezes": false, @@ -169,7 +169,7 @@ "Range": 0 }, { - "ID": "harci_kalapacs_2", + "Id": "harci_kalapacs_2", "Name": "Kétkezes harci kalapács", "Type": "kozelharci", "Ketkezes": true, @@ -183,7 +183,7 @@ "Range": 0 }, { - "ID": "fattyu_kard", + "Id": "fattyu_kard", "Name": "Fattyú kard", "Type": "kozelharci", "Ketkezes": false, @@ -197,7 +197,7 @@ "Range": 0 }, { - "ID": "rovid_kard", + "Id": "rovid_kard", "Name": "Rövid kard", "Type": "kozelharci", "Ketkezes": false, @@ -211,7 +211,7 @@ "Range": 0 }, { - "ID": "hosszu_kard", + "Id": "hosszu_kard", "Name": "Hosszú kard", "Type": "kozelharci", "Ketkezes": false, @@ -225,7 +225,7 @@ "Range": 0 }, { - "ID": "kard_2", + "Id": "kard_2", "Name": "Kétkezes kard", "Type": "kozelharci", "Ketkezes": true, @@ -239,7 +239,7 @@ "Range": 0 }, { - "ID": "kasza", + "Id": "kasza", "Name": "Kasza", "Type": "kozelharci", "Ketkezes": true, @@ -253,7 +253,7 @@ "Range": 0 }, { - "ID": "landzsa", + "Id": "landzsa", "Name": "Lándzsa", "Type": "kozelharci", "Ketkezes": false, @@ -267,7 +267,7 @@ "Range": 20 }, { - "ID": "sarlo", + "Id": "sarlo", "Name": "Sarló", "Type": "kozelharci", "Ketkezes": false, @@ -281,7 +281,7 @@ "Range": 0 }, { - "ID": "szablya", + "Id": "szablya", "Name": "Szablya", "Type": "kozelharci", "Ketkezes": false, @@ -295,7 +295,7 @@ "Range": 0 }, { - "ID": "szigony", + "Id": "szigony", "Name": "Háromágú szigony", "Type": "kozelharci", "Ketkezes": false, @@ -309,7 +309,7 @@ "Range": 10 }, { - "ID": "tor", + "Id": "tor", "Name": "Tőr", "Type": "kozelharci", "Ketkezes": false, @@ -323,7 +323,7 @@ "Range": 10 }, { - "ID": "ostor", + "Id": "ostor", "Name": "Ostor", "Type": "kozelharci", "Ketkezes": false, @@ -337,7 +337,7 @@ "Range": 0 }, { - "ID": "okol", + "Id": "okol", "Name": "Ököl", "Type": "kozelharci", "Ketkezes": false, @@ -352,7 +352,7 @@ }, { - "ID": "dobodarda", + "Id": "dobodarda", "Name": "Dobódárda", "Type": "lofegyver", "Ketkezes": false, @@ -366,7 +366,7 @@ "Range": 30 }, { - "ID": "dobotu", + "Id": "dobotu", "Name": "Dobótű", "Type": "lofegyver", "Ketkezes": false, @@ -380,7 +380,7 @@ "Range": 20 }, { - "ID": "rovid_ij", + "Id": "rovid_ij", "Name": "Rövid íj", "Type": "lofegyver", "Ketkezes": true, @@ -394,7 +394,7 @@ "Range": 60 }, { - "ID": "hosszu_ij", + "Id": "hosszu_ij", "Name": "Hosszú íj", "Type": "lofegyver", "Ketkezes": true, @@ -408,7 +408,7 @@ "Range": 70 }, { - "ID": "visszacsapo_ij", + "Id": "visszacsapo_ij", "Name": "Visszacsapó íj", "Type": "lofegyver", "Ketkezes": true, @@ -422,7 +422,7 @@ "Range": 110 }, { - "ID": "parittya", + "Id": "parittya", "Name": "Parittya", "Type": "lofegyver", "Ketkezes": true, @@ -436,7 +436,7 @@ "Range": 50 }, { - "ID": "konnyu_szamszerij", + "Id": "konnyu_szamszerij", "Name": "Könnyű számszeríj", "Type": "lofegyver", "Ketkezes": true, @@ -450,7 +450,7 @@ "Range": 80 }, { - "ID": "nehez_szamszerij", + "Id": "nehez_szamszerij", "Name": "Nehéz számszeríj", "Type": "lofegyver", "Ketkezes": true, diff --git a/src/domain-models/felszereles.ts b/src/domain-models/felszereles.ts index 94bb552..8053b00 100644 --- a/src/domain-models/felszereles.ts +++ b/src/domain-models/felszereles.ts @@ -7,7 +7,7 @@ export type PancelType = 'konnyu' | 'kozepes' | 'nehez' export const PancelTypes: PancelType[] = ['konnyu', 'kozepes', 'nehez'] export interface Pancel { - ID: string, + Id: string, Name: string, Type: PancelType VO: number, @@ -15,7 +15,7 @@ export interface Pancel { } export interface Pajzs { - ID: string, + Id: string, Name: string, Type: 'pajzs' VO: number, @@ -23,7 +23,7 @@ export interface Pajzs { } export interface Fegyver { - ID: string, + Id: string, Name: string, Type: 'kozelharci' | 'lofegyver' Ketkezes: boolean, @@ -69,7 +69,7 @@ export function GetPancel(id?: string): Pancel | undefined { if (id == null) { return undefined } - const filteredPancel = pancelok['pancel'].filter(p => p.ID === id) as Pancel[] + const filteredPancel = pancelok['pancel'].filter(p => p.Id === id) as Pancel[] return filteredPancel.length > 0 ? filteredPancel[0] : undefined } @@ -86,12 +86,12 @@ export function GetPajzs(id?: string): Pajzs | undefined { if (id == null) { return undefined } - const filtered = pajzsok['pajzs'].filter(p => p.ID === id) as Pajzs[] + const filtered = pajzsok['pajzs'].filter(p => p.Id === id) as Pajzs[] return filtered.length > 0 ? filtered[0] : undefined } export function GetFegyver(id: string): Fegyver | undefined { - return fegyverek.data.find(f => f.ID === id) as Fegyver | undefined + return fegyverek.data.find(f => f.Id === id) as Fegyver | undefined } export function GetFegyverek(ids: string[]): Fegyver[] { diff --git a/src/domain-models/osztaly.ts b/src/domain-models/osztaly.ts index 5e72c65..59fddbf 100644 --- a/src/domain-models/osztaly.ts +++ b/src/domain-models/osztaly.ts @@ -17,14 +17,14 @@ export enum Osztaly { export function OsztalyAllowedFegyver(o: Osztaly): Fegyver[] { const fegyverek = fegyverDB.data.map(x => x as Fegyver) const nemEgzotikus = fegyverek.filter(f => !f.Egzotikus) - const varazslo = fegyverek.filter(f => ['okol', 'bot', 'bunko', 'tor', 'parittya', 'dobotu'].includes(f.ID)) - const tolvaj = fegyverek.filter(f => ['okol', 'tor', 'parittya', 'rovid_ij', 'dobotu', 'konnyu_szamszerij', 'nehez_szamszerij', 'szablya', 'hosszu_kard', 'rovid_kard' ].includes(f.ID)) + const varazslo = fegyverek.filter(f => ['okol', 'bot', 'bunko', 'tor', 'parittya', 'dobotu'].includes(f.Id)) + const tolvaj = fegyverek.filter(f => ['okol', 'tor', 'parittya', 'rovid_ij', 'dobotu', 'konnyu_szamszerij', 'nehez_szamszerij', 'szablya', 'hosszu_kard', 'rovid_kard' ].includes(f.Id)) switch (o) { case Osztaly.Amazon: case Osztaly.Harcos: case Osztaly.Barbar: case Osztaly.Kaloz: return nemEgzotikus; - case Osztaly.Ijasz: return [...nemEgzotikus, fegyverDB.data.find(f => f.ID === 'visszacsapo_ij') as Fegyver] + case Osztaly.Ijasz: return [...nemEgzotikus, fegyverDB.data.find(f => f.Id === 'visszacsapo_ij') as Fegyver] // Note: Isteni fegyver barmi lehet istentol foggoen case Osztaly.Pap: return fegyverek; case Osztaly.Tolvaj: return tolvaj; @@ -210,7 +210,7 @@ export function OsztalySpecialSkills(osztaly: Osztaly) : Skill[] { { Id: 's_harcos_kaloz_kritikus', Name: 'Kritikus', - Description: 'Minden harmadik szinten kiválaszthatnak egy fegyvert, amivel könnyebben okoznak kritikus sebesülést, tehát pl. csatabárddal 20 helyett 19-20-on, hoszszúkarddal 19-20 helyett 18-20-on, szablyával 18-20 helyett 17-20-on, stb. Ez a képesség 9. szintig fegyverenként csak egyszer választható.' + Description: 'Minden harmadik szinten kiválaszthatnak egy fegyvert, amivel könnyebben okoznak kritikus sebesülést, tehát pl. csatabárddal 20 helyett 19-20-on, hosszúkarddal 19-20 helyett 18-20-on, szablyával 18-20 helyett 17-20-on, stb. Ez a képesség 9. szintig fegyverenként csak egyszer választható.' }] case Osztaly.Barbar: return [ { @@ -339,7 +339,7 @@ export function OsztalySkillsTordelt(osztaly: Osztaly) : Skill[] { Id: 's_harcos_kaloz_kritikus', Name: 'Kritikus', Description: 'Minden harmadik szinten kiválaszthatnak egy fegyvert, amivel könnyebben okoznak\n' + - 'kritikus sebesülést, tehát pl. csatabárddal 20 helyett 19-20-on, hoszszúkarddal 19-20\n' + + 'kritikus sebesülést, tehát pl. csatabárddal 20 helyett 19-20-on, hosszúkarddal 19-20\n' + 'helyett 18-20-on, szablyával 18-20 helyett 17-20-on, stb. Ez a képesség 9. szintig\n' + 'fegyverenként csak egyszer választható.' }] diff --git a/src/domain-models/pajzs.json b/src/domain-models/pajzs.json index bd4c55c..e88b86b 100644 --- a/src/domain-models/pajzs.json +++ b/src/domain-models/pajzs.json @@ -1,28 +1,28 @@ { "pajzs": [ { - "ID": "kis_fa", + "Id": "kis_fa", "Name": "Kis fapajzs ", "Type": "pajzs", "VO": 1, "Price": 3 }, { - "ID": "kis_fem", + "Id": "kis_fem", "Name": "Kis fémpajzs ", "Type": "pajzs", "VO": 1, "Price": 9 }, { - "ID": "nagy_fa", + "Id": "nagy_fa", "Name": "Nagy fapajzs ", "Type": "pajzs", "VO": 2, "Price": 7 }, { - "ID": "nagy_fem", + "Id": "nagy_fem", "Name": "Nagy fémpajzs ", "Type": "pajzs", "VO": 2, diff --git a/src/domain-models/pancel.json b/src/domain-models/pancel.json index a2dd36c..74ee553 100644 --- a/src/domain-models/pancel.json +++ b/src/domain-models/pancel.json @@ -1,84 +1,84 @@ { "pancel": [ { - "ID": "tomott", + "Id": "tomott", "Name": "Tömött páncél", "Type": "konnyu", "VO": 1, "Price": 4 }, { - "ID": "bor", + "Id": "bor", "Name": "Bőrvért", "Type": "konnyu", "VO": 2, "Price": 5 }, { - "ID": "kivert_bor", + "Id": "kivert_bor", "Name": "Kivert bőrvért", "Type": "konnyu", "VO": 3, "Price": 15 }, { - "ID": "gyuruvert", + "Id": "gyuruvert", "Name": "Gyűrűvért", "Type": "konnyu", "VO": 3, "Price": 20 }, { - "ID": "lancing", + "Id": "lancing", "Name": "Láncing", "Type": "konnyu", "VO": 4, "Price": 50 }, { - "ID": "pikkelyvert", + "Id": "pikkelyvert", "Name": "Pikkelyvért", "Type": "kozepes", "VO": 4, "Price": 30 }, { - "ID": "lancvert", + "Id": "lancvert", "Name": "Láncvért", "Type": "kozepes", "VO": 5, "Price": 75 }, { - "ID": "mellvert", + "Id": "mellvert", "Name": "Mellvért", "Type": "kozepes", "VO": 5, "Price": 100 }, { - "ID": "racsvert", + "Id": "racsvert", "Name": "Rácsvért", "Type": "nehez", "VO": 6, "Price": 200 }, { - "ID": "szalagvert", + "Id": "szalagvert", "Name": "Szalagvért", "Type": "nehez", "VO": 6, "Price": 250 }, { - "ID": "lemezvert", + "Id": "lemezvert", "Name": "Lemezvért", "Type": "nehez", "VO": 7, "Price": 400 }, { - "ID": "teljes_lemezvert", + "Id": "teljes_lemezvert", "Name": "Teljes lemezvért", "Type": "nehez", "VO": 8, diff --git a/src/pdf/karakter_pdf_view.ts b/src/pdf/karakter_pdf_view.ts index 21eb9cc..f933f07 100644 --- a/src/pdf/karakter_pdf_view.ts +++ b/src/pdf/karakter_pdf_view.ts @@ -71,7 +71,7 @@ export function KarakterInputToPdfView(karakter: KarakterInputs): KarakterPdfVie const VarazslatMentokNF = CalculateVarazslatMentokNF(karakter) const fegyverek = GetFegyverek(karakter.felszereles.fegyverIDk) - const felszereles = [ pancel?.Name, pajzs?.Name, ...fegyverek.filter(f => f.ID !== 'okol').map(f => f.Name.includes('és') ? f.Name.split(' ')[0] : f.Name) ].filter(x => !!x) as string[] + const felszereles = [ pancel?.Name, pajzs?.Name, ...fegyverek.filter(f => f.Id !== 'okol').map(f => f.Name.includes('és') ? f.Name.split(' ')[0] : f.Name) ].filter(x => !!x) as string[] return { Faj: FajLabel(karakter.faj),