New sign definitions
+Added definitions and icons for signs: W1, W13, W13a, W15, W17, W28 *Fixed text retrieval for older types of W27 and W8 signs, where the speed limit is specified in the prefab name instead of the data field
7
public/assets/signs/w1.svg
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m50 70c-2.2091 0-4 1.7909-4 4v14c0 2.2091 1.7909 4 4 4s4-1.7909 4-4v-14c0-2.2091-1.7909-4-4-4z" color="#000000"/>
|
||||
<path d="m38 8c-6.5788 0-12 5.4212-12 12v44c0 6.5788 5.4212 12 12 12h24c6.5788 0 12-5.4212 12-12v-44c0-6.5788-5.4212-12-12-12zm0 8h24c2.2852 0 4 1.7148 4 4v44c0 2.2852-1.7148 4-4 4h-24c-2.2852 0-4-1.7148-4-4v-44c0-2.2852 1.7148-4 4-4z" stop-color="#000000"/>
|
||||
<path d="m35.777 10.102a3 3 0 0 0-2.2773 0.30078 3 3 0 0 0-1.0977 4.0977l15 26a3.0003 3.0003 0 0 0 5.1953 0l15-26a3 3 0 0 0-1.0977-4.0977 3 3 0 0 0-4.0977 1.0977l-12.402 21.498-12.402-21.498a3 3 0 0 0-1.8203-1.3984z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="m50 42a3.0003 3.0003 0 0 0-2.5977 1.5l-15 26a3 3 0 0 0 1.0977 4.0977 3 3 0 0 0 4.0977-1.0977l12.402-21.498 12.402 21.498a3 3 0 0 0 4.0977 1.0977 3 3 0 0 0 1.0977-4.0977l-15-26a3.0003 3.0003 0 0 0-2.5977-1.5z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
14
public/assets/signs/w13.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100mm" height="140mm" version="1.1" viewBox="0 0 100 140" xmlns="http://www.w3.org/2000/svg">
|
||||
<g stroke-linecap="round">
|
||||
<path d="m50 6c-2.2091 0-4 1.7909-4 4v120c0 2.2091 1.7909 4 4 4s4-1.7909 4-4v-120c0-2.2091-1.7909-4-4-4z" stop-color="#000000"/>
|
||||
<g stroke-linejoin="round">
|
||||
<path d="m40.691 5.0059a3 3 0 0 0-2.1738 0.74219 3 3 0 0 0-0.26953 4.2344l44 50a3 3 0 0 0 4.2344 0.26953 3 3 0 0 0 0.26953-4.2344l-44-50a3 3 0 0 0-2.0605-1.0117z" stop-color="#000000"/>
|
||||
<path d="m86.482 40.748a3 3 0 0 0-4.2344 0.26953l-44 50a3 3 0 0 0 0.26953 4.2344 3 3 0 0 0 4.2344-0.26953l44-50a3 3 0 0 0-0.26953-4.2344z" stop-color="#000000"/>
|
||||
<path d="m65.416 33.92a3 3 0 0 0-2.0684 0.99609l-50.086 56.086a3 3 0 0 0 0.24023 4.2363 3 3 0 0 0 4.2363-0.24023l50.084-56.086a3 3 0 0 0-0.23828-4.2344 3 3 0 0 0-2.168-0.75781z" stop-color="#000000"/>
|
||||
<path d="m59.309 5.0059a3 3 0 0 0-2.0605 1.0117l-44 50a3 3 0 0 0 0.26953 4.2344 3 3 0 0 0 4.2344-0.26953l44-50a3 3 0 0 0-0.26953-4.2344 3 3 0 0 0-2.1738-0.74219z" stop-color="#000000"/>
|
||||
<path d="m15.691 40.006a3 3 0 0 0-2.1738 0.74219 3 3 0 0 0-0.26953 4.2344l44 50a3 3 0 0 0 4.2344 0.26953 3 3 0 0 0 0.26953-4.2344l-44-50a3 3 0 0 0-2.0605-1.0117z" stop-color="#000000"/>
|
||||
<path d="m32.416 34.678a3 3 0 0 0-0.23828 4.2344l50.084 56.086a3 3 0 0 0 4.2363 0.24023 3 3 0 0 0 0.24023-4.2363l-50.086-56.086a3 3 0 0 0-4.2363-0.23828z" stop-color="#000000"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
16
public/assets/signs/w13a.svg
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100mm" height="140mm" version="1.1" viewBox="0 0 100 140" xmlns="http://www.w3.org/2000/svg">
|
||||
<g stroke-linecap="round">
|
||||
<path d="m50 6c-2.2091 0-4 1.7909-4 4v120c0 2.2091 1.7909 4 4 4s4-1.7909 4-4v-120c0-2.2091-1.7909-4-4-4z" stop-color="#000000"/>
|
||||
<g stroke-linejoin="round">
|
||||
<path d="m21.412 4.3535a3 3 0 0 0-4.0586 1.2344 3 3 0 0 0 1.2344 4.0586l60 32a3 3 0 0 0 4.0586-1.2344 3 3 0 0 0-1.2344-4.0586z" stop-color="#000000"/>
|
||||
<path d="m78.588 4.3535-60 32a3 3 0 0 0-1.2344 4.0586 3 3 0 0 0 4.0586 1.2344l60-32a3 3 0 0 0 1.2344-4.0586 3 3 0 0 0-4.0586-1.2344z" stop-color="#000000"/>
|
||||
<path d="m19.127 21.131a3 3 0 0 0-1.7734 1.457 3 3 0 0 0 1.2344 4.0586l60 32a3 3 0 0 0 4.0586-1.2344 3 3 0 0 0-1.2344-4.0586l-60-32a3 3 0 0 0-2.2852-0.22266z" stop-color="#000000"/>
|
||||
<path d="m78.588 21.354-60 32a3 3 0 0 0-1.2344 4.0586 3 3 0 0 0 4.0586 1.2344l60-32a3 3 0 0 0 1.2344-4.0586 3 3 0 0 0-4.0586-1.2344z" stop-color="#000000"/>
|
||||
<path d="m19.127 64.131a3 3 0 0 0-1.7734 1.457 3 3 0 0 0 1.2344 4.0586l60 32a3 3 0 0 0 4.0586-1.2344 3 3 0 0 0-1.2344-4.0586l-60-32a3 3 0 0 0-2.2852-0.22266z" stop-color="#000000"/>
|
||||
<path d="m78.588 64.354-60 32a3 3 0 0 0-1.2344 4.0586 3 3 0 0 0 4.0586 1.2344l60-32a3 3 0 0 0 1.2344-4.0586 3 3 0 0 0-4.0586-1.2344z" stop-color="#000000"/>
|
||||
<path d="m19.127 81.131a3 3 0 0 0-1.7734 1.457 3 3 0 0 0 1.2344 4.0586l60 32a3 3 0 0 0 4.0586-1.2344 3 3 0 0 0-1.2344-4.0586l-60-32a3 3 0 0 0-2.2852-0.22266z" stop-color="#000000"/>
|
||||
<path d="m78.588 81.354-60 32a3 3 0 0 0-1.2344 4.0586 3 3 0 0 0 4.0586 1.2344l60-32a3 3 0 0 0 1.2344-4.0586 3 3 0 0 0-4.0586-1.2344z" stop-color="#000000"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
6
public/assets/signs/w15_l.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m50 54c-2.2091 0-4 1.7909-4 4v30c0 2.2091 1.7909 4 4 4s4-1.7909 4-4v-30c0-2.2091-1.7909-4-4-4z" color="#000000"/>
|
||||
<path d="m69 14-37 20 37 20z"/>
|
||||
<path d="m35.32 10c-5.1112 0-9.3203 4.2091-9.3203 9.3203v29.359c0 5.1112 4.2091 9.3203 9.3203 9.3203h29.359c5.1112 0 9.3203-4.2091 9.3203-9.3203v-29.359c0-5.1112-4.2091-9.3203-9.3203-9.3203zm0 6h29.359c1.891 0 3.3203 1.4293 3.3203 3.3203v29.359c0 1.891-1.4293 3.3203-3.3203 3.3203h-29.359c-1.891 0-3.3203-1.4293-3.3203-3.3203v-29.359c0-1.891 1.4293-3.3203 3.3203-3.3203z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 752 B |
6
public/assets/signs/w15_r.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m50 54c-2.2091 0-4 1.7909-4 4v30c0 2.2091 1.7909 4 4 4s4-1.7909 4-4v-30c0-2.2091-1.7909-4-4-4z" color="#000000"/>
|
||||
<path d="m31 14 37 20-37 20z"/>
|
||||
<path d="m35.32 10c-5.1112 0-9.3203 4.2091-9.3203 9.3203v29.359c0 5.1112 4.2091 9.3203 9.3203 9.3203h29.359c5.1112 0 9.3203-4.2091 9.3203-9.3203v-29.359c0-5.1112-4.2091-9.3203-9.3203-9.3203zm0 6h29.359c1.891 0 3.3203 1.4293 3.3203 3.3203v29.359c0 1.891-1.4293 3.3203-3.3203 3.3203h-29.359c-1.891 0-3.3203-1.4293-3.3203-3.3203v-29.359c0-1.891 1.4293-3.3203 3.3203-3.3203z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 752 B |
4
public/assets/signs/w17.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m50 37.25c-7.0298 0-12.75 5.7203-12.75 12.75s5.7203 12.75 12.75 12.75 12.75-5.7203 12.75-12.75-5.7203-12.75-12.75-12.75zm0 1.9999v10.75h10.75c-2.6e-5 5.9489-4.8009 10.75-10.75 10.75v-10.75h-10.75c0-5.9489 4.8013-10.75 10.75-10.75z" stroke-linecap="round" stroke-linejoin="round" stroke-width="8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 460 B |
5
public/assets/signs/w28.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m50 54c-2.2091 0-4 1.7909-4 4v30c0 2.2091 1.7909 4 4 4s4-1.7909 4-4v-30c0-2.2091-1.7909-4-4-4z" color="#000000"/>
|
||||
<path d="m50 8c-14.312 0-26 11.688-26 26s11.688 26 26 26 26-11.688 26-26-11.688-26-26-26zm0 8c9.9885 0 18 8.0115 18 18s-8.0115 18-18 18-18-8.0115-18-18 8.0115-18 18-18z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 517 B |
@ -5,11 +5,25 @@ const DefinedSigns = {
|
||||
"name": "W27",
|
||||
"icon": "w27.svg",
|
||||
"offsetY": -1.4364,
|
||||
"text": "data",
|
||||
"text": ["fun", "data"],
|
||||
"textFun": (object) => object.prefab_name?.match(/^sign_w27_(\d+)/)?.[1] || null,
|
||||
"textSize": 0.22,
|
||||
"textOffsetX": 1.89,
|
||||
"textOffsetY": 1.2
|
||||
},
|
||||
"sign_w28_": {
|
||||
"name": "W28",
|
||||
"icon": "w28.svg",
|
||||
"offsetY": -1.4364,
|
||||
"text": ["fun"],
|
||||
"textFun": (object) => {
|
||||
const channel = object.prefab_name?.match(/^sign_w28_(\d+)/)?.[1];
|
||||
return channel ? `R${channel}` : null;
|
||||
},
|
||||
"textSize": 0.22,
|
||||
"textOffsetX": 1.89,
|
||||
"textOffsetY": 1.25
|
||||
},
|
||||
"sign_w11p_400m": {
|
||||
"name": "W11p 400m",
|
||||
"icon": "w11p_2.svg",
|
||||
@ -71,6 +85,35 @@ const DefinedSigns = {
|
||||
"offsetY": -3.3264,
|
||||
"height": 1.5
|
||||
},
|
||||
"sign_w13a": {
|
||||
"name": "W13a",
|
||||
"icon": "w13a.svg",
|
||||
"offsetY": -2.01096,
|
||||
"height": 1.4
|
||||
},
|
||||
"sign_w13": {
|
||||
"name": "W13",
|
||||
"icon": "w13.svg",
|
||||
"offsetY": -2.01096,
|
||||
"height": 1.4
|
||||
},
|
||||
"sign_w15_p": {
|
||||
"name": "W15 Right",
|
||||
"icon": "w15_r.svg",
|
||||
},
|
||||
"sign_w15_l": {
|
||||
"name": "W15 Left",
|
||||
"icon": "w15_l.svg"
|
||||
},
|
||||
"sign_w17": {
|
||||
"name": "W17",
|
||||
"icon": "w17.svg"
|
||||
},
|
||||
"w1_": {
|
||||
"name": "W1",
|
||||
"icon": "w1.svg",
|
||||
"offsetY": 3.89
|
||||
},
|
||||
"sign_w4": {
|
||||
"name": "W4",
|
||||
"icon": "w4.svg",
|
||||
@ -116,7 +159,8 @@ const DefinedSigns = {
|
||||
"name": "W8",
|
||||
"icon": "w8.svg",
|
||||
"offsetY": -1.4364,
|
||||
"text": "data",
|
||||
"text": ["fun", "data"],
|
||||
"textFun": (object) => object.prefab_name?.match(/^sign_w8_(\d+)/)?.[1] || null,
|
||||
"textSize": 0.14,
|
||||
"textOffsetX": 1.89,
|
||||
"textOffsetY": 0.9
|
||||
|
||||
@ -25,8 +25,9 @@ export default class Sign extends TrackObject {
|
||||
static isSign(text) {
|
||||
const values = text.split(";");
|
||||
|
||||
const prefabInfo = values[2]?.trim() || "";
|
||||
return prefabInfo.startsWith("sign_");
|
||||
const prefabName = values[2]?.trim() || "";
|
||||
if(prefabName.startsWith("sign_")) return true;
|
||||
if(prefabName.startsWith("w1_")) return true;
|
||||
}
|
||||
|
||||
static fromText(text) {
|
||||
|
||||