aboutsummaryrefslogtreecommitdiff
path: root/advtrains_line_automation/station_editor.lua
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains_line_automation/station_editor.lua')
-rw-r--r--advtrains_line_automation/station_editor.lua88
1 files changed, 55 insertions, 33 deletions
diff --git a/advtrains_line_automation/station_editor.lua b/advtrains_line_automation/station_editor.lua
index 37afa92..3c15c78 100644
--- a/advtrains_line_automation/station_editor.lua
+++ b/advtrains_line_automation/station_editor.lua
@@ -1,8 +1,30 @@
local def
local F = minetest.formspec_escape
-local ifthenelse = ch_core.ifthenelse
+local ch_core = advtrains.lines.ch_core
+--[[
+Jednoduchá funkce, která vyhodnotí condition jako podmínku
+a podle výsledku vrátí buď true_result, nebo false_result.
+]]
+local function ifthenelse(condition, true_result, false_result)
+ if condition then
+ return true_result
+ else
+ return false_result
+ end
+end
local rwt = assert(advtrains.lines.rwt)
+-- Get current translator
+local S = advtrains.lines.translate
+
+-- Singularis-Merge: Emulate certain ch functionality
+local function systemovy_kanal(pname, message)
+ core.chat_send_player(pname, S("[Station Editor]")..message)
+end
+local function prihlasovaci_na_zobrazovaci(prihlasovaci)
+ return prihlasovaci -- no-op. On CH used to colorize the name to reflect the rank of the player
+end
+
local function load_stations()
local result = {}
local by_stn = {}
@@ -187,7 +209,7 @@ local function get_formspec(custom_state)
"table[0.5,1.25;19,5;dopravna;0,KÓD,NÁZEV,#ffffff,SPRAVUJE,VZDÁLENOST,INFO")
for _, st in ipairs(stations) do
local n_tracks = #st.tracks
- table.insert(formspec, ",0,"..F(st.stn)..","..F(st.name)..",#ffffff,"..F(ch_core.prihlasovaci_na_zobrazovaci(st.owner))..","..
+ table.insert(formspec, ",0,"..F(st.stn)..","..F(st.name)..",#ffffff,"..F(prihlasovaci_na_zobrazovaci(st.owner))..","..
F(station_distance_s(custom_state.player_pos, st))..","..n_tracks.." kolej")
if n_tracks < 1 or n_tracks > 4 then
table.insert(formspec, "í")
@@ -214,7 +236,7 @@ local function get_formspec(custom_state)
if st then
stn = F(st.stn)
nazev = F(st.name)
- spravuje = F(ch_core.prihlasovaci_na_zobrazovaci(st.owner))
+ spravuje = F(prihlasovaci_na_zobrazovaci(st.owner))
else
stn, nazev, spravuje = "", "", F(pinfo.viewname)
end
@@ -268,55 +290,55 @@ local function formspec_callback(custom_state, player, formname, fields)
if pinfo.role ~= "admin" or new_owner == nil or new_owner == "" then
new_owner = pinfo.player_name
else
- new_owner = ch_core.jmeno_na_prihlasovaci(new_owner)
+ --new_owner = ch_core.jmeno_na_prihlasovaci(new_owner)
end
if new_stn == nil or new_stn == "" then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: kód nesmí být prázdný!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: kód nesmí být prázdný!")
return
end
local als = advtrains.lines.stations
if als[new_stn] ~= nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: zastávka s kódem "..new_stn.." již existuje!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: zastávka s kódem "..new_stn.." již existuje!")
return
end
als[new_stn] = {name = assert(new_name), owner = assert(new_owner)}
custom_state.stations = nil
update_formspec = true
- ch_core.systemovy_kanal(custom_state.player_name, "Dopravna úspěšně vytvořena.")
+ systemovy_kanal(custom_state.player_name, "Dopravna úspěšně vytvořena.")
elseif fields.ulozit then
local new_stn, new_name, new_owner = fields.stn, fields.name or "", fields.owner
local pinfo = ch_core.normalize_player(player)
local st = custom_state.stations[(custom_state.selection_index or 0) - 1]
if st == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: není vybrána žádná zastávka!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: není vybrána žádná zastávka!")
return
end
local change_stn, change_name = st.stn ~= new_stn, st.name ~= new_name
local change_owner = pinfo.role == "admin" and fields.owner ~= nil and fields.owner ~= "" and
- ch_core.jmeno_na_prihlasovaci(fields.owner) ~= st.owner
+ fields.owner ~= st.owner -- ch_core.jmeno_na_prihlasovaci(fields.owner) ~= st.owner
if not change_stn and not change_name and not change_owner then
- ch_core.systemovy_kanal(custom_state.player_name, "Nic nezměněno.")
+ systemovy_kanal(custom_state.player_name, "Nic nezměněno.")
return
end
local t = advtrains.lines.stations[st.stn]
if t == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: zastávka k úpravě nebyla nalezena! Toto je pravděpodobně vnitřní chyba editoru.")
+ systemovy_kanal(custom_state.player_name, "CHYBA: zastávka k úpravě nebyla nalezena! Toto je pravděpodobně vnitřní chyba editoru.")
return
end
if change_stn then
-- zkontrolovat, že cílový kód je volný
if advtrains.lines.stations[new_stn] ~= nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: zastávka s kódem "..new_stn.." již existuje!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: zastávka s kódem "..new_stn.." již existuje!")
return
end
end
if change_owner then
- t.owner = ch_core.jmeno_na_prihlasovaci(fields.owner)
- ch_core.systemovy_kanal(custom_state.player_name, "Správa zastávky změněna.")
+ t.owner = fields.owner -- ch_core.jmeno_na_prihlasovaci(fields.owner)
+ systemovy_kanal(custom_state.player_name, "Správa zastávky změněna.")
end
if change_name then
t.name = new_name
- ch_core.systemovy_kanal(custom_state.player_name, "Jmeno zastávky změněno.")
+ systemovy_kanal(custom_state.player_name, "Jmeno zastávky změněno.")
end
if change_stn then
advtrains.lines.stations[new_stn] = t
@@ -334,7 +356,7 @@ local function formspec_callback(custom_state, player, formname, fields)
end
end
advtrains.lines.stations[st.stn] = nil
- ch_core.systemovy_kanal(custom_state.player_name, "Kód zastávky změněn, "..count.." bloků kolejí aktualizováno.")
+ systemovy_kanal(custom_state.player_name, "Kód zastávky změněn, "..count.." bloků kolejí aktualizováno.")
end
custom_state.stations = nil
update_formspec = true
@@ -342,26 +364,26 @@ local function formspec_callback(custom_state, player, formname, fields)
local pinfo = ch_core.normalize_player(player)
local st = custom_state.stations[(custom_state.selection_index or 0) - 1]
if st == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: není vybrána žádná zastávka!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: není vybrána žádná zastávka!")
return
end
if st.tracks[1] ~= nil then
- ch_core.systemovy_kanal(custom_state.player_name, "Nelze smazat zastávku, k níž jsou přiřazeny koleje!")
+ systemovy_kanal(custom_state.player_name, "Nelze smazat zastávku, k níž jsou přiřazeny koleje!")
return
end
local t = advtrains.lines.stations[st.stn]
if t == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: zastávka k úpravě nebyla nalezena! Toto je pravděpodobně vnitřní chyba editoru.")
+ systemovy_kanal(custom_state.player_name, "CHYBA: zastávka k úpravě nebyla nalezena! Toto je pravděpodobně vnitřní chyba editoru.")
return
end
advtrains.lines.stations[st.stn] = nil
- ch_core.systemovy_kanal(custom_state.player_name, "Zastávka úspěšně smazána.")
+ systemovy_kanal(custom_state.player_name, "Zastávka úspěšně smazána.")
custom_state.stations = nil
update_formspec = true
elseif fields.jrad then
local st = custom_state.stations[(custom_state.selection_index or 0) - 1]
if st == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: není vybrána žádná zastávka!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: není vybrána žádná zastávka!")
return
end
advtrains.lines.show_jr_formspec(player, nil, assert(st.stn))
@@ -369,31 +391,31 @@ local function formspec_callback(custom_state, player, formname, fields)
elseif fields.priradit_kolej then
local st = custom_state.stations[(custom_state.selection_index or 0) - 1]
if st == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: není vybrána žádná zastávka!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: není vybrána žádná zastávka!")
return
end
local linevar_to_change = custom_state.linevars[custom_state.current_linevar]
if linevar_to_change == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: vnitřní chyba 1!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: vnitřní chyba 1!")
return
end
local linevar_def = advtrains.lines.try_get_linevar_def(linevar_to_change.linevar, linevar_to_change.stn)
if linevar_def == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: vnitřní chyba 2!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: vnitřní chyba 2!")
return
end
local stop = linevar_def.stops[linevar_to_change.linevar_index]
if stop == nil then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: vnitřní chyba 3!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: vnitřní chyba 3!")
return
end
if stop.stn ~= st.stn then
- ch_core.systemovy_kanal(custom_state.player_name, "CHYBA: vnitřní chyba 4!")
+ systemovy_kanal(custom_state.player_name, "CHYBA: vnitřní chyba 4!")
return
end
stop.track = tostring(fields.kolej)
linevar_to_change.track = stop.track
- ch_core.systemovy_kanal(custom_state.player_name, "Přiřazená kolej úspěšně nastavena.")
+ systemovy_kanal(custom_state.player_name, "Přiřazená kolej úspěšně nastavena.")
update_formspec = true
elseif fields.quit then
return
@@ -835,7 +857,7 @@ local function get_jr_formspec(custom_state)
end
if not custom_state.force_unprivileged then
- if ch_core.get_player_role(custom_state.player_name) == "admin" then
+ if core.check_player_privs(name, {protection_bypass=true}) then -- TODO make a lines admin privilege
access_level = "admin"
elseif custom_state.player_name == node_owner or custom_state.player_name == stn_owner then
access_level = "owner"
@@ -876,20 +898,20 @@ local function get_jr_formspec(custom_state)
if access_level ~= "admin" then
-- player/owner
table.insert(formspec, "label[0.5,1.65;vlastník/ice j. řádu: ")
- table.insert(formspec, ch_core.prihlasovaci_na_zobrazovaci(node_owner))
+ table.insert(formspec, prihlasovaci_na_zobrazovaci(node_owner))
if stn_owner ~= nil then
table.insert(formspec, " | dopravnu spravuje: ")
- table.insert(formspec, ch_core.prihlasovaci_na_zobrazovaci(stn_owner))
+ table.insert(formspec, prihlasovaci_na_zobrazovaci(stn_owner))
end
table.insert(formspec, "]")
else
-- admin only
table.insert(formspec, "label[0.5,1.65;vlastník/ice:]"..
"field[2.75,1.25;5,0.75;owner;;")
- table.insert(formspec, ch_core.prihlasovaci_na_zobrazovaci(node_owner))
+ table.insert(formspec, prihlasovaci_na_zobrazovaci(node_owner))
table.insert(formspec, "]button[8,1.25;3,0.75;setowner;nastavit]")
if stn_owner ~= nil then
- table.insert(formspec, "label[11.25,1.65;dopravnu spravuje: "..ch_core.prihlasovaci_na_zobrazovaci(stn_owner).."]")
+ table.insert(formspec, "label[11.25,1.65;dopravnu spravuje: "..prihlasovaci_na_zobrazovaci(stn_owner).."]")
end
end
else
@@ -976,7 +998,7 @@ local function jr_formspec_callback(custom_state, player, formname, fields)
end
if fields.setowner and custom_state.pos ~= nil and is_jr_node_name(core.get_node(custom_state.pos).name) then
local meta = core.get_meta(custom_state.pos)
- local jm = ch_core.jmeno_na_existujici_prihlasovaci(fields.owner)
+ local jm = fields.owner -- ch_core.jmeno_na_existujici_prihlasovaci(fields.owner)
if jm ~= nil then
meta:set_string("owner", jm)
else