From 3e82d1627b5c569cc71afd5c6d46700ffa16709b Mon Sep 17 00:00:00 2001
From: izawartka <59137928+izawartka@users.noreply.github.com>
Date: Thu, 12 Jun 2025 13:16:53 +0200
Subject: [PATCH] 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
---
public/assets/signs/w1.svg | 7 +++++
public/assets/signs/w13.svg | 14 ++++++++++
public/assets/signs/w13a.svg | 16 ++++++++++++
public/assets/signs/w15_l.svg | 6 +++++
public/assets/signs/w15_r.svg | 6 +++++
public/assets/signs/w17.svg | 4 +++
public/assets/signs/w28.svg | 5 ++++
src/model/defined-signs.js | 48 +++++++++++++++++++++++++++++++++--
src/model/sign.js | 5 ++--
9 files changed, 107 insertions(+), 4 deletions(-)
create mode 100644 public/assets/signs/w1.svg
create mode 100644 public/assets/signs/w13.svg
create mode 100644 public/assets/signs/w13a.svg
create mode 100644 public/assets/signs/w15_l.svg
create mode 100644 public/assets/signs/w15_r.svg
create mode 100644 public/assets/signs/w17.svg
create mode 100644 public/assets/signs/w28.svg
diff --git a/public/assets/signs/w1.svg b/public/assets/signs/w1.svg
new file mode 100644
index 0000000..23748af
--- /dev/null
+++ b/public/assets/signs/w1.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/public/assets/signs/w13.svg b/public/assets/signs/w13.svg
new file mode 100644
index 0000000..e5afbb8
--- /dev/null
+++ b/public/assets/signs/w13.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/public/assets/signs/w13a.svg b/public/assets/signs/w13a.svg
new file mode 100644
index 0000000..33d8b96
--- /dev/null
+++ b/public/assets/signs/w13a.svg
@@ -0,0 +1,16 @@
+
+
diff --git a/public/assets/signs/w15_l.svg b/public/assets/signs/w15_l.svg
new file mode 100644
index 0000000..07d8c71
--- /dev/null
+++ b/public/assets/signs/w15_l.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/public/assets/signs/w15_r.svg b/public/assets/signs/w15_r.svg
new file mode 100644
index 0000000..dc31289
--- /dev/null
+++ b/public/assets/signs/w15_r.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/public/assets/signs/w17.svg b/public/assets/signs/w17.svg
new file mode 100644
index 0000000..271f19a
--- /dev/null
+++ b/public/assets/signs/w17.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/public/assets/signs/w28.svg b/public/assets/signs/w28.svg
new file mode 100644
index 0000000..c00c186
--- /dev/null
+++ b/public/assets/signs/w28.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/src/model/defined-signs.js b/src/model/defined-signs.js
index 6595d1d..32149bb 100644
--- a/src/model/defined-signs.js
+++ b/src/model/defined-signs.js
@@ -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
diff --git a/src/model/sign.js b/src/model/sign.js
index 405800f..18a5533 100644
--- a/src/model/sign.js
+++ b/src/model/sign.js
@@ -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) {