WIP spell details

This commit is contained in:
2024-07-25 00:57:57 +02:00
parent 94c3e2cb38
commit ee4ccee0f6
4 changed files with 437 additions and 351 deletions
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,6 @@
import {Osztaly2E} from "./osztaly2E";
import spells from "../data/spells.json";
import spell_details from "../data/spell_details.json"
export interface Cantrip {
szint: 0,
@@ -93,4 +94,29 @@ export function ClassSpells(osztaly: Osztaly2E): Varazslat[] {
default:
return [];
}
}
}
export interface VarazslatOsztalySzint {
osztaly: Osztaly2E,
szint: number,
}
export interface SpellDetails {
id: string,
nev: string,
megfordithato: boolean,
kell_komponens: boolean,
extra_komponens: boolean,
variabilis: boolean,
osztaly_szint: VarazslatOsztalySzint[],
tavolsag: string,
hatoido: string,
terulet: string,
mentodobas: string,
leiras: string[],
tablazat: string[][],
}
export function GetSpellDetails(id: string): SpellDetails | undefined {
return spell_details.details.find(x => x.id === id) as SpellDetails | undefined
}
@@ -94,6 +94,36 @@ export async function CreatePDF(karakter: KarakterPdfView) {
form.getTextField(`specialis_kepessegek_${Math.floor(i/2)}`).setText(text)
}
if (karakter.Varazskonyv.length > 0) {
form.getTextField('varazskonyv_nev_faj_osztaly_szint').setText(`${karakter.Nev}, ${karakter.Faj} ${osztalyok}`)
}
for (let i = 0; i < karakter.Varazskonyv.length && i < 6; i++) {
const spell = karakter.Varazskonyv[i];
form.getTextField(`varazskonyv_page1_spell${i}_nev`).setText(spell.nev)
form.getTextField(`varazskonyv_page1_spell${i}_szint`).setText(spell.szint)
form.getTextField(`varazskonyv_page1_spell${i}_hatoido`).setText(spell.hatoido)
form.getTextField(`varazskonyv_page1_spell${i}_tav`).setText(spell.tav)
form.getTextField(`varazskonyv_page1_spell${i}_terulet`).setText(spell.terulet)
form.getTextField(`varazskonyv_page1_spell${i}_mento`).setText(spell.mento)
for (let j = 0; j < spell.leiras.length && j < 5; j++) {
form.getTextField(`varazskonyv_page1_spell${i}_leiras_${j}`).setText(spell.leiras[j])
}
}
for (let i = 0; (i+6) < karakter.Varazskonyv.length && i < 7; i++){
const spell = karakter.Varazskonyv[i+6];
form.getTextField(`varazskonyv_page2_spell${i}_nev`).setText(spell.nev)
form.getTextField(`varazskonyv_page2_spell${i}_szint`).setText(spell.szint)
form.getTextField(`varazskonyv_page2_spell${i}_hatoido`).setText(spell.hatoido)
form.getTextField(`varazskonyv_page2_spell${i}_tav`).setText(spell.tav)
form.getTextField(`varazskonyv_page2_spell${i}_terulet`).setText(spell.terulet)
form.getTextField(`varazskonyv_page2_spell${i}_mento`).setText(spell.mento)
for (let j = 0; j < spell.leiras.length && j < 5; j++) {
form.getTextField(`varazskonyv_page2_spell${i}_leiras_${j}`).setText(spell.leiras[j])
}
}
form.updateFieldAppearances(pdfFont)
const pdfBytes = await pdfDoc.save();
@@ -15,6 +15,7 @@ import {SignedNumberToText} from "../../shared/components/Helpers";
import {Kepzettseg, KepzettsegId, Kepzettsegek} from "../domain-models/kepzettsegek2E.data";
import {getClassLevels} from "../domain-models/szintlepes";
import {FegyverFlags} from "../domain-models/fegyver";
import {GetSpellDetails} from "../domain-models/varazslat";
interface KepzettsegPdfView {
nev: string,
@@ -23,6 +24,16 @@ interface KepzettsegPdfView {
osszes: string
}
interface VarazskonyvVarazslatPdfView {
nev: string,
szint?: string,
hatoido?: string,
tav?: string,
terulet?: string,
mento?: string,
leiras: string[],
}
export interface KarakterPdfView {
Nev: string
Isten: string
@@ -54,6 +65,7 @@ export interface KarakterPdfView {
el: number
at: number
SpecialisKepessegek: string[],
Varazskonyv: VarazskonyvVarazslatPdfView[],
}
export function KarakterInputToPdfView(karakter: Karakter2E): KarakterPdfView {
@@ -135,6 +147,23 @@ export function KarakterInputToPdfView(karakter: Karakter2E): KarakterPdfView {
const specialisKepessegek = osztalyok.flatMap(o => OsztalySpecialSkills(o).map(s => s.Name));
const varazskonyv : VarazskonyvVarazslatPdfView[] = karakter.varazslatok.map(x => {
const spell = GetSpellDetails(x.id);
if (spell == null) {
return null;
}
const szint = spell.osztaly_szint.find(y => y.osztaly === x.osztaly)?.szint ?? 999;
return {
nev: spell?.nev,
szint: szint.toString(),
leiras: spell?.leiras,
mento: spell?.mentodobas,
tav: spell?.tavolsag,
hatoido: spell?.hatoido,
terulet: spell?.terulet,
} as VarazskonyvVarazslatPdfView
}).filter(x => x != null)
return {
Faj: FajLabel(karakter.faj).toLowerCase(),
Isten: karakter.isten || "",
@@ -195,6 +224,7 @@ export function KarakterInputToPdfView(karakter: Karakter2E): KarakterPdfView {
el: karakter.felszereles.el,
at: karakter.felszereles.at,
SpecialisKepessegek: specialisKepessegek,
Varazskonyv: varazskonyv
}
}