diff options
author | orwell <orwell@bleipb.de> | 2025-05-27 21:03:14 +0200 |
---|---|---|
committer | orwell <orwell@bleipb.de> | 2025-05-27 21:03:14 +0200 |
commit | 8506dd2825b715293138976a5ad1fa11a46206a7 (patch) | |
tree | 1f48c1dc03c3bbc6ed6762bd04d10e543a3a580c /advtrains_interlocking/route_prog.lua | |
parent | 2a9891577c1b00068cc4ec858c7dc6c5196f0a2b (diff) | |
parent | adc01a0bba29b40278e45c50caa954c435374f7b (diff) | |
download | advtrains-8506dd2825b715293138976a5ad1fa11a46206a7.tar.gz advtrains-8506dd2825b715293138976a5ad1fa11a46206a7.tar.bz2 advtrains-8506dd2825b715293138976a5ad1fa11a46206a7.zip |
Merge branch 'master' into cesky-hvozd
Throw away most of the changes in everything except line_automation.
Merge line_automation changes between CH and master
Diffstat (limited to 'advtrains_interlocking/route_prog.lua')
-rw-r--r-- | advtrains_interlocking/route_prog.lua | 96 |
1 files changed, 49 insertions, 47 deletions
diff --git a/advtrains_interlocking/route_prog.lua b/advtrains_interlocking/route_prog.lua index 76dad28..81aa133 100644 --- a/advtrains_interlocking/route_prog.lua +++ b/advtrains_interlocking/route_prog.lua @@ -29,19 +29,17 @@ end local markerent = {} minetest.register_entity("advtrains_interlocking:routemarker", { - initial_properties = { - visual = "mesh", - mesh = "trackplane.b3d", - textures = {"at_il_route_set.png"}, - collisionbox = {-1,-0.5,-1, 1,-0.4,1}, - visual_size = {x=10, y=10}, - static_save = false, - }, + visual = "mesh", + mesh = "trackplane.b3d", + textures = {"at_il_route_set.png"}, + collisionbox = {-1,-0.5,-1, 1,-0.4,1}, + visual_size = {x=10, y=10}, on_punch = function(self) self.object:remove() end, get_staticdata = function() return "STATIC" end, on_activate = function(self, sdata) if sdata=="STATIC" then self.object:remove() end end, + static_save = false, }) @@ -125,11 +123,11 @@ the distant signal aspect is determined as DANGER. ]]-- local function chat(pname, message) - minetest.chat_send_player(pname, "[Programování cesty] "..message) + minetest.chat_send_player(pname, "[Route programming] "..message) end local function clear_lock(locks, pname, pts) locks[pts] = nil - chat(pname, pts.." již není ovlivněn/a, když je tato cesta nastavena.") + chat(pname, pts.." is no longer affected when this route is set.") end local function otherside(s) @@ -176,8 +174,11 @@ function advtrains.interlocking.visualize_route(origin, route, context, tmp_lcks end -- display locks for pts, state in pairs(v.locks) do - local pos = assert(advtrains.decode_pos(pts)) - routesprite(context, pos, "fix"..k..pts, "at_il_route_lock.png", "Zajištěna ve stavu '"..state.."' po cestě "..route.name.." dokud není úsek #"..k.." uvolněn.") + local pos = minetest.string_to_pos(pts) + if not pos then + pos = advtrains.decode_pos(pts) + end + routesprite(context, pos, "fix"..k..pts, "at_il_route_lock.png", "Fixed in state '"..state.."' by route "..route.name.." until segment #"..k.." is freed.") end end @@ -204,7 +205,7 @@ function advtrains.interlocking.visualize_route(origin, route, context, tmp_lcks -- display locks set by player for pts, state in pairs(tmp_lcks) do local pos = advtrains.decode_pos(pts) - routesprite(context, pos, "fixp"..pts, "at_il_route_lock_edit.png", "Zajištěna ve stavu '"..state.."' cestou "..route.name.." (levý klik pro uvolnění)", + routesprite(context, pos, "fixp"..pts, "at_il_route_lock_edit.png", "Fixed in state '"..state.."' by route "..route.name.." (punch to unfix)", function() clear_lock(tmp_lcks, pname, pts) end) end end @@ -215,7 +216,7 @@ local player_rte_prog = {} function advtrains.interlocking.init_route_prog(pname, sigd, default_route) if not minetest.check_player_privs(pname, "interlocking") then - minetest.chat_send_player(pname, attrans("Insufficient privileges to use this!")) + minetest.chat_send_player(pname, "Insufficient privileges to use this!") return end local rp = { @@ -239,7 +240,7 @@ function advtrains.interlocking.init_route_prog(pname, sigd, default_route) end player_rte_prog[pname] = rp advtrains.interlocking.visualize_route(sigd, rp.route, "prog_"..pname, rp.tmp_lcks, pname) - minetest.chat_send_player(pname, "Režim programování cesty je aktivní. Klikejte levým tlačítkem na TCB pro přidání úseků a na výhybky pro jejich uzamčení.") + minetest.chat_send_player(pname, "Route programming mode active. Punch TCBs to add route segments, punch turnouts to lock them.") end local function get_last_route_item(origin, route) @@ -252,32 +253,33 @@ end local function do_advance_route(pname, rp, sigd, tsref) table.insert(rp.route, {next = sigd, locks = rp.tmp_lcks}) rp.tmp_lcks = {} - chat(pname, "Úsek '"..(tsref and (tsref.name or "") or "--konec zab.--").."' přidán na cestu.") + chat(pname, "Added track section '"..(tsref and (tsref.name or "") or "--EOI--").."' to the route.") end local function finishrpform(pname) local rp = player_rte_prog[pname] if not rp then return end - local form = "size[7,6]label[0.5,0.5;Dokončit programování cesty]" + local form = "size[7,6]label[0.5,0.5;Finish programming route]" local terminal = get_last_route_item(rp.origin, rp.route) if terminal then local term_tcbs = advtrains.interlocking.db.get_tcbs(terminal) if term_tcbs.signal then - form = form .. "label[0.5,1.5;Cesta končí na signalizaci:]" - form = form .. "label[0.5,2 ;"..term_tcbs.signal_name.."]" + local signalname = (term_tcbs.signal_name or "") .. sigd_to_string(terminal) + form = form .. "label[0.5,1.5;Route ends at signal:]" + form = form .. "label[0.5,2 ;"..signalname.."]" else - form = form .. "label[0.5,1.5;VAROVÁNÍ: Cesta nekončí na signalizaci.]" - form = form .. "label[0.5,2 ;Cesty většinou končí na signlizacích.]" - form = form .. "label[0.5,2.5;Nejste-li si jistý/á, zrušte programování!]" + form = form .. "label[0.5,1.5;WARNING: Route does not end at a signal.]" + form = form .. "label[0.5,2 ;Routes should in most cases end at signals.]" + form = form .. "label[0.5,2.5;Cancel if you are unsure!]" end else - form = form .. "label[0.5,1.5;Cesta vede do]" - form = form .. "label[0.5,2 ;nezabezpečené oblasti]" + form = form .. "label[0.5,1.5;Route leads into]" + form = form .. "label[0.5,2 ;non-interlocked area]" end - form = form.."field[0.8,3.5;5.2,1;name;Zadejte název cesty;]" - form = form.."button_exit[0.5,4.5; 5,1;save;Uložit cestu]" + form = form.."field[0.8,3.5;5.2,1;name;Enter Route Name;]" + form = form.."button_exit[0.5,4.5; 5,1;save;Save Route]" minetest.show_formspec(pname, "at_il_routepf", form) @@ -325,7 +327,7 @@ local function check_advance_valid(tcbpos, rp) local adv_tcbs = advtrains.interlocking.db.get_tcbs(this_sigd) local next_tsid = adv_tcbs.ts_id local can_over, over_ts, next_tc_bs = false, nil, nil - local cannotover_rsn = "Rozbíhavý úsek (>2 TCB)" + local cannotover_rsn = "Next section is diverging (>2 TCBs)" if next_tsid then -- you may not advance over EOI. While this is technically possible, -- in practise this just enters an unnecessary extra empty route item. @@ -333,7 +335,7 @@ local function check_advance_valid(tcbpos, rp) next_tc_bs = over_ts.tc_breaks can_over = #next_tc_bs <= 2 else - cannotover_rsn = "Konec zabezpečené oblasti" + cannotover_rsn = "End of interlocking" end local over_sigd = nil @@ -375,29 +377,29 @@ local function show_routing_form(pname, tcbpos, message) -- show nothing at all -- In all cases, Discard and Backtrack buttons needed. - local form = "size[7,9.5]label[0.5,0.5;Pokračovat/ukončit cestu]" + local form = "size[7,9.5]label[0.5,0.5;Advance/Complete Route]" if message then form = form .. "label[0.5,1;"..message.."]" end if advance_valid and not is_endpoint then - form = form.. "label[0.5,1.8;Pokračovat s cestou do dalšího úseku]" + form = form.. "label[0.5,1.8;Advance to next route section]" form = form.."image_button[0.5,2.2; 5,1;at_il_routep_advance.png;advance;]" form = form.. "label[0.5,3.5;-------------------------]" else - form = form.. "label[0.5,2.3;Tato TCB není vhodná]" - form = form.. "label[0.5,2.8;pro pokračování cesty.]" + form = form.. "label[0.5,2.3;This TCB is not suitable as]" + form = form.. "label[0.5,2.8;route continuation.]" end if advance_valid or is_endpoint then - form = form.. "label[0.5,3.8;Ukonči cestu ZDE]" + form = form.. "label[0.5,3.8;Finish route HERE]" form = form.."image_button[0.5, 4.2; 5,1;at_il_routep_end_here.png;endhere;]" if can_over then - form = form.. "label[0.5,5.3;Ukončit cestu na konci NÁSLEDUJÍCÍHO úseku]" + form = form.. "label[0.5,5.3;Finish route at end of NEXT section]" form = form.."image_button[0.5,5.7; 5,1;at_il_routep_end_over.png;endover;]" else - form = form.. "label[0.5,5.3;Pokračování do následujícího úseku]" - form = form.. "label[0.5,5.8;zde není možné.]" + form = form.. "label[0.5,5.3;Advancing over next section is]" + form = form.. "label[0.5,5.8;impossible at this place.]" if cannotover_rsn then form = form.. "label[0.5,6.3;"..cannotover_rsn.."]" end @@ -406,9 +408,9 @@ local function show_routing_form(pname, tcbpos, message) form = form.. "label[0.5,7;-------------------------]" if #rp.route > 0 then - form = form.."button[0.5,7.4; 5,1;retract;Zpět o jeden úsek]" + form = form.."button[0.5,7.4; 5,1;retract;Step back one section]" end - form = form.."button[0.5,8.4; 5,1;cancel;Zrušit programování cesty]" + form = form.."button[0.5,8.4; 5,1;cancel;Cancel route programming]" minetest.show_formspec(pname, "at_il_rprog_"..minetest.pos_to_string(tcbpos), form) end @@ -419,7 +421,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local tcbpts = string.match(formname, "^at_il_rprog_([^_]+)$") local tcbpos if tcbpts then - tcbpos = assert(minetest.string_to_pos(tcbpts)) + tcbpos = minetest.string_to_pos(tcbpts) end if tcbpos then -- RPROG form @@ -459,12 +461,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end rp.tmp_locks = rp.route[#rp.route].locks rp.route[#rp.route] = nil - chat(pname, "Úsek cesty "..(#rp.route+1).." odstraněn.") + chat(pname, "Route section "..(#rp.route+1).." removed.") end if fields.cancel then player_rte_prog[pname] = nil advtrains.interlocking.clear_visu_context("prog_"..pname) - chat(pname, "Cesta zahozena.") + chat(pname, "Route discarded.") minetest.close_formspec(pname, formname) return end @@ -485,13 +487,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local rp = player_rte_prog[pname] if rp then if #rp.route <= 0 then - chat(pname, "Bez cíle nemohu naprogramovat cestu.") + chat(pname, "Cannot program route without a target") return end local tcbs = advtrains.interlocking.db.get_tcbs(rp.origin) if not tcbs then - chat(pname, "Původní TCB se během programování ztratilo. Zkuste cestu naprogramovat znovu.") + chat(pname, "The origin TCB has become unknown during programming. Try again.") return end @@ -505,7 +507,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) advtrains.interlocking.clear_visu_context("prog_"..pname) player_rte_prog[pname] = nil - chat(pname, "Cesta úspěšně naprogramována.") + chat(pname, "Successfully programmed route.") advtrains.interlocking.show_route_edit_form(pname, rp.origin, #tcbs.routes) return @@ -528,10 +530,10 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) local meta = minetest.get_meta(pos) local tcbpts = meta:get_string("tcb_pos") if tcbpts == "" then - chat(pname, "Tato TCB není nastavena, nejprve k ní musíte přiřadit kolej") + chat(pname, "This TCB is unconfigured, you first need to assign it to a rail") return end - local tcbpos = assert(minetest.string_to_pos(tcbpts)) + local tcbpos = minetest.string_to_pos(tcbpts) -- show formspec @@ -551,7 +553,7 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) else local state = advtrains.getstate(pos) rp.tmp_lcks[pts] = state - chat(pname, pts.." je držena ve stavu "..state.." , když je tato cesta nastavena a uvolněna.") + chat(pname, pts.." is held in "..state.." position when this route is set and freed ") end advtrains.interlocking.visualize_route(rp.origin, rp.route, "prog_"..pname, rp.tmp_lcks, pname) return |