mirror of
https://github.com/Spythere/pojazdownik.git
synced 2026-05-03 05:18:10 +00:00
chore(stock): added supporting internal cargo for generating 627Z & 412Z mixed containers
This commit is contained in:
@@ -110,7 +110,7 @@ import { isTractionUnit } from '../../../utils/vehicleUtils';
|
|||||||
import stockMixin from '../../../mixins/stockMixin';
|
import stockMixin from '../../../mixins/stockMixin';
|
||||||
import { useStockListUtils } from '../../../utils/stockListUtils';
|
import { useStockListUtils } from '../../../utils/stockListUtils';
|
||||||
|
|
||||||
import { getCurrentStockFileName } from '../../../composables/file';
|
import { getCurrentStockFileName, getStockStringOutput } from '../../../composables/file';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Bookmark,
|
Bookmark,
|
||||||
@@ -166,7 +166,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
copyToClipboard() {
|
copyToClipboard() {
|
||||||
navigator.clipboard.writeText(this.store.stockString);
|
navigator.clipboard.writeText(getStockStringOutput());
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
alert(this.$t('stocklist.alert-copied'));
|
alert(this.$t('stocklist.alert-copied'));
|
||||||
@@ -224,7 +224,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
if (!fileName) return;
|
if (!fileName) return;
|
||||||
|
|
||||||
const blob = new Blob([this.store.stockString]);
|
const blob = new Blob([getStockStringOutput()]);
|
||||||
const file = fileName + '.con';
|
const file = fileName + '.con';
|
||||||
|
|
||||||
var e = document.createEvent('MouseEvents'),
|
var e = document.createEvent('MouseEvents'),
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { useStore } from '../store';
|
import { useStore } from '../store';
|
||||||
|
import { additionalCargoTypes } from '../utils/vehicleUtils';
|
||||||
|
|
||||||
export function getCurrentStockFileName() {
|
export function getCurrentStockFileName() {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
@@ -23,3 +24,27 @@ export function getCurrentStockFileName() {
|
|||||||
|
|
||||||
return fileName;
|
return fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getStockStringOutput() {
|
||||||
|
const store = useStore();
|
||||||
|
|
||||||
|
const stockEntries = store.stockString.split(';');
|
||||||
|
|
||||||
|
const parsedEntries = store.stockList.map((stockVehicle, i) => {
|
||||||
|
if (stockVehicle.cargo && /412Z|627Z/.test(stockVehicle.vehicleRef.constructionType)) {
|
||||||
|
const additionalCargo = additionalCargoTypes.find(
|
||||||
|
(c) => c.groupType == stockVehicle.vehicleRef.constructionType && c.id == stockVehicle.cargo!.id
|
||||||
|
);
|
||||||
|
|
||||||
|
if (additionalCargo) {
|
||||||
|
let cargoString = additionalCargo.cargoStringVariations[Math.floor(Math.random() * additionalCargo.cargoStringVariations.length)];
|
||||||
|
|
||||||
|
return stockEntries[i].replace(stockVehicle.cargo.id, cargoString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return stockEntries[i];
|
||||||
|
});
|
||||||
|
|
||||||
|
return parsedEntries.join(';');
|
||||||
|
}
|
||||||
|
|||||||
+17
-10
@@ -1,7 +1,7 @@
|
|||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { useStore } from '../store';
|
import { useStore } from '../store';
|
||||||
import { ICarWagon, ILocomotive, IStock, ICargo, IVehicle } from '../types/common.types';
|
import { ICarWagon, ILocomotive, IStock, ICargo, IVehicle } from '../types/common.types';
|
||||||
import { isTractionUnit } from '../utils/vehicleUtils';
|
import { additionalCargoTypes, isTractionUnit } from '../utils/vehicleUtils';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
setup() {
|
setup() {
|
||||||
@@ -28,11 +28,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
const stock = this.getStockObject(vehicle, cargo);
|
const stock = this.getStockObject(vehicle, cargo);
|
||||||
|
|
||||||
if (
|
if (isTractionUnit(stock.vehicleRef) && this.store.stockList.length > 0 && !isTractionUnit(this.store.stockList[0].vehicleRef))
|
||||||
isTractionUnit(stock.vehicleRef) &&
|
|
||||||
this.store.stockList.length > 0 &&
|
|
||||||
!isTractionUnit(this.store.stockList[0].vehicleRef)
|
|
||||||
)
|
|
||||||
this.store.stockList.unshift(stock);
|
this.store.stockList.unshift(stock);
|
||||||
else this.store.stockList.push(stock);
|
else this.store.stockList.push(stock);
|
||||||
},
|
},
|
||||||
@@ -40,8 +36,7 @@ export default defineComponent({
|
|||||||
addLocomotive(loco: ILocomotive) {
|
addLocomotive(loco: ILocomotive) {
|
||||||
const stockObj = this.getStockObject(loco);
|
const stockObj = this.getStockObject(loco);
|
||||||
|
|
||||||
if (this.store.stockList.length > 0 && !isTractionUnit(this.store.stockList[0].vehicleRef))
|
if (this.store.stockList.length > 0 && !isTractionUnit(this.store.stockList[0].vehicleRef)) this.store.stockList.unshift(stockObj);
|
||||||
this.store.stockList.unshift(stockObj);
|
|
||||||
else this.store.stockList.push(stockObj);
|
else this.store.stockList.push(stockObj);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -80,10 +75,22 @@ export default defineComponent({
|
|||||||
this.store.isDoubleManned = spawnProps.includes('d');
|
this.store.isDoubleManned = spawnProps.includes('d');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const [carType, cargo] = type.split(':');
|
const [carType, ...cargo] = type.split(':');
|
||||||
vehicle = this.store.carDataList.find((car) => car.type == carType) || null;
|
vehicle = this.store.carDataList.find((car) => car.type == carType) || null;
|
||||||
|
|
||||||
if (cargo) vehicleCargo = vehicle?.cargoTypes.find((c) => c.id == cargo) || null;
|
if (vehicle && cargo.length > 0) {
|
||||||
|
if (/412Z|627Z/.test(vehicle.constructionType)) {
|
||||||
|
const additionalCargo = additionalCargoTypes.find(
|
||||||
|
(c) => c.groupType == vehicle!.constructionType && c.cargoStringVariations.includes(cargo.join(':'))
|
||||||
|
);
|
||||||
|
|
||||||
|
if (additionalCargo) {
|
||||||
|
cargo[0] = additionalCargo.id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vehicleCargo = vehicle?.cargoTypes.find((c) => c.id == cargo[0]) || null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!vehicle && type) {
|
if (!vehicle && type) {
|
||||||
|
|||||||
@@ -93,8 +93,6 @@ export const useStore = defineStore('store', {
|
|||||||
|
|
||||||
return state.stockList
|
return state.stockList
|
||||||
.map((stock, i) => {
|
.map((stock, i) => {
|
||||||
// let cargoString = '';
|
|
||||||
|
|
||||||
let stockTypeStr = isTractionUnit(stock.vehicleRef) || !stock.cargo ? stock.vehicleRef.type : `${stock.vehicleRef.type}:${stock.cargo.id}`;
|
let stockTypeStr = isTractionUnit(stock.vehicleRef) || !stock.cargo ? stock.vehicleRef.type : `${stock.vehicleRef.type}:${stock.cargo.id}`;
|
||||||
|
|
||||||
if (i == 0 && (coldStartActive || doubleManningActive))
|
if (i == 0 && (coldStartActive || doubleManningActive))
|
||||||
|
|||||||
@@ -1,6 +1,56 @@
|
|||||||
import { ICarWagon, ILocomotive, IStock, IVehicleData, LocoGroupType, WagonGroupType } from '../types/common.types';
|
import { ICarWagon, ILocomotive, IStock, IVehicleData, LocoGroupType, WagonGroupType } from '../types/common.types';
|
||||||
import { MassLimitLocoType, calculateMassLimit, calculateSpeedLimit } from './vehicleLimitsUtils';
|
import { MassLimitLocoType, calculateMassLimit, calculateSpeedLimit } from './vehicleLimitsUtils';
|
||||||
|
|
||||||
|
export const additionalCargoTypes = [
|
||||||
|
{
|
||||||
|
groupType: '627Z',
|
||||||
|
id: '627Z_mix1_sctc_loaded',
|
||||||
|
weight: 96500,
|
||||||
|
cargoStringVariations: [
|
||||||
|
'sc_20:tc_20_loaded:tc_20_loaded:tc_20_loaded',
|
||||||
|
'tc_20_loaded:sc_20:tc_20_loaded:tc_20_loaded',
|
||||||
|
'tc_20_loaded:tc_20_loaded:sc_20:tc_20_loaded',
|
||||||
|
'tc_20_loaded:tc_20_loaded:tc_20_loaded:sc_20',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
groupType: '627Z',
|
||||||
|
id: '627Z_mix2_sctc_loaded',
|
||||||
|
weight: 87000,
|
||||||
|
cargoStringVariations: [
|
||||||
|
'sc_20:tc_20_loaded:tc_20_loaded:sc_20',
|
||||||
|
'sc_20:tc_20_loaded:sc_20:tc_20_loaded',
|
||||||
|
'sc_20:sc_20:tc_20_loaded:tc_20_loaded',
|
||||||
|
'tc_20_loaded:tc_20_loaded:sc_20:sc_20',
|
||||||
|
'tc_20_loaded:sc_20:tc_20_loaded:sc_20',
|
||||||
|
'tc_20_loaded:sc_20:sc_20:tc_20_loaded',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
groupType: '627Z',
|
||||||
|
id: '627Z_mix3_sctc_loaded',
|
||||||
|
weight: 77500,
|
||||||
|
cargoStringVariations: [
|
||||||
|
'sc_20:sc_20:sc_20:tc_20_loaded',
|
||||||
|
'sc_20:sc_20:tc_20_loaded:sc_20',
|
||||||
|
'sc_20:tc_20_loaded:sc_20:sc_20',
|
||||||
|
'tc_20_loaded:sc_20:sc_20:sc_20',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
groupType: '412Z',
|
||||||
|
id: '412Z_mix1_sctc_loaded',
|
||||||
|
weight: 43500,
|
||||||
|
cargoStringVariations: ['sc_20:tc_20_loaded', 'tc_20_loaded:sc_20'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
groupType: '412Z',
|
||||||
|
id: '412Z_mix1_sctc_empty',
|
||||||
|
weight: 33970,
|
||||||
|
cargoStringVariations: ['sc_20:tc_20_empty:sc_20'],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
export function isTractionUnit(vehicle: ILocomotive | ICarWagon): vehicle is ILocomotive {
|
export function isTractionUnit(vehicle: ILocomotive | ICarWagon): vehicle is ILocomotive {
|
||||||
return (vehicle as ILocomotive).cabinType !== undefined;
|
return (vehicle as ILocomotive).cabinType !== undefined;
|
||||||
}
|
}
|
||||||
@@ -42,12 +92,25 @@ export function carDataList(vehiclesData: IVehicleData[] | undefined) {
|
|||||||
return vehiclesData.reduce<ICarWagon[]>((acc, data) => {
|
return vehiclesData.reduce<ICarWagon[]>((acc, data) => {
|
||||||
if (data.cabinName !== null) return acc;
|
if (data.cabinName !== null) return acc;
|
||||||
|
|
||||||
|
const cargoTypes = data.group.cargoTypes || [];
|
||||||
|
|
||||||
|
if (/412Z|627Z/.test(data.group.name)) {
|
||||||
|
cargoTypes.push(
|
||||||
|
...additionalCargoTypes
|
||||||
|
.filter((c) => c.groupType == data.group.name)
|
||||||
|
.map((c) => ({
|
||||||
|
id: c.id,
|
||||||
|
weight: c.weight,
|
||||||
|
}))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
acc.push({
|
acc.push({
|
||||||
group: data.type as WagonGroupType,
|
group: data.type as WagonGroupType,
|
||||||
type: data.name,
|
type: data.name,
|
||||||
constructionType: data.group.name,
|
constructionType: data.group.name,
|
||||||
loadable: data.group.cargoTypes !== null && data.group.cargoTypes.length > 0,
|
loadable: data.group.cargoTypes !== null && data.group.cargoTypes.length > 0,
|
||||||
cargoTypes: data.group?.cargoTypes ?? [],
|
cargoTypes,
|
||||||
|
|
||||||
sponsorOnlyTimestamp: data.restrictions?.sponsorOnly ?? 0,
|
sponsorOnlyTimestamp: data.restrictions?.sponsorOnly ?? 0,
|
||||||
teamOnly: data.restrictions?.teamOnly ?? false,
|
teamOnly: data.restrictions?.teamOnly ?? false,
|
||||||
|
|||||||
Reference in New Issue
Block a user