mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-17 19:03:46 +00:00
!!!add felszerelesek BREAKING API!!!
This commit is contained in:
@@ -9,7 +9,7 @@ import {
|
|||||||
import {Osztaly2E} from '../domain-models/osztaly2E'
|
import {Osztaly2E} from '../domain-models/osztaly2E'
|
||||||
import {AllowedPajzsTypes, AllowedPancelTypes} from '../domain-models/allowed-pancel-types'
|
import {AllowedPajzsTypes, AllowedPancelTypes} from '../domain-models/allowed-pancel-types'
|
||||||
import {arraySetN} from "../../util";
|
import {arraySetN} from "../../util";
|
||||||
import {AllowedFegyverek} from "../domain-models/allowed-fegyver";
|
import {AllowedFegyverek, HarcosFegyverforgatok} from "../domain-models/allowed-fegyver";
|
||||||
import FegyverSelector from "../display-components/FegyverSelector";
|
import FegyverSelector from "../display-components/FegyverSelector";
|
||||||
import {useDispatch, useSelector} from "react-redux";
|
import {useDispatch, useSelector} from "react-redux";
|
||||||
import {AppDispatch, RootState} from "../../store";
|
import {AppDispatch, RootState} from "../../store";
|
||||||
@@ -25,6 +25,17 @@ export function Felszereles(){
|
|||||||
return <FelszerelesView felszereles={felszereles} changeFelszereles={changeFelszereles} osztalyok={osztalyok} />
|
return <FelszerelesView felszereles={felszereles} changeFelszereles={changeFelszereles} osztalyok={osztalyok} />
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ItemMaxCount(targy?: FelszerelesDto): number {
|
||||||
|
const targySize = targy?.size ?? 1
|
||||||
|
return (targySize < 1 && targySize > 0) ? Math.round(1/targy!.size) : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Make all items use the same `size`. Lowercase data fields!
|
||||||
|
function FegyverMaxCount(fegyver?: Fegyver): number {
|
||||||
|
const fegyverSize = fegyver?.Size ?? 1
|
||||||
|
return (fegyverSize < 1 && fegyverSize > 0) ? Math.round(1/fegyver!.Size) : 1;
|
||||||
|
}
|
||||||
|
|
||||||
export function FelszerelesView(props: {felszereles: KarakterFelszereles, changeFelszereles: (felszereles: KarakterFelszereles) => void, osztalyok: Osztaly2E[]}) {
|
export function FelszerelesView(props: {felszereles: KarakterFelszereles, changeFelszereles: (felszereles: KarakterFelszereles) => void, osztalyok: Osztaly2E[]}) {
|
||||||
const {felszereles, changeFelszereles, osztalyok} = props;
|
const {felszereles, changeFelszereles, osztalyok} = props;
|
||||||
const viseltSize = ViseltSize(felszereles)
|
const viseltSize = ViseltSize(felszereles)
|
||||||
@@ -32,34 +43,36 @@ export function FelszerelesView(props: {felszereles: KarakterFelszereles, change
|
|||||||
.filter(x => felszereles.pancelID === x.Id || x.Size + viseltSize - (GetPancel(felszereles.pancelID)?.Size ?? 0) <= 8)
|
.filter(x => felszereles.pancelID === x.Id || x.Size + viseltSize - (GetPancel(felszereles.pancelID)?.Size ?? 0) <= 8)
|
||||||
const allowedPajzs = AllowedPajzsTypes(osztalyok)
|
const allowedPajzs = AllowedPajzsTypes(osztalyok)
|
||||||
.filter(x => felszereles.pajzsID === x.Id || x.Size + viseltSize - (GetPajzs(felszereles.pajzsID)?.Size ?? 0) <= 8)
|
.filter(x => felszereles.pajzsID === x.Id || x.Size + viseltSize - (GetPajzs(felszereles.pajzsID)?.Size ?? 0) <= 8)
|
||||||
const valasztottFegyverek = felszereles.fegyverIDk
|
const valasztottFegyverek = felszereles.fegyverek
|
||||||
.map((id, idx) => ({
|
.map(({id, count}, idx) => {
|
||||||
idx,
|
const fegyver = GetFegyver(id)
|
||||||
fegyver: GetFegyver(id),
|
const max = FegyverMaxCount(fegyver)
|
||||||
})).filter((x) => x.fegyver != null).map(({idx, fegyver}) => ({idx, fegyver: fegyver as Fegyver}));
|
return {
|
||||||
|
idx,
|
||||||
|
fegyver: GetFegyver(id),
|
||||||
|
count,
|
||||||
|
max
|
||||||
|
};
|
||||||
|
}).filter((x) => x.fegyver != null).map(x => ({...x, fegyver: x.fegyver as Fegyver}));
|
||||||
|
|
||||||
|
const viseltFelszereles= felszereles.viselt.map(({id, count}, idx) => {
|
||||||
|
const targy = GetFelszereles(id)
|
||||||
|
const max = ItemMaxCount(targy)
|
||||||
|
return {
|
||||||
|
idx,
|
||||||
|
targy,
|
||||||
|
count,
|
||||||
|
max,
|
||||||
|
};
|
||||||
|
}).filter(x => x.targy != null);
|
||||||
|
|
||||||
const viseltFelszereles= felszereles.viseltFelszerelesIDk.map((id, idx) => ({
|
|
||||||
idx,
|
|
||||||
targy: GetFelszereles(id),
|
|
||||||
})).filter(x => x.targy != null);
|
|
||||||
const aprosagFelszereles= felszereles.aprosagFelszerelesIDk.map((id, idx) => ({
|
|
||||||
idx,
|
|
||||||
targy: GetFelszereles(id),
|
|
||||||
})).filter(x => x.targy != null);
|
|
||||||
|
|
||||||
const osztalyAllowedFegyverek = AllowedFegyverek(osztalyok)
|
const osztalyAllowedFegyverek = AllowedFegyverek(osztalyok)
|
||||||
const allowedFegyverek = (selected?: Fegyver) => ([
|
const allowedFegyverek = (selected?: Fegyver) => ([
|
||||||
...osztalyAllowedFegyverek.filter(x => x.Size + viseltSize - (selected?.Size ?? 0) <= 8),
|
...osztalyAllowedFegyverek.filter(x => x.Size + viseltSize - (selected?.Size ?? 1 > 1 ? selected!.Size : 1) <= 8),
|
||||||
...valasztottFegyverek.filter(({idx,fegyver}) => !osztalyAllowedFegyverek.map(f => f.Id).includes(fegyver.Id))
|
...valasztottFegyverek.filter(({idx,fegyver}) => !osztalyAllowedFegyverek.map(f => f.Id).includes(fegyver.Id))
|
||||||
.map(({fegyver}) => fegyver)])
|
.map(({fegyver}) => fegyver)])
|
||||||
const changeFegyver = (idx: number, newID: string) => {
|
|
||||||
const found = GetFegyver(newID)
|
|
||||||
if (!found) {
|
|
||||||
console.log('Nem létező fegyver ID: ', newID)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
changeFelszereles({...felszereles, fegyverIDk: arraySetN(felszereles.fegyverIDk, idx, newID)})
|
|
||||||
}
|
|
||||||
|
|
||||||
const changePancel = (event: React.ChangeEvent<HTMLSelectElement>) => {
|
const changePancel = (event: React.ChangeEvent<HTMLSelectElement>) => {
|
||||||
changeFelszereles({...felszereles, pancelID: event.target.value === 'nincs' ? undefined : event.target.value})
|
changeFelszereles({...felszereles, pancelID: event.target.value === 'nincs' ? undefined : event.target.value})
|
||||||
@@ -67,17 +80,58 @@ export function FelszerelesView(props: {felszereles: KarakterFelszereles, change
|
|||||||
const changePajzs = (event: React.ChangeEvent<HTMLSelectElement>) => {
|
const changePajzs = (event: React.ChangeEvent<HTMLSelectElement>) => {
|
||||||
changeFelszereles({...felszereles, pajzsID: event.target.value === 'nincs' ? undefined : event.target.value})
|
changeFelszereles({...felszereles, pajzsID: event.target.value === 'nincs' ? undefined : event.target.value})
|
||||||
}
|
}
|
||||||
|
const addFegyver = () => {
|
||||||
|
const newFegyver = osztalyok.some(o => HarcosFegyverforgatok.has(o)) ? 'okol_harcos' : 'okol'
|
||||||
|
changeFelszereles({...felszereles, fegyverek: [...felszereles.fegyverek, {id: newFegyver, count: 1}]});
|
||||||
|
}
|
||||||
|
const changeFegyver = (idx: number, newID: string) => {
|
||||||
|
const found = GetFegyver(newID)
|
||||||
|
if (!found) {
|
||||||
|
console.log('Nem létező fegyver ID: ', newID)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
changeFelszereles({...felszereles, fegyverek: arraySetN(felszereles.fegyverek, idx, {id: newID, count: 1})})
|
||||||
|
}
|
||||||
|
const increaseFegyverCount = (idx: number) => () => {
|
||||||
|
const old = felszereles.fegyverek[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.fegyverek)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(old.count >= FegyverMaxCount(GetFegyver(old.id))){
|
||||||
|
console.error("Can't increase item count more than max!", old)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
changeFelszereles({...felszereles, fegyverek: arraySetN(felszereles.fegyverek, idx, {...old, count: old.count + 1})})
|
||||||
|
}
|
||||||
|
const decreaseFegyverCount = (idx: number) => () => {
|
||||||
|
const old = felszereles.fegyverek[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.fegyverek)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(old.count === 1){
|
||||||
|
changeFelszereles({
|
||||||
|
...felszereles,
|
||||||
|
fegyverek: [...felszereles.fegyverek.slice(0, idx), ...felszereles.viselt.slice(idx + 1)]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
changeFelszereles({...felszereles, fegyverek: arraySetN(felszereles.fegyverek, idx, {...old, count: old.count - 1})})
|
||||||
|
}
|
||||||
|
}
|
||||||
const removeFegyver = (idx: number) => () => changeFelszereles({
|
const removeFegyver = (idx: number) => () => changeFelszereles({
|
||||||
...felszereles,
|
...felszereles,
|
||||||
fegyverIDk: [...felszereles.fegyverIDk.slice(0, idx), ...felszereles.fegyverIDk.slice(idx + 1)]
|
fegyverek: [...felszereles.fegyverek.slice(0, idx), ...felszereles.fegyverek.slice(idx + 1)]
|
||||||
})
|
})
|
||||||
const addFegyver = () => changeFelszereles({...felszereles, fegyverIDk: [...felszereles.fegyverIDk, 'okol']})
|
|
||||||
|
|
||||||
const allowedViselt = (selected?: FelszerelesDto) => AllFelszereles.filter(x =>
|
const allowedViselt = (selected?: FelszerelesDto) => AllFelszereles.filter(x => {
|
||||||
(x.size > 0 && viseltSize + x.size - (selected?.size ?? 0) <= 8))
|
const selectedSize = (selected?.size ?? 1) > 1 ? selected!.size : 1
|
||||||
const addViseltFelszereles = () => changeFelszereles({
|
return (x.size > 0 && (viseltSize + x.size - selectedSize) <= 8);
|
||||||
|
})
|
||||||
|
const addViselt = () => changeFelszereles({
|
||||||
...felszereles,
|
...felszereles,
|
||||||
viseltFelszerelesIDk: [...felszereles.viseltFelszerelesIDk, 'szog']
|
viselt: [...felszereles.viselt, {id: 'szog', count: 1}]
|
||||||
})
|
})
|
||||||
const changeViselt = (idx: number) => (newID: string) => {
|
const changeViselt = (idx: number) => (newID: string) => {
|
||||||
const found = GetFelszereles(newID)
|
const found = GetFelszereles(newID)
|
||||||
@@ -85,39 +139,113 @@ export function FelszerelesView(props: {felszereles: KarakterFelszereles, change
|
|||||||
console.log('Nem létező tárgy ID: ', newID)
|
console.log('Nem létező tárgy ID: ', newID)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
changeFelszereles({...felszereles, viseltFelszerelesIDk: arraySetN(felszereles.viseltFelszerelesIDk, idx, newID)})
|
const old = felszereles.viselt[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.viselt)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const item = {id: newID, count: 1}
|
||||||
|
changeFelszereles({...felszereles, viselt: arraySetN(felszereles.viselt, idx, item)})
|
||||||
}
|
}
|
||||||
const removeViseltFelszereles = (idx: number) => () => changeFelszereles({
|
const increaseViseltCount = (idx: number) => () => {
|
||||||
|
const old = felszereles.viselt[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.viselt)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(old.count >= ItemMaxCount(GetFelszereles(old.id))){
|
||||||
|
console.error("Can't increase item count more than max!", old)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
changeFelszereles({...felszereles, viselt: arraySetN(felszereles.viselt, idx, {...old, count: old.count + 1})})
|
||||||
|
}
|
||||||
|
const decreaseViseltCount = (idx: number) => () => {
|
||||||
|
const old = felszereles.viselt[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.viselt)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(old.count === 1){
|
||||||
|
changeFelszereles({
|
||||||
|
...felszereles,
|
||||||
|
viselt: [...felszereles.viselt.slice(0, idx), ...felszereles.viselt.slice(idx + 1)]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
changeFelszereles({...felszereles, viselt: arraySetN(felszereles.viselt, idx, {...old, count: old.count - 1})})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const removeViselt = (idx: number) => () => changeFelszereles({
|
||||||
...felszereles,
|
...felszereles,
|
||||||
viseltFelszerelesIDk: [...felszereles.viseltFelszerelesIDk.slice(0, idx), ...felszereles.viseltFelszerelesIDk.slice(idx + 1)]
|
viselt: [...felszereles.viselt.slice(0, idx), ...felszereles.viselt.slice(idx + 1)]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const aprosagFelszereles= felszereles.aprosagok.map(({id, count}, idx) => ({
|
||||||
|
idx,
|
||||||
|
targy: GetFelszereles(id),
|
||||||
|
count,
|
||||||
|
})).filter(x => x.targy != null);
|
||||||
const addAprosag = () => changeFelszereles({
|
const addAprosag = () => changeFelszereles({
|
||||||
...felszereles,
|
...felszereles,
|
||||||
aprosagFelszerelesIDk: [...felszereles.aprosagFelszerelesIDk, 'tarsoly']
|
aprosagok: [...felszereles.aprosagok, {id: 'tarsoly', count: 1}]
|
||||||
})
|
})
|
||||||
const changeAprosag = (idx: number) => (newID: string) => {
|
const changeAprosag = (idx: number) => (newID: string) => {
|
||||||
const found = GetFelszereles(newID)
|
const found = GetFelszereles(newID)
|
||||||
if (!found) {
|
if (!found) {
|
||||||
console.log('Nem létező tárgy ID: ', newID)
|
console.error('Nem létező tárgy ID: ', newID)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
changeFelszereles({...felszereles, aprosagFelszerelesIDk: arraySetN(felszereles.aprosagFelszerelesIDk, idx, newID)})
|
const old = felszereles.aprosagok[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.aprosagok)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
changeFelszereles({...felszereles, aprosagok: arraySetN(felszereles.aprosagok, idx, {...old, id: newID})})
|
||||||
|
}
|
||||||
|
const increaseAprosagCount = (idx: number) => () => {
|
||||||
|
const old = felszereles.aprosagok[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.aprosagok)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
changeFelszereles({...felszereles, aprosagok: arraySetN(felszereles.aprosagok, idx, {...old, count: old.count + 1})})
|
||||||
|
}
|
||||||
|
const decreaseAprosagCount = (idx: number) => () => {
|
||||||
|
const old = felszereles.aprosagok[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.aprosagok)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(old.count === 1){
|
||||||
|
changeFelszereles({
|
||||||
|
...felszereles,
|
||||||
|
aprosagok: [...felszereles.aprosagok.slice(0, idx), ...felszereles.aprosagok.slice(idx + 1)]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
changeFelszereles({...felszereles, aprosagok: arraySetN(felszereles.aprosagok, idx, {...old, count: old.count - 1})})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const removeAprosag = (idx: number) => () => changeFelszereles({
|
|
||||||
...felszereles,
|
|
||||||
aprosagFelszerelesIDk: [...felszereles.aprosagFelszerelesIDk.slice(0, idx), ...felszereles.aprosagFelszerelesIDk.slice(idx + 1)]
|
|
||||||
})
|
|
||||||
|
|
||||||
const cipeltCapacity = viseltFelszereles.reduce((acc, item) => acc + (item.targy?.type === 'container' ? item.targy.capacity : 0), 0)
|
const cipeltCapacity = viseltFelszereles.reduce((acc, item) => acc + (item.targy?.type === 'container' ? item.targy.capacity : 0), 0)
|
||||||
const addCipelt = () => changeFelszereles({
|
const addCipelt = () => changeFelszereles({
|
||||||
...felszereles,
|
...felszereles,
|
||||||
cipeltFelszerelesIDk: [...felszereles.cipeltFelszerelesIDk, 'szog']
|
cipelt: [...felszereles.cipelt, {id: 'szog', count: 1}]
|
||||||
})
|
})
|
||||||
const cipeltFelszereles= felszereles.cipeltFelszerelesIDk.map((id, idx) => ({
|
const cipeltFelszereles= felszereles.cipelt.map(({id, count}, idx) => {
|
||||||
idx,
|
const targy = GetFelszereles(id)
|
||||||
targy: GetFelszereles(id),
|
const max = ItemMaxCount(targy)
|
||||||
})).filter(x => x.targy != null);
|
return ({
|
||||||
|
idx,
|
||||||
|
targy,
|
||||||
|
count,
|
||||||
|
max
|
||||||
|
});
|
||||||
|
}).filter(x => x.targy != null);
|
||||||
|
const cipeltSize = cipeltFelszereles.reduce((acc, item) => acc + Math.ceil(item.targy?.size ?? 1), 0)
|
||||||
|
|
||||||
|
const allowedCipelt = (selected?: FelszerelesDto) => AllFelszereles.filter(x => x.size > 0
|
||||||
|
&& Math.ceil(x.size) + cipeltSize - Math.ceil(selected?.size ?? 0) <= cipeltCapacity)
|
||||||
|
|
||||||
const changeCipelt = (idx: number) => (newID: string) => {
|
const changeCipelt = (idx: number) => (newID: string) => {
|
||||||
const found = GetFelszereles(newID)
|
const found = GetFelszereles(newID)
|
||||||
@@ -125,18 +253,52 @@ export function FelszerelesView(props: {felszereles: KarakterFelszereles, change
|
|||||||
console.log('Nem létező tárgy ID: ', newID)
|
console.log('Nem létező tárgy ID: ', newID)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
changeFelszereles({...felszereles, cipeltFelszerelesIDk: arraySetN(felszereles.cipeltFelszerelesIDk, idx, newID)})
|
const old = felszereles.cipelt[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.cipelt)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const newItem = {id: newID, count: 1}
|
||||||
|
changeFelszereles({...felszereles, cipelt: arraySetN(felszereles.cipelt, idx, newItem)})
|
||||||
|
}
|
||||||
|
const increaseCipeltCount = (idx: number) => () => {
|
||||||
|
const old = felszereles.cipelt[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.cipelt)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(old.count >= ItemMaxCount(GetFelszereles(old.id))){
|
||||||
|
console.error("Can't increase item count more than max!", old)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
changeFelszereles({...felszereles, cipelt: arraySetN(felszereles.cipelt, idx, {...old, count: old.count + 1})})
|
||||||
|
}
|
||||||
|
const decreaseCipeltCount = (idx: number) => () => {
|
||||||
|
const old = felszereles.cipelt[idx]
|
||||||
|
if (old == null) {
|
||||||
|
console.error('Index out of range! index: {0}, array: {1}', idx, felszereles.cipelt)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(old.count === 1){
|
||||||
|
changeFelszereles({
|
||||||
|
...felszereles,
|
||||||
|
cipelt: [...felszereles.cipelt.slice(0, idx), ...felszereles.cipelt.slice(idx + 1)]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
changeFelszereles({...felszereles, cipelt: arraySetN(felszereles.cipelt, idx, {...old, count: old.count - 1})})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const removeCipelt = (idx: number) => () => changeFelszereles({
|
const removeCipelt = (idx: number) => () => changeFelszereles({
|
||||||
...felszereles,
|
...felszereles,
|
||||||
cipeltFelszerelesIDk: [...felszereles.cipeltFelszerelesIDk.slice(0, idx), ...felszereles.cipeltFelszerelesIDk.slice(idx + 1)]
|
cipelt: [...felszereles.cipelt.slice(0, idx), ...felszereles.cipelt.slice(idx + 1)]
|
||||||
})
|
})
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
<h5 className='col align-self-center'>Felszerelés</h5>
|
<h5 className='col align-self-center'>Felszerelés</h5>
|
||||||
</div>
|
</div>
|
||||||
<div className='row mt-2'>
|
<div className='row mt-4'>
|
||||||
<h6 className='col align-self-center'>Harci felszerelés</h6>
|
<h6 className='col align-self-center'>Harci felszerelés</h6>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
@@ -179,7 +341,7 @@ export function FelszerelesView(props: {felszereles: KarakterFelszereles, change
|
|||||||
value={p.Id}>{`${p.Name} (+${p.VO} VO) - ${p.Price} at`}</option>)}
|
value={p.Id}>{`${p.Name} (+${p.VO} VO) - ${p.Price} at`}</option>)}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
{valasztottFegyverek.map(({idx, fegyver}) => (
|
{valasztottFegyverek.map(({idx, fegyver, count, max}) => (
|
||||||
<div key={`fegyver-${idx}`} className='row m-2'>
|
<div key={`fegyver-${idx}`} className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Fegyver</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Fegyver</label>
|
||||||
<FegyverSelector
|
<FegyverSelector
|
||||||
@@ -188,25 +350,51 @@ export function FelszerelesView(props: {felszereles: KarakterFelszereles, change
|
|||||||
onChange={(fegyverId) => changeFegyver(idx, fegyverId)}
|
onChange={(fegyverId) => changeFegyver(idx, fegyverId)}
|
||||||
dataTestId={`felszereles-fegyver-${idx}`}
|
dataTestId={`felszereles-fegyver-${idx}`}
|
||||||
/>
|
/>
|
||||||
<button
|
{(count > 1 || max > 1) &&
|
||||||
className='col-md-2 col-sm-3 btn btn-outline-dark btn-lg ms-2'
|
<div className="col-lg-2 col-md-3 col-sm-4">
|
||||||
type='button'
|
<div className="row">
|
||||||
onClick={removeFegyver(idx)}>Elvesz
|
<div className="w-25 ps-2">
|
||||||
</button>
|
<button
|
||||||
|
className='btn btn-outline-dark'
|
||||||
|
type='button'
|
||||||
|
onClick={decreaseFegyverCount(idx)}
|
||||||
|
>
|
||||||
|
−
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<span className="w-50 align-content-center text-center">{' '}{count}{' db '}</span>
|
||||||
|
<div className="w-25 ps-2 ">
|
||||||
|
<button
|
||||||
|
className='btn btn-outline-dark float-end'
|
||||||
|
type='button'
|
||||||
|
disabled={count >= max}
|
||||||
|
onClick={increaseFegyverCount(idx)}
|
||||||
|
>
|
||||||
|
+
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>}
|
||||||
|
{max <= 1 && <div className="col-lg-2 col-md-3 col-sm-4">
|
||||||
|
<button
|
||||||
|
className='btn btn-outline-dark w-100'
|
||||||
|
type='button'
|
||||||
|
onClick={removeFegyver(idx)}>Elvesz
|
||||||
|
</button>
|
||||||
|
</div>}
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
{viseltSize < 8 && (<button
|
{viseltSize < 8 && (<button
|
||||||
className='btn btn-outline-dark btn btn-lg ms-2'
|
className='btn btn-outline-dark btn ms-2'
|
||||||
type='button'
|
type='button'
|
||||||
onClick={addFegyver}
|
onClick={addFegyver}
|
||||||
>
|
>
|
||||||
Fegyver hozzáadása
|
Fegyver hozzáadása
|
||||||
</button>)}
|
</button>)}
|
||||||
<hr/>
|
<div className='row mt-4'>
|
||||||
<div className='row mt-2'>
|
|
||||||
<h6 className='col align-self-center'>Viselt felszerelés</h6>
|
<h6 className='col align-self-center'>Viselt felszerelés</h6>
|
||||||
</div>
|
</div>
|
||||||
{viseltFelszereles.map(({idx, targy}) => (
|
{viseltFelszereles.map(({idx, targy, count, max}) => (
|
||||||
<div key={`felszereles-viselt-${idx}`} className='row m-2'>
|
<div key={`felszereles-viselt-${idx}`} className='row m-2'>
|
||||||
<FelszerlesSelector
|
<FelszerlesSelector
|
||||||
felszerelesek={allowedViselt(targy)}
|
felszerelesek={allowedViselt(targy)}
|
||||||
@@ -214,51 +402,104 @@ export function FelszerelesView(props: {felszereles: KarakterFelszereles, change
|
|||||||
selectedId={targy!.id}
|
selectedId={targy!.id}
|
||||||
dataTestId={`felszereles-viselt-selector-${idx}`}
|
dataTestId={`felszereles-viselt-selector-${idx}`}
|
||||||
/>
|
/>
|
||||||
<button
|
{(count > 1 || max > 1) &&
|
||||||
className='col-md-2 col-sm-3 btn btn-outline-dark btn-lg ms-2'
|
<div className="col-lg-2 col-md-3 col-sm-4">
|
||||||
type='button'
|
<div className="row">
|
||||||
onClick={removeViseltFelszereles(idx)}>Elvesz
|
<div className="w-25 ps-2">
|
||||||
</button>
|
<button
|
||||||
|
className='btn btn-outline-dark'
|
||||||
|
type='button'
|
||||||
|
onClick={decreaseViseltCount(idx)}
|
||||||
|
>
|
||||||
|
−
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<span className="w-50 align-content-center text-center">{' '}{count}{' db '}</span>
|
||||||
|
<div className="w-25 ps-2 ">
|
||||||
|
<button
|
||||||
|
className='btn btn-outline-dark float-end'
|
||||||
|
type='button'
|
||||||
|
disabled={count >= max}
|
||||||
|
onClick={increaseViseltCount(idx)}
|
||||||
|
>
|
||||||
|
+
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>}
|
||||||
|
{max <= 1 && <div className="col-lg-2 col-md-3 col-sm-4">
|
||||||
|
<button
|
||||||
|
className='btn btn-outline-dark w-100'
|
||||||
|
type='button'
|
||||||
|
onClick={removeViselt(idx)}>Elvesz
|
||||||
|
</button>
|
||||||
|
</div>}
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
{viseltSize < 8 && (<button
|
{viseltSize < 8 && (<button
|
||||||
className='btn btn-outline-dark btn btn-lg ms-2'
|
className='btn btn-outline-dark btn ms-2'
|
||||||
type='button'
|
type='button'
|
||||||
onClick={addViseltFelszereles}
|
onClick={addViselt}
|
||||||
>
|
>
|
||||||
Felszerelés hozzáadása
|
Viselt felszerelés hozzáadása
|
||||||
</button>)}
|
</button>)}
|
||||||
{cipeltCapacity > 0 && <><hr/>
|
{cipeltCapacity > 0 && <>
|
||||||
<div className='row mt-2'>
|
<div className='row mt-4'>
|
||||||
<h6 className='col align-self-center'>Cipelt felszerelés</h6>
|
<h6 className='col align-self-center'>Cipelt felszerelés</h6>
|
||||||
</div>
|
|
||||||
{cipeltFelszereles.map(({idx, targy}) => (
|
|
||||||
<div key={`felszereles-viselt-${idx}`} className='row m-2'>
|
|
||||||
<FelszerlesSelector
|
|
||||||
felszerelesek={AllFelszereles.filter(x => x.size > 0)}
|
|
||||||
onChange={changeCipelt(idx)}
|
|
||||||
selectedId={targy!.id}
|
|
||||||
dataTestId={`felszereles-viselt-selector-${idx}`}
|
|
||||||
/>
|
|
||||||
<button
|
|
||||||
className='col-md-2 col-sm-3 btn btn-outline-dark btn-lg ms-2'
|
|
||||||
type='button'
|
|
||||||
onClick={removeCipelt(idx)}>Elvesz
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
{cipeltFelszereles.map(({idx, targy, count, max}) => (
|
||||||
|
<div key={`felszereles-viselt-${idx}`} className='row m-2'>
|
||||||
|
<FelszerlesSelector
|
||||||
|
felszerelesek={allowedCipelt(targy)}
|
||||||
|
onChange={changeCipelt(idx)}
|
||||||
|
selectedId={targy!.id}
|
||||||
|
dataTestId={`felszereles-viselt-selector-${idx}`}
|
||||||
|
/>
|
||||||
|
{(count > 1 || max > 1) &&
|
||||||
|
<div className="col-lg-2 col-md-3 col-sm-4">
|
||||||
|
<div className="row">
|
||||||
|
<div className="w-25 ps-2">
|
||||||
|
<button
|
||||||
|
className='btn btn-outline-dark'
|
||||||
|
type='button'
|
||||||
|
onClick={decreaseCipeltCount(idx)}
|
||||||
|
>
|
||||||
|
−
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<span className="w-50 align-content-center text-center">{' '}{count}{' db '}</span>
|
||||||
|
<div className="w-25 ps-2 ">
|
||||||
|
<button
|
||||||
|
className='btn btn-outline-dark float-end'
|
||||||
|
type='button'
|
||||||
|
disabled={count >= max}
|
||||||
|
onClick={increaseCipeltCount(idx)}
|
||||||
|
>
|
||||||
|
+
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>}
|
||||||
|
{max <= 1 && <div className="col-lg-2 col-md-3 col-sm-4">
|
||||||
|
<button
|
||||||
|
className='btn btn-outline-dark w-100'
|
||||||
|
type='button'
|
||||||
|
onClick={removeCipelt(idx)}>Elvesz
|
||||||
|
</button>
|
||||||
|
</div>}
|
||||||
|
</div>
|
||||||
))}
|
))}
|
||||||
{felszereles.cipeltFelszerelesIDk.length < cipeltCapacity && (<button
|
{cipeltSize < cipeltCapacity && (<button
|
||||||
className='btn btn-outline-dark btn btn-lg ms-2'
|
className='btn btn-outline-dark btn ms-2'
|
||||||
type='button'
|
type='button'
|
||||||
onClick={addCipelt}
|
onClick={addCipelt}
|
||||||
>
|
>
|
||||||
Cipelt felszerelés hozzáadása
|
Cipelt felszerelés hozzáadása
|
||||||
</button>)}</>}
|
</button>)}</>}
|
||||||
<hr/>
|
<div className='row mt-4'>
|
||||||
<div className='row mt-2'>
|
|
||||||
<h6 className='col align-self-center'>Apróságok</h6>
|
<h6 className='col align-self-center'>Apróságok</h6>
|
||||||
</div>
|
</div>
|
||||||
{aprosagFelszereles.map(({idx, targy}) => (
|
{aprosagFelszereles.map(({idx, targy, count}) => (
|
||||||
<div key={`felszereles-viselt-${idx}`} className='row m-2'>
|
<div key={`felszereles-viselt-${idx}`} className='row m-2'>
|
||||||
<FelszerlesSelector
|
<FelszerlesSelector
|
||||||
felszerelesek={AllFelszereles.filter(x => x.size === 0)}
|
felszerelesek={AllFelszereles.filter(x => x.size === 0)}
|
||||||
@@ -266,15 +507,33 @@ export function FelszerelesView(props: {felszereles: KarakterFelszereles, change
|
|||||||
selectedId={targy!.id}
|
selectedId={targy!.id}
|
||||||
dataTestId={`felszereles-viselt-selector-${idx}`}
|
dataTestId={`felszereles-viselt-selector-${idx}`}
|
||||||
/>
|
/>
|
||||||
<button
|
<div className="col-lg-2 col-md-3 col-sm-4">
|
||||||
className='col-md-2 col-sm-3 btn btn-outline-dark btn-lg ms-2'
|
<div className="row">
|
||||||
type='button'
|
<div className="w-25 ps-2">
|
||||||
onClick={removeAprosag(idx)}>Elvesz
|
<button
|
||||||
</button>
|
className='btn btn-outline-dark'
|
||||||
|
type='button'
|
||||||
|
onClick={decreaseAprosagCount(idx)}
|
||||||
|
>
|
||||||
|
−
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<span className="w-50 align-content-center text-center">{' '}{count}{' db '}</span>
|
||||||
|
<div className="w-25 ps-2 ">
|
||||||
|
<button
|
||||||
|
className='btn btn-outline-dark float-end'
|
||||||
|
type='button'
|
||||||
|
onClick={increaseAprosagCount(idx)}
|
||||||
|
>
|
||||||
|
+
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
{felszereles.aprosagFelszerelesIDk.length < 8 && (<button
|
{felszereles.aprosagok.length < 8 && (<button
|
||||||
className='btn btn-outline-dark btn btn-lg ms-2'
|
className='btn btn-outline-dark btn ms-2'
|
||||||
type='button'
|
type='button'
|
||||||
onClick={addAprosag}
|
onClick={addAprosag}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -206,14 +206,14 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "kotel_kender",
|
"id": "kotel_kender",
|
||||||
"nev": "Kötés, kender, 50'",
|
"nev": "Kötél, kender, 50'",
|
||||||
"size": 1,
|
"size": 1,
|
||||||
"price": 1,
|
"price": 1,
|
||||||
"type": "items"
|
"type": "items"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "kotel_selyem",
|
"id": "kotel_selyem",
|
||||||
"nev": "Kötés, selyem, 50'",
|
"nev": "Kötél, selyem, 50'",
|
||||||
"size": 0,
|
"size": 0,
|
||||||
"price": 10,
|
"price": 10,
|
||||||
"type": "items"
|
"type": "items"
|
||||||
|
|||||||
@@ -2,7 +2,13 @@ import {Fegyver} from "./felszereles";
|
|||||||
import fegyverDB from "../data/fegyver.json";
|
import fegyverDB from "../data/fegyver.json";
|
||||||
import {Osztaly2E} from "./osztaly2E";
|
import {Osztaly2E} from "./osztaly2E";
|
||||||
|
|
||||||
|
export const HarcosFegyverforgatok: Set<Osztaly2E> = new Set([Osztaly2E.Harcos, Osztaly2E.Amazon, Osztaly2E.Barbar, Osztaly2E.Ijasz, Osztaly2E.Tengeresz, Osztaly2E.Vandor])
|
||||||
|
|
||||||
export function AllowedFegyverek(osztalyok: Osztaly2E[]): Fegyver[] {
|
export function AllowedFegyverek(osztalyok: Osztaly2E[]): Fegyver[] {
|
||||||
|
if(osztalyok.some(o => HarcosFegyverforgatok.has(o))){
|
||||||
|
return AllowedFegyver(Osztaly2E.Harcos)
|
||||||
|
}
|
||||||
|
|
||||||
return [...new Set(osztalyok.flatMap(AllowedFegyver))]
|
return [...new Set(osztalyok.flatMap(AllowedFegyver))]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -89,20 +89,25 @@ export const AllFelszereles : FelszerelesDto[] = [
|
|||||||
...(felszereles.specialis as FelszerelesItem[])
|
...(felszereles.specialis as FelszerelesItem[])
|
||||||
]
|
]
|
||||||
|
|
||||||
|
export interface IdAndCount {
|
||||||
|
id: string
|
||||||
|
count: number
|
||||||
|
}
|
||||||
|
|
||||||
export interface KarakterFelszereles {
|
export interface KarakterFelszereles {
|
||||||
pancelID?: string
|
pancelID?: string
|
||||||
pajzsID?: string
|
pajzsID?: string
|
||||||
fegyverIDk: string[]
|
fegyverek: IdAndCount[]
|
||||||
viseltFelszerelesIDk: string[]
|
viselt: IdAndCount[]
|
||||||
cipeltFelszerelesIDk: string[]
|
cipelt: IdAndCount[]
|
||||||
aprosagFelszerelesIDk: string[]
|
aprosagok: IdAndCount[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DefaultFelszereles: KarakterFelszereles = {
|
export const DefaultFelszereles: KarakterFelszereles = {
|
||||||
fegyverIDk: [],
|
fegyverek: [],
|
||||||
viseltFelszerelesIDk: [],
|
viselt: [],
|
||||||
cipeltFelszerelesIDk: [],
|
cipelt: [],
|
||||||
aprosagFelszerelesIDk: [],
|
aprosagok: [],
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ViseltSize(felszereles: KarakterFelszereles): number {
|
export function ViseltSize(felszereles: KarakterFelszereles): number {
|
||||||
@@ -110,8 +115,8 @@ export function ViseltSize(felszereles: KarakterFelszereles): number {
|
|||||||
sum += GetPajzs(felszereles.pajzsID)?.Size ?? 0;
|
sum += GetPajzs(felszereles.pajzsID)?.Size ?? 0;
|
||||||
sum += GetPancel(felszereles.pancelID)?.Size ?? 0;
|
sum += GetPancel(felszereles.pancelID)?.Size ?? 0;
|
||||||
|
|
||||||
sum += felszereles.fegyverIDk.map(GetFegyver).reduce((acc, item) => acc + (item?.Size ?? 0),0)
|
sum += felszereles.fegyverek.map(({id}) => GetFegyver(id)).reduce((acc, item) => acc + Math.ceil(item?.Size ?? 0),0)
|
||||||
sum += felszereles.viseltFelszerelesIDk.map(GetFelszereles).reduce((acc, item) => acc + (item?.size ?? 0),0)
|
sum += felszereles.viselt.map(({id}) => GetFelszereles(id)).reduce((acc, item) => acc + Math.ceil(item?.size ?? 0),0)
|
||||||
|
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {Osztaly2E, OsztalyLabel} from "../domain-models/osztaly2E";
|
|||||||
import {CelzoTB, KozelharciTB, MultiClassTamadasBonusz} from "../domain-models/tamadas_bonusz";
|
import {CelzoTB, KozelharciTB, MultiClassTamadasBonusz} from "../domain-models/tamadas_bonusz";
|
||||||
import {Karakter2E} from "../domain-models/karakter2E";
|
import {Karakter2E} from "../domain-models/karakter2E";
|
||||||
import {GetJellem} from "../domain-models/jellem";
|
import {GetJellem} from "../domain-models/jellem";
|
||||||
import {GetFegyver, GetPajzs, GetPancel} from '../domain-models/felszereles'
|
import {GetFegyver, GetFelszereles, GetPajzs, GetPancel} from '../domain-models/felszereles'
|
||||||
import {
|
import {
|
||||||
KarakterTulajdonsagok,
|
KarakterTulajdonsagok,
|
||||||
TulajdonsagModosito
|
TulajdonsagModosito
|
||||||
@@ -72,22 +72,56 @@ export function KarakterInputToPdfView(karakter: Karakter2E): KarakterPdfView {
|
|||||||
|
|
||||||
const classLevels = getClassLevels(karakter.szintlepesek)
|
const classLevels = getClassLevels(karakter.szintlepesek)
|
||||||
|
|
||||||
let felszereles = [] as string[]
|
let viseltFelszereles = [] as string[]
|
||||||
if(pancel != null){
|
if(pancel != null){
|
||||||
felszereles = felszereles.concat(FelszerelesToPdfView(pancel))
|
viseltFelszereles = viseltFelszereles.concat(FelszerelesToPdfView(pancel))
|
||||||
}
|
}
|
||||||
if(pajzs != null){
|
if(pajzs != null){
|
||||||
felszereles = felszereles.concat(FelszerelesToPdfView(pajzs))
|
viseltFelszereles = viseltFelszereles.concat(FelszerelesToPdfView(pajzs))
|
||||||
}
|
}
|
||||||
|
|
||||||
felszereles = felszereles.concat(karakter.felszereles.fegyverIDk.map(x => {
|
viseltFelszereles = viseltFelszereles.concat(karakter.felszereles.fegyverek.reduce((acc, x) => {
|
||||||
const fegyver = GetFegyver(x)
|
const fegyver = GetFegyver(x.id)
|
||||||
if (fegyver == null) {
|
if (fegyver == null) {
|
||||||
console.error("unknown fegyver: " + x)
|
console.error("unknown fegyver: " + x)
|
||||||
return []
|
return acc
|
||||||
}
|
}
|
||||||
return FelszerelesToPdfView(fegyver)
|
if(fegyver.Size === 0) {
|
||||||
}).reduce((acc, item) => acc.concat(item), [] as string[]))
|
return acc
|
||||||
|
}
|
||||||
|
const pdfView = FelszerelesToPdfView({...fegyver, Count: x.count})
|
||||||
|
return acc.concat(pdfView)
|
||||||
|
}, [] as string[]));
|
||||||
|
|
||||||
|
viseltFelszereles = viseltFelszereles.concat(karakter.felszereles.viselt.reduce((acc, item) => {
|
||||||
|
const targy = GetFelszereles(item.id)
|
||||||
|
if (targy == null) {
|
||||||
|
console.error("unknown targy: ", targy)
|
||||||
|
return acc
|
||||||
|
}
|
||||||
|
const pdfView = FelszerelesToPdfView({Name: targy.nev, Size: targy.size, Count: item.count})
|
||||||
|
return acc.concat(pdfView);
|
||||||
|
}, [] as string[]))
|
||||||
|
|
||||||
|
const cipeltFelszereles = karakter.felszereles.cipelt.reduce((acc, item) => {
|
||||||
|
const targy = GetFelszereles(item.id)
|
||||||
|
if (targy == null) {
|
||||||
|
console.error("unknown targy: ", targy)
|
||||||
|
return acc
|
||||||
|
}
|
||||||
|
const pdfView = FelszerelesToPdfView({Name: targy.nev, Size: targy.size, Count: item.count})
|
||||||
|
return acc.concat(pdfView);
|
||||||
|
}, [] as string[])
|
||||||
|
|
||||||
|
const aprosagFelszereles = karakter.felszereles.aprosagok.reduce((acc, item) => {
|
||||||
|
const targy = GetFelszereles(item.id)
|
||||||
|
if (targy == null) {
|
||||||
|
console.error("unknown targy: ", targy)
|
||||||
|
return acc
|
||||||
|
}
|
||||||
|
const pdfView = FelszerelesToPdfView({Name: targy.nev, Size: targy.size, Count: item.count})
|
||||||
|
return acc.concat(pdfView);
|
||||||
|
}, [] as string[])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
Faj: FajLabel(karakter.faj).toLowerCase(),
|
Faj: FajLabel(karakter.faj).toLowerCase(),
|
||||||
@@ -123,8 +157,8 @@ export function KarakterInputToPdfView(karakter: Karakter2E): KarakterPdfView {
|
|||||||
.concat(karakter.tolvajKepzettsegek?.map((k: KepzettsegId) =>
|
.concat(karakter.tolvajKepzettsegek?.map((k: KepzettsegId) =>
|
||||||
mapKepzettsegToPdfView(Kepzettsegek[k], tulajdonsagok, classLevels[Osztaly2E.Tolvaj])) || []),
|
mapKepzettsegToPdfView(Kepzettsegek[k], tulajdonsagok, classLevels[Osztaly2E.Tolvaj])) || []),
|
||||||
|
|
||||||
Fegyverek: karakter.felszereles.fegyverIDk.slice(0, 4).map(fid => {
|
Fegyverek: karakter.felszereles.fegyverek.slice(0, 4).map(fid => {
|
||||||
const fegyver = GetFegyver(fid)
|
const fegyver = GetFegyver(fid.id)
|
||||||
if (fegyver == null) {
|
if (fegyver == null) {
|
||||||
console.error("unknown fegyver: " + fid)
|
console.error("unknown fegyver: " + fid)
|
||||||
return ""
|
return ""
|
||||||
@@ -141,19 +175,21 @@ export function KarakterInputToPdfView(karakter: Karakter2E): KarakterPdfView {
|
|||||||
SignedNumberToText(damageBonus)}` : ''} ${
|
SignedNumberToText(damageBonus)}` : ''} ${
|
||||||
critStart < 20 ? `${critStart}-20` : '20'}x${fegyver.CritMultiplier}`
|
critStart < 20 ? `${critStart}-20` : '20'}x${fegyver.CritMultiplier}`
|
||||||
}),
|
}),
|
||||||
FelszerelesViselt: felszereles,
|
FelszerelesViselt: viseltFelszereles,
|
||||||
FelszerelesCipelt: [],
|
FelszerelesCipelt: cipeltFelszereles,
|
||||||
FelszerelesAprosagok: []
|
FelszerelesAprosagok: aprosagFelszereles,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FelszerelesPdf {
|
interface FelszerelesPdf {
|
||||||
Name: string,
|
Name: string,
|
||||||
Size: number,
|
Size: number,
|
||||||
|
Count?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
function FelszerelesToPdfView(item: FelszerelesPdf): string[] {
|
function FelszerelesToPdfView(item: FelszerelesPdf): string[] {
|
||||||
const ans = [item.Name]
|
const nameWithCount = `${item.Name}${(item?.Count ?? 1) > 1 ? ` x${item.Count}` : ''}`
|
||||||
|
const ans = [nameWithCount]
|
||||||
for (let i = 1; i < item.Size; i ++) {
|
for (let i = 1; i < item.Size; i ++) {
|
||||||
ans.push("+")
|
ans.push("+")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user