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) {