mirror of
https://github.com/Spythere/stacjownik.git
synced 2026-05-03 05:18:11 +00:00
fix: train speed limits
This commit is contained in:
@@ -187,17 +187,12 @@ import { defineComponent } from 'vue';
|
||||
import { useMainStore } from '../../store/mainStore';
|
||||
import { useApiStore } from '../../store/apiStore';
|
||||
import { Train } from '../../typings/common';
|
||||
import speedLimits from '../../data/speedLimits.json';
|
||||
import styleMixin from '../../mixins/styleMixin';
|
||||
import trainInfoMixin from '../../mixins/trainInfoMixin';
|
||||
import trainCategoryMixin from '../../mixins/trainCategoryMixin';
|
||||
import ProgressBar from '../Global/ProgressBar.vue';
|
||||
import StockList from '../Global/StockList.vue';
|
||||
|
||||
export type SpeedLimitLocoType = keyof typeof speedLimits;
|
||||
|
||||
const isCompatibleLoco = (locoType: string): locoType is SpeedLimitLocoType =>
|
||||
locoType in speedLimits;
|
||||
import { speedLimits } from '../../data/speedLimits';
|
||||
|
||||
export default defineComponent({
|
||||
mixins: [trainInfoMixin, styleMixin, trainCategoryMixin],
|
||||
@@ -239,19 +234,22 @@ export default defineComponent({
|
||||
|
||||
const headLoco = this.train.stockList[0].slice(0, this.train.stockList[0].indexOf('-'));
|
||||
|
||||
if (!isCompatibleLoco(headLoco)) return vehicleMaxSpeed;
|
||||
if (speedLimits[headLoco] === undefined) return vehicleMaxSpeed;
|
||||
|
||||
if (this.train.stockList.length == 1) return speedLimits[headLoco]['none'];
|
||||
|
||||
const speedTable = speedLimits[headLoco][isPassenger ? 'passenger' : 'cargo'];
|
||||
const speedTable: Record<string, number> =
|
||||
speedLimits[headLoco][isPassenger ? 'passenger' : 'cargo'];
|
||||
|
||||
if (!speedTable) return vehicleMaxSpeed;
|
||||
|
||||
let massKey = Object.keys(speedTable).findLast(
|
||||
const massKey = Object.keys(speedTable).findLast(
|
||||
(massKey) => this.train.mass >= Number(massKey)
|
||||
);
|
||||
|
||||
return massKey ? ((speedTable as any)[massKey] as number) : vehicleMaxSpeed;
|
||||
const massMaxSpeed = massKey ? speedTable[massKey] : Infinity;
|
||||
|
||||
return Math.min(massMaxSpeed, vehicleMaxSpeed);
|
||||
},
|
||||
journalRouteLocation() {
|
||||
return {
|
||||
|
||||
@@ -1,156 +0,0 @@
|
||||
{
|
||||
"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,
|
||||
"3100000": 70
|
||||
},
|
||||
"none": 125
|
||||
},
|
||||
"201E": {
|
||||
"passenger": {
|
||||
"650000": 125
|
||||
},
|
||||
"cargo": {
|
||||
"1200000": 100,
|
||||
"3100000": 70
|
||||
},
|
||||
"none": 125
|
||||
},
|
||||
"ET41": {
|
||||
"passenger": {
|
||||
"700000": 125
|
||||
},
|
||||
"cargo": {
|
||||
"4000000": 70,
|
||||
"3500000": 80,
|
||||
"2500000": 90,
|
||||
"2000000": 100
|
||||
},
|
||||
"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
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
export const speedLimits: Record<string, any> = {
|
||||
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,
|
||||
'1800000': 90,
|
||||
'2500000': 80,
|
||||
'3100000': 70
|
||||
},
|
||||
none: 100
|
||||
},
|
||||
'201E': {
|
||||
passenger: {
|
||||
'650000': 125
|
||||
},
|
||||
cargo: {
|
||||
'1200000': 100,
|
||||
'3100000': 70
|
||||
},
|
||||
none: 125
|
||||
},
|
||||
ET41: {
|
||||
passenger: {
|
||||
'700000': 125
|
||||
},
|
||||
cargo: {
|
||||
'4000000': 70,
|
||||
'3500000': 80,
|
||||
'2500000': 90,
|
||||
'2000000': 100
|
||||
},
|
||||
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
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user