From c5b3e8f3e094210fb2a4d14c72b08c1691c9b6a3 Mon Sep 17 00:00:00 2001 From: Spythere Date: Tue, 3 Jan 2023 01:49:10 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20generowanie=20sk=C5=82adu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/StockGeneratorTab.vue | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/components/StockGeneratorTab.vue b/src/components/StockGeneratorTab.vue index 0c8272b..5221874 100644 --- a/src/components/StockGeneratorTab.vue +++ b/src/components/StockGeneratorTab.vue @@ -147,6 +147,7 @@ export default defineComponent({ .filter((c) => !this.excludedCarTypes.includes(c.split(':')[0])) .forEach((c) => { const [type, cargoType] = c.split(':'); + const carWagonObjs = this.store.carDataList.filter((cw) => cw.type.startsWith(type)); const cargoObjs = [] as (ICargo | undefined)[]; @@ -154,24 +155,28 @@ export default defineComponent({ else if (cargoType == 'all') cargoObjs.push(...carWagonObjs[0]?.cargoList); else cargoObjs.push(carWagonObjs[0]?.cargoList.find((cargo) => cargo.id == cargoType)); - // if (cargoType == 'all') - // else if (cargoType) - // else cargoObjs.push(undefined); - carWagonObjs.forEach((cw) => { cargoObjs.forEach((cargoObj) => { - acc.push({ carWagon: cw, cargo: cargoObj }); + const chosenStock = acc.find((a) => a.constructionType.includes(cw.constructionType)); + + if (!chosenStock) + acc.push({ + constructionType: cw.constructionType, + carPool: [{ carWagon: cw, cargo: cargoObj }], + }); + else chosenStock.carPool.push({ carWagon: cw, cargo: cargoObj }); }); }); }); return acc; - }, [] as { carWagon: ICarWagon; cargo?: ICargo }[]); + }, [] as { constructionType: string; carPool: { carWagon: ICarWagon; cargo?: ICargo }[] }[]); this.store.stockList.length = this.store.stockList[0]?.isLoco ? 1 : 0; new Array(this.maxCarCount).fill(0).forEach(() => { - const { carWagon, cargo } = generatedChosenStockList[~~(Math.random() * generatedChosenStockList.length)]; + const randomStockType = generatedChosenStockList[~~(Math.random() * generatedChosenStockList.length)]; + const {carWagon, cargo} = randomStockType.carPool[~~(Math.random() * randomStockType.carPool.length)]; if (this.store.totalMass + (cargo?.totalMass || carWagon.mass) > this.maxMass) return; if (this.store.totalLength + carWagon.length > this.maxLength) return;