From d5eb55713e5df6fa4dd074ebf6ee25b64a9e7fff Mon Sep 17 00:00:00 2001 From: Singularis Date: Thu, 26 Dec 2024 14:30:19 +0100 Subject: [advtrains_line_automation] přidána funkce na zobrazení posledních jízd na dané variantě linky MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - [advtrains_line_automation] cílová stanice se na vlaku nově zobrazuje velkými písmeny --- advtrains_line_automation/line_functions.lua | 58 +++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'advtrains_line_automation/line_functions.lua') diff --git a/advtrains_line_automation/line_functions.lua b/advtrains_line_automation/line_functions.lua index b25182d..ba1b360 100644 --- a/advtrains_line_automation/line_functions.lua +++ b/advtrains_line_automation/line_functions.lua @@ -29,6 +29,12 @@ local last_passages = {--[[ } ]]} +local diakritika_na_velka = { + ["á"] = "Á", ["ä"] = "Ä", ["č"] = "Č", ["ď"] = "Ď", ["é"] = "É", ["Ě"] = "Ě", ["Í"] = "Í", ["ĺ"] = "Ĺ", ["ľ"] = "Ľ", + ["ň"] = "Ň", ["ó"] = "Ó", ["ô"] = "Ô", ["ŕ"] = "Ŕ", ["ř"] = "Ř", ["š"] = "Š", ["ť"] = "Ť", ["ú"] = "Ú", ["ů"] = "Ů", + ["ý"] = "Ý", ["ž"] = "Ž", +} + local debug_print_i = 0 -- LOCAL funkce: @@ -49,6 +55,24 @@ local function get_station_name(stn) end end +local function na_velka_pismena(s) + local l = #s + local i = 1 + local res = "" + local c + while i <= l do + c = diakritika_na_velka[s:sub(i, i + 1)] + if c then + res = res .. c + i = i + 2 + else + res = res .. s:sub(i, i) + i = i + 1 + end + end + return string.upper(res) +end + --[[ -- Vrací index následujícího výskytu 'stn' v seznamu zastávek podle linevar_def. -- Vrací i skryté zastávky, ale ne vypnuté. @@ -96,7 +120,13 @@ local function line_start(train, stn, departure_rwtime) ls.linevar_dep = departure_rwtime ls.linevar_last_dep = departure_rwtime ls.linevar_last_stn = stn - train.text_outside = al.get_line_description(linevar_def, {line_number = true, last_stop = true, last_stop_prefix = "", train_name = true}) + train.text_outside = al.get_line_description(linevar_def, { + line_number = true, + last_stop = true, + last_stop_prefix = "", + last_stop_uppercase = true, + train_name = true, + }) -- print("DEBUG: line_start(): "..dump2({train_id = train.id, line_status = ls})) return true end @@ -255,6 +285,7 @@ end first_stop = bool or nil, -- zahrnout do popisu název výchozí zastávky? nil => false last_stop = bool or nil, -- zahrnout do popisu název cílové zastávky? nil => true last_stop_prefix = string or nil, -- text před název cílové zastávky; nil => "⇒ " + last_stop_uppercase = bool or nil, -- je-li true, název cílové zastávky se před uvedením převede na velká písmena train_name = bool or nil, -- zahrnout do popisu jméno vlaku, je-li k dispozici; nil => false train_name_prefix = string or nil, -- text před jméno vlaku; nil => "\n" } @@ -281,6 +312,9 @@ function al.get_line_description(linevar_def, options) local terminus_index, terminus_data = al.get_terminus(linevar_def, 1, false) if terminus_index ~= nil then s3 = get_station_name(terminus_data.stn) + if options.last_stop_uppercase then + s3 = na_velka_pismena(s3) + end end s3 = (options.last_stop_prefix or "⇒ ")..s3 else @@ -691,6 +725,28 @@ function al.linevar_decompose(linevar) return parts[1], parts[2] or "", parts[3] or "" end +--[[ + Vrací: + a) pokud linevar existuje a má průjezdy: + passages, stops: + {{[1] = rwtime, ...}...}, {"kód", "název"}...} + b) jinak: + nil, nil +]] +function al.get_last_passages(linevar_def) + local lp = last_passages[linevar_def.name] + if linevar_def ~= nil and lp ~= nil and lp[1] ~= nil then + local passages, stops = {}, {} + for i, stop in ipairs(linevar_def.stops) do + stops[i] = {stop.stn, get_station_name(stop.stn)} + end + for i = 1, #lp do + passages[i] = table.copy(lp[i]) + end + return passages, stops + end +end + --[[ DEBUG: local debug_print = {} function debug_print.print() -- cgit v1.2.3