Remove TrackSource.BEZIER and create TrackShape enum

This commit is contained in:
dominik-korsa 2025-07-24 22:36:03 +02:00
parent f52800c81d
commit 1f806005aa
No known key found for this signature in database
GPG Key ID: 5A24D76EE0A30974
10 changed files with 34 additions and 18 deletions

View File

@ -42,7 +42,7 @@ const ObjectRendererQueue = [
{
'name': 'isolations-ids',
'category': ['tracks', 'switches'],
'trackSources': [TrackSource.STANDARD, TrackSource.BEZIER],
'trackSources': [TrackSource.STANDARD],
'renderer': IsolationIdRenderer,
'cond': (layers) => layers['isolations-ids']
},

View File

@ -141,13 +141,14 @@ function getTrackColor(object, trackColorMode, gradientDef) {
case "type":
switch (object.source) {
case TrackSource.STANDARD:
if (object.type === 'BezierTrack') {
return modeDef.options['bezier-track'][0];
}
return modeDef.options['standard-track'][0];
case TrackSource.SWITCH:
return modeDef.options['point-track'][0];
case TrackSource.ROUTE:
return modeDef.options['route-track'][0];
case TrackSource.BEZIER:
return modeDef.options['bezier-track'][0];
default:
return modeDef.options[modeDef.optionDefault][0];
}

View File

@ -1,5 +1,5 @@
import { ElectrificationStatus } from "../../../model/electrification-status";
import {TrackSource} from "../../../model/tracks/track";
import {TrackShape, TrackSource} from "../../../model/tracks/track";
const TrackHoverInfoConsts = {
electrification: {
@ -11,8 +11,12 @@ const TrackHoverInfoConsts = {
source: {
[TrackSource.STANDARD]: 'Standard track',
[TrackSource.SWITCH]: 'Switch track',
[TrackSource.BEZIER]: 'Bezier track',
[TrackSource.ROUTE]: 'Route track',
},
shape: {
[TrackShape.STRAIGHT]: 'Straight',
[TrackShape.ARC]: 'Circle arc',
[TrackShape.BEZIER]: 'Bézier curve',
}
};

View File

@ -21,6 +21,7 @@ export default function TrackHoverInfoPopup(props) {
<InfoPopupItem value={track['electrificationStatus']} label="Electrification" options={{translationConstKey: 'electrification'}} />
<InfoPopupItem value={track['source']} label="Type" options={{translationConstKey: 'source'}} />
<InfoPopupSwitchItems track={track} />
<InfoPopupItem value={track['shape']} label="Shape" options={{translationConstKey: 'shape'}} />
<InfoPopupShapeItems track={track} />
</tbody>
</table>
@ -36,8 +37,8 @@ function InfoPopupSwitchItems(props) {
if (!track.switch) return null;
return <>
<InfoPopupItem value={track.switch.id_switch} label="Switch ID" />
<InfoPopupItem value={track.switch.bare_model} label="Switch model" />
<InfoPopupItem value={track.createSwitchTrack.id_switch} label="Switch ID" />
<InfoPopupItem value={track.createSwitchTrack.bare_model} label="Switch model" />
</>
}

View File

@ -152,7 +152,7 @@ const Constants = {
options: {
'standard-track': ['#00a', 'Standard track'],
'point-track': ['#0a0', 'Switch track'],
'bezier-track': ['#aa8', 'Bezier track'],
'bezier-track': ['#aa8', 'Bézier track'],
'route-track': ['#a6d', 'Route track'],
}
},

View File

@ -68,7 +68,7 @@ export default class Route extends SceneryObject {
trackLength *= (trackRadius / radius);
}
return StandardTrack.route(
return StandardTrack.createRouteTrack(
trackIds[index],
startPoint,
rotDeg,

View File

@ -153,7 +153,7 @@ export default class Switch extends SceneryObject {
const connections = this._createTrackConnections(switchDef, trackDef, ids);
const { startPos, rotationDeg } = CurveHelper.transformStart(this.pos, this.rot, trackDef.pos, trackDef.rot);
const track = StandardTrack.switch(
const track = StandardTrack.createSwitchTrack(
trackId,
startPos,
rotationDeg,

View File

@ -1,4 +1,4 @@
import Track, {TrackSource} from "./track";
import Track, {TrackShape, TrackSource} from "./track";
import Vector3 from "../vector3";
import TrackConnection, {TrackConnectionEnd} from "../track-connection";
@ -20,7 +20,9 @@ export default class BezierTrack extends Track
Vector3.zero(), // rotation
length,
0, // radius
connections, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed, TrackSource.BEZIER,
connections, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed,
TrackSource.STANDARD,
TrackShape.BEZIER,
);
Object.assign(this.points, {

View File

@ -1,5 +1,5 @@
import AngleHelper from "../../helpers/angleHelper";
import Track, {TrackSource} from "./track";
import Track, {TrackShape, TrackSource} from "./track";
import Vector3 from "../vector3";
import TrackConnection, {TrackConnectionEnd} from "../track-connection";
import {ElectrificationStatus} from "../electrification-status";
@ -14,7 +14,8 @@ export default class StandardTrack extends Track {
};
constructor(id, start, rot, len, r, connections, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed, source) {
super(id, start, rot, len, r, connections, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed, source);
const shape = r === 0 ? TrackShape.STRAIGHT : TrackShape.ARC;
super(id, start, rot, len, r, connections, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed, source, shape);
this._calcPoints();
}
@ -80,7 +81,7 @@ export default class StandardTrack extends Track {
super.applyObject(scenery);
}
static route(id, start, rot, len, r, connections, electrified, route) {
static createRouteTrack(id, start, rot, len, r, connections, electrified, route) {
const track = new StandardTrack(
id, start, rot, len, r,
connections,
@ -98,7 +99,7 @@ export default class StandardTrack extends Track {
return track;
}
static switch(id, start, rot, len, r, connections, start_slope, end_slope, object) {
static createSwitchTrack(id, start, rot, len, r, connections, start_slope, end_slope, object) {
const track = new StandardTrack(
id, start, rot, len, r,
connections,

View File

@ -4,11 +4,16 @@ import {TrackConnectionEnd} from "../track-connection";
export const TrackSource = {
STANDARD: Symbol("TrackSource.STANDARD"),
BEZIER: Symbol("TrackSource.BEZIER"),
SWITCH: Symbol("TrackSource.SWITCH"),
ROUTE: Symbol("TrackSource.ROUTE"),
};
export const TrackShape = {
STRAIGHT: Symbol("TrackShape.STRAIGHT"),
ARC: Symbol("TrackShape.ARC"),
BEZIER: Symbol("TrackShape.BEZIER"),
};
export default class Track extends SceneryObject {
len;
r;
@ -27,8 +32,9 @@ export default class Track extends SceneryObject {
electrificationStatus = ElectrificationStatus.NOT_CHECKED;
hasNEVP = false;
source;
shape;
constructor(id, pos, rot, len, r, connections, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed, source) {
constructor(id, pos, rot, len, r, connections, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed, source, shape) {
super(id, pos, rot);
Object.assign(this, {
len, r,
@ -39,6 +45,7 @@ export default class Track extends SceneryObject {
prefab_name,
maxspeed, derailspeed,
source,
shape,
});
}