From 23e7d04dfa930c7b031a3e4a771e60787e1ce58b Mon Sep 17 00:00:00 2001 From: Spythere Date: Wed, 29 Jan 2025 16:02:06 +0100 Subject: [PATCH] chore: added train vmax field --- src/components/Timetable/TimetableBody.vue | 2 +- src/components/Timetable/TrainTimetable.vue | 18 +-- src/data/speedLimits.ts | 157 ++++++++++++++++++++ src/types/common.types.ts | 1 + 4 files changed, 165 insertions(+), 13 deletions(-) create mode 100644 src/data/speedLimits.ts diff --git a/src/components/Timetable/TimetableBody.vue b/src/components/Timetable/TimetableBody.vue index 93e9e32..423ec19 100644 --- a/src/components/Timetable/TimetableBody.vue +++ b/src/components/Timetable/TimetableBody.vue @@ -152,7 +152,7 @@ - 70 + {{ row.stockVmax }} diff --git a/src/components/Timetable/TrainTimetable.vue b/src/components/Timetable/TrainTimetable.vue index 51f26d0..414b3eb 100644 --- a/src/components/Timetable/TrainTimetable.vue +++ b/src/components/Timetable/TrainTimetable.vue @@ -26,23 +26,21 @@ const globalStore = useGlobalStore(); const apiStore = useApiStore(); const computedTimetable = computed(() => { - if (!globalStore.selectedTrain) return []; + if (!globalStore.selectedTrain || !globalStore.selectedTrain.timetable) return []; - const timetable = globalStore.selectedTrain.timetable; - - if (!timetable) return []; + const { timetable, stockString, mass, length } = globalStore.selectedTrain; let timeFrom = Date.now(); - const headLocos = globalStore.selectedTrain.stockString + const headLocos = stockString .split(';') .slice(0, 3) .filter((s, i) => i == 0 || /-\d+$/.test(s)) .map((s) => s.slice(0, s.indexOf('-'))); - const stockVmax = 70, - stockMass = Math.floor(globalStore.selectedTrain.mass / 1000), - stockLength = globalStore.selectedTrain.length; + const stockVmax = timetable.trainMaxSpeed, + stockMass = Math.floor(mass / 1000), + stockLength = length; const timetablePath = timetable.path.split(';').map((pathEl) => { const [arrivalLine, scenery, departureLine] = pathEl.split(','); @@ -204,8 +202,4 @@ function getAbbrevs(routeData: SceneryRoute) { return abbrevs; } - -// function getRadioChannel() { -// return Math.floor(Math.random() * 6 + 1); -// } diff --git a/src/data/speedLimits.ts b/src/data/speedLimits.ts new file mode 100644 index 0000000..fbde4af --- /dev/null +++ b/src/data/speedLimits.ts @@ -0,0 +1,157 @@ +const speedLimits = { + EU07: { + passenger: { + '650000': 125, + }, + cargo: { + '2000000': 70, + }, + none: 110, + }, + '4E': { + passenger: { + '650000': 125, + }, + cargo: { + '2000000': 70, + }, + none: 110, + }, + EU07E: { + passenger: { + '650000': 125, + }, + cargo: { + '2000000': 70, + }, + none: 110, + }, + EP07: { + passenger: { + '650000': 125, + }, + cargo: null, + none: 110, + }, + EP08: { + passenger: { + '650000': 140, + }, + cargo: null, + none: 110, + }, + EP09: { + passenger: { + '650000': 160, + }, + cargo: null, + none: 160, + }, + ET22: { + passenger: { + '650000': 125, + }, + cargo: { + '1200000': 100, + '2000000': 90, + '2500000': 80, + '3100000': 70, + }, + none: 125, + }, + '201E': { + passenger: { + '650000': 125, + }, + cargo: { + '1200000': 100, + '2000000': 90, + '2500000': 80, + '3100000': 70, + }, + none: 125, + }, + ET41: { + passenger: { + '700000': 125, + }, + cargo: { + '4000000': 70, + }, + none: 110, + }, + SM42: { + passenger: { + '95000': 90, + '200000': 80, + '300000': 70, + '450000': 60, + '750000': 50, + '1130000': 40, + '1720000': 30, + '2400000': 20, + }, + cargo: { + '95000': 90, + '200000': 80, + '300000': 70, + '450000': 60, + '750000': 50, + '1130000': 40, + '1720000': 30, + '2400000': 20, + }, + none: 90, + }, + M62: { + passenger: { + '500000': 100, + '800000': 80, + '1200000': 60, + '2000000': 40, + '3000000': 20, + }, + cargo: { + '500000': 100, + '800000': 80, + '1200000': 60, + '2000000': 40, + '3000000': 20, + }, + none: 100, + }, + ST44: { + passenger: { + '500000': 100, + '800000': 80, + '1200000': 60, + '2000000': 40, + '3000000': 20, + }, + cargo: { + '500000': 100, + '800000': 80, + '1200000': 60, + '2000000': 40, + '3000000': 20, + }, + none: 100, + }, + CTLR4C: { + passenger: { + '500000': 100, + '800000': 80, + '1200000': 60, + '2000000': 40, + '3000000': 20, + }, + cargo: { + '500000': 100, + '800000': 80, + '1200000': 60, + '2000000': 40, + '3000000': 20, + }, + none: 100, + }, +}; diff --git a/src/types/common.types.ts b/src/types/common.types.ts index a5d0cf4..e1d4efa 100644 --- a/src/types/common.types.ts +++ b/src/types/common.types.ts @@ -38,6 +38,7 @@ export interface ActiveTrainTimetable { timetableId: number; sceneries: string[]; path: string; + trainMaxSpeed: number; } export interface TimetableStop {