Files
kem2karakterlap/renderVarazslatlap.ts
T
2024-02-21 17:13:43 +01:00

235 lines
6.2 KiB
TypeScript

import {PDFTextField} from "pdf-lib";
import {TextFieldOptions} from "./helpers";
function renderPreparedSpells(
addTextField: (options: TextFieldOptions) => PDFTextField,
prefix: string,
varazslatszint: number,
xOffset: number,
yOffset: number,
max: number,
hasBonusz?: boolean) {
addTextField({
name: `${prefix}_${varazslatszint}szintu_darab`,
x: 194 + xOffset,
y: 685 + yOffset,
w: 8,
h: 18,
})
addTextField({
name: `${prefix}_${varazslatszint}szintu_nf`,
x: 265 + xOffset,
y: 685 + yOffset,
w: 20,
h: 18,
})
for (let i = 0; i < max - 1; i++) {
addTextField({
name: `${prefix}_${varazslatszint}szintu_${i}`,
x: 58 + xOffset,
y: 665 + yOffset - (i * 19.85),
w: 233,
h: 18,
})
}
addTextField({
name: `${prefix}_${varazslatszint}szintu_${max - 1}`,
x: 65 + xOffset + (hasBonusz === true ? 30 : 0),
y: 665 + yOffset - ((max - 1) * 19.85),
w: 218 - (hasBonusz === true ? 30 : 0),
h: 18,
})
}
function renderEgyszeriVarazslat(
addTextField: (options: TextFieldOptions) => PDFTextField,
i: number,
last?: boolean,) {
const offset = 74;
addTextField({
name: `varazslatlap_full_egyszeri_${i}_nev`,
x: 58,
y: 259 - (i*offset),
w: 210,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_szint`,
x: 280,
y: 259 - (i*offset),
w: 12,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_hatoido`,
x: 298.5,
y: 259 - (i*offset),
w: 64,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_tav`,
x: 364.5,
y: 259 - (i*offset),
w: 23,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_terulet`,
x: 389.5,
y: 259 - (i*offset),
w: 92,
h: 18,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_mento`,
x: 484.5,
y: 259 - (i*offset),
w: 53,
h: 18,
})
const rounded = last === true
addTextField({
name: `varazslatlap_full_egyszeri_${i}_leiras_0`,
x: 58,
y: 240 - (i*offset),
w: 480,
h: 16,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_leiras_1`,
x: 58,
y: 240 - (i*offset) - 16,
w: 480,
h: 16,
})
addTextField({
name: `varazslatlap_full_egyszeri_${i}_leiras_2`,
x: 58 + (rounded ? 10 : 0),
y: 240 - (i*offset) - 32,
w: 480 - (rounded ? 20 : 0),
h: 16,
})
}
function renderEgyszeriVarazslatHalfCaster(
addTextField: (options: TextFieldOptions) => PDFTextField,
i: number,
last?: boolean,) {
const offset = 91;
addTextField({
name: `varazslatlap_half_egyszeri_${i}_nev`,
x: 58,
y: 401 - (i*offset),
w: 210,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_szint`,
x: 280,
y: 401 - (i*offset),
w: 12,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_hatoido`,
x: 298.5,
y: 401 - (i*offset),
w: 64,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_tav`,
x: 364.5,
y: 401 - (i*offset),
w: 23,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_terulet`,
x: 389.5,
y: 401 - (i*offset),
w: 92,
h: 18,
})
addTextField({
name: `varazslatlap_half_egyszeri_${i}_mento`,
x: 484.5,
y: 401 - (i*offset),
w: 53,
h: 18,
})
const rounded = last === true
for (let j = 0; j < 3; j++) {
addTextField({
name: `varazslatlap_half_egyszeri_${i}_leiras_${j}`,
x: 58,
y: 381 - (i*offset) - (16*j),
w: 480,
h: 16,
})
}
addTextField({
name: `varazslatlap_half_egyszeri_${i}_leiras_3`,
x: 58 + (rounded ? 10 : 0),
y: 381 - (i*offset) - 48,
w: 480 - (rounded ? 20 : 0),
h: 16,
})
}
export function renderFullCasterVarazslatlap(addTextField: (options: TextFieldOptions) => PDFTextField) {
addTextField({
name: 'varazslatlap_full_nev_faj_osztaly',
x: 56,
y: 731,
w: 420,
h: 16,
})
addTextField({
name: 'varazslatlap_full_szint',
x: 493,
y: 711,
w: 36,
h: 36,
})
renderPreparedSpells(addTextField, 'varazslatlap_full', 0, 0, 0, 7);
renderPreparedSpells(addTextField, 'varazslatlap_full',1, 247, -20, 6, true);
renderPreparedSpells(addTextField, 'varazslatlap_full',2, 0, -170, 5, true);
renderPreparedSpells(addTextField, 'varazslatlap_full',3, 247, -170, 5, true);
renderPreparedSpells(addTextField, 'varazslatlap_full',4, 0, -301, 3 );
renderPreparedSpells(addTextField, 'varazslatlap_full',5, 247, -301, 3 );
renderEgyszeriVarazslat(addTextField,0);
renderEgyszeriVarazslat(addTextField,1);
renderEgyszeriVarazslat(addTextField,2, true);
}
export function renderHalfCasterVarazslatlap(addTextField: (options: TextFieldOptions) => PDFTextField) {
addTextField({
name: 'varazslatlap_half_nev_faj_osztaly',
x: 56,
y: 731,
w: 420,
h: 16,
})
addTextField({
name: 'varazslatlap_half_szint',
x: 493,
y: 726,
w: 36,
h: 36,
})
renderPreparedSpells(addTextField, 'varazslatlap_half',0, 0, -3, 5);
renderPreparedSpells(addTextField, 'varazslatlap_half',1, 247, -3, 5);
renderPreparedSpells(addTextField, 'varazslatlap_half',2, 0, -133, 4);
renderPreparedSpells(addTextField, 'varazslatlap_half',3, 247, -133, 3);
renderEgyszeriVarazslatHalfCaster(addTextField,0);
renderEgyszeriVarazslatHalfCaster(addTextField,1);
renderEgyszeriVarazslatHalfCaster(addTextField,2);
renderEgyszeriVarazslatHalfCaster(addTextField,3, true);
}