Commit Graph

888 Commits

Author SHA1 Message Date
Maverick2797 3d2d19f6f7 Add setting to bypass coupler type checks when coupling
Allows a server to disable the coupler checks when multiple coupler types are present, making everything effectively a universal coupler
2024-11-09 22:33:18 +01:00
Maverick2797 19d8e8c1a7 Discard running interrupt and schedule events when LuaATC components are removed 2024-11-09 22:32:51 +01:00
Maverick2797 715efe2293 Add get_fc_index() fucntion 2024-11-09 22:32:23 +01:00
Maverick2797 322fc31e74 Fix get_fc concat when fc = nil 2024-11-09 22:31:56 +01:00
1F616EMO d83d06ecdd Add "New From Route" function into route editing form
This patch allows creating new routes based on what was done on another route. This can be useful to fix minor mistakes on a route, or to create similar routes. Note that the route buffer created "steps back" one section, but with turnouts kept.

The new button is placed above the "Save ARS" button - I know it is ugly, so please suggest a better place for it.
2024-11-09 22:18:14 +01:00
1F616EMO 8b9eb2a96d Fix update_route receiving invalid route ID in after() 2024-11-09 22:16:39 +01:00
1F616EMO e536709041 Fix depercated functions 2024-11-09 22:15:06 +01:00
Y. Wang b075d8e333 Implement staticdata for trains
This patch exposes train.staticdata that can be used by other modders to
save data in trains across restarts. It additionally exposes two new
APIs for modders where this is relevant:

* advtrains.te_register_on_couple(function(init_train, stat_train)):
  registers a callback for train coupling, where stat_train is couple
  into init_train and is subsequently removed. This callback is run
  before the actual coupling takes place; in particular, it is run
  before stat_train is removed.
* advtrains.te_register_on_decouple(function(train, newtrain, index)):
  registers a callback for train decoupling, where newtrain is created
  by splitting the train at the given index (the wagon at the index is
  part of the new train). This callback is run after decoupling takes
  place.

advtrains.te_register_on_decouple(function
2024-11-09 22:10:06 +01:00
Y. Wang 66868e2eef Address wagon aliasing issues
As it turns out, not fully testing new features is not necessarily a
good idea ...

This patch follows up 1F616EMO's patch by
* Making get_wagon_prototype return the resolved alias,
* Handling recursive wagon alises (in particular, loops), and
* Adding (partial) unittest for the wagon aliasing system. [v2]: The
testcases are complemented a bit more to cover situations where the
alias resolution system should return nil.

[v2]: This patch should hopefully also warn about not spawning wagons.
Note that this only warns about the missing wagon entity and does _not_
actually fix the issue.

How to test:
* In a world with both advtrains_train_subway and advtrains_train_japan
  enabled, place a subway wagon, a Japanese engine, and a regular
  Japanese wagon.
* Add the test mod to the world; do NOT remove advtrains_train_japan.
* Restart the world. Notice that the Japanese wagons still appear as
  Japanese wagons despite being aliased to subway wagons.
* Restart the world without the advtrains_train_japan mod. Notice that
  the engine appears as the subway wagon while the regular Japanese
  wagon appears as the wagon placeholder. [v2]: Also note that the
  warning message about the missing wagon prototype still mentions the
  regular Japanese wagon.
* Restart the world again with the advtrains_train_japan mod. Notice
  that both type of Japanese wagons reappear as Japanese wagons.
* Observe that unittests work.

Test mod:
advtrains.register_wagon_alias("advtrains:engine_japan", "advtrains:subway_wagon")
advtrains.register_wagon_alias("advtrains:wagon_japan", "advtrains:wagon_japan")
2024-11-09 22:09:00 +01:00
1F616EMO 86e80e4cfb Fix crashing when train hitting objects without armor group 2024-11-09 22:06:38 +01:00
1F616EMO 671cb16e95 Allow operate on_rightclick nodes with track placers and wagon placers
Press sneak to force default behavior.
2024-11-09 22:05:46 +01:00
1F616EMO 63f81cb204 Update influence point markers, and allow right-clicking them 2024-11-09 22:04:13 +01:00
1F616EMO ca4084df86 Allow manually sorting of signal soutes
This patch adds two buttons to the signal UI for swapping routes in the list of routes. To prevent conflicts, this operation is only possible when there is no route set.
2024-11-09 22:03:02 +01:00
1F616EMO 6d3c5a5f38 Wagon iterator, lookup by id, and use them in code 2024-11-09 22:00:33 +01:00
orwell 96f4ac7f6c Merge remote-tracking branch 'origin/l10n' 2024-11-09 21:55:52 +01:00
Y. Wang 35167fe928 Update LuaATC documentation
* Fix broken link to RWT API documentation.
* w_speed is no longer relevant since the 2021 new-ks update.
2024-11-09 21:55:35 +01:00
Tanavit 943505a797
Messages french translation update
# Messages french translation update.
# To be applied to commit eb0c5b7862 on l10n branch
2024-11-05 08:27:21 +01:00
Y. Wang eb0c5b7862
Various translation improvements 2024-11-04 17:17:52 +01:00
Y. Wang 425b0993d3
Autogenerate .tr files from .po files 2024-11-04 17:17:51 +01:00
ywang bed66e0f90
Rework translation system to use PO files
The French translations are provided by Tanavit. Unfortunately I was not
able to keep this addition as a separate commit as the translation file
was originally added as a .tr file that I then converted to .po file in
the meantime.

Also note that this commit is created from squashing 20+ commits from
the l10n branch that preceded the transition to PO files. In addition to
changes to the locale files (which were all included in the single
commit for transitioning to PO files), these commits also included code
that has now become obsolete for l10n work. In particular, it included a
GUI program written in Tcl to edit .tr files; this program can now be
found in the following repo: https://codeberg.org/y5nw/mt_tr_editor

Co-authored-by: Tanavit <tanavit@posto.ovh>
2024-11-04 17:17:08 +01:00
Y. Wang 9ada994d5b Avoid unnecessarily updating the driver HUD
This patch avoids sending the driver HUD if it contains the same text
that was previously sent.
2024-09-13 19:56:40 +02:00
1F616EMO 882108e8bf Alias for wagon types 2024-09-03 00:04:04 +02:00
1F616EMO fe7e25c995 Add direct recipe for every orientation of wallmounted signals 2024-09-02 22:51:43 +02:00
Y. Wang dd883c5b5e Clear tcbs.route_rsn when a route is set
This appears to fix the issue where route_rsn is not cleared and later
shown on the train HUD even when the route is set.

Note that this only works if the route is (successfully) set after this
patch is applied - it does not clear route_rsn for routes that are
already set.

How to test:
* Set a conflicting route for the train.
* Set a route for the train. Note that a message appears on the train
  HUD explaining that the route cannot be set (this is also the current
  behavior without the patch).
* Cancel the conflicting route. Note that the message on the train HUD
  is cleared.
2024-09-02 22:50:22 +02:00
1F616EMO fcfe21f197 Fix Ks Shunting Signal collision box 2024-09-02 22:25:51 +02:00
Maverick2797 852e2f4219 LuaATC add trainparts(train_id)
Returns a copy of the trainparts table to allow tracking individual wagon ids
Also fixed a couple of file permissions from previous commits
2024-09-02 22:25:05 +02:00
Maverick2797 55108ae38e LuaATC set_fc(): add argument to reset fc index to 1 2024-09-02 22:22:38 +02:00
Maverick2797 3b83580fac Fix LuaATC set_fc() only working on loaded entites 2024-09-02 22:20:42 +02:00
erstazi 0c7e0f322b Move the Train ID information to a textarea[] without a name attribute so it remains transparent and the player can copy the Train ID. 2024-09-02 22:19:48 +02:00
gpcf 46fbf89acf Fix privilege check when using the PC naming tool
This fix prevents malicious modified clients from using the PC tool
without the necessary privileges.
2024-08-11 23:22:36 +02:00
Maverick2797 9d7cec6151 Add Wagon Properties Tool
Also added the Wagon ID to the Wagon Properties formspec
2024-08-09 14:15:42 +02:00
gpcf 45e5ad3b37 Fix boardcom train id display, add command to teleport to train by id 2024-08-08 23:53:29 +02:00
erstazi 3526fc2e4a Adding Train ID to Onboard Computer formspec so we know what the Train ID is without LuaATC 2024-08-08 23:42:07 +02:00
gpcf 2458e986e8 Fix minetest server test run 2024-08-08 23:12:19 +02:00
Y. Wang e9aad541cc Fix incorrect speed indicator; include routing info in text HUD 2024-08-08 22:48:23 +02:00
Y. Wang 0bfc7bbe09 Rework graphical train HUD code
- A basic texture manipulation API is added; currently this is only a
  (selected) subset of texture modifiers provided by MT; the goal is to
  avoid writing (potentially incorrect) texture strings by hand;
- The graphical HUD code is cleaned up; in particular, most code used
  for generating texture patterns are moved to texture.lua so that the
  code can be used outside of the HUD;
- Inactive elements are given the darkslategray background.

A basic unittest is added; however, it needs to be expanded for better
coverage.

Reported-by: Lars Müller <appgurulars@gmx.de>
2024-08-08 22:48:23 +02:00
orwell 4cfd07e992 Remove superfluous train_id check from reverse_lookup
Reported by Sebastien F4GRX, thank you!
2024-08-01 22:13:26 +02:00
Maverick2797 216f28e51a Fix set_aspect()
Actually send aspect to advtrains.interlocking.signal_set_aspect() from LuaATC set_aspect()
2024-08-01 22:03:44 +02:00
Blockhead 7c4f1377e4 Fix section_occupancy: Return empty table
Fixes the functioning of the LuaATC function section_occupancy in
the presence of no trains.

Currently, if there is no train in the section,
advtrains.interlocking.db.get_ts will return a table with a nil entry.
When that nil value is passed to table.copy, Minetest throws out an error.
Instead of passing nil to table.copy, just make a new empty table.
2024-08-01 22:02:50 +02:00
1F616EMO a820318ecf Fix crossing bell positional stereo 2024-08-01 22:01:54 +02:00
1F616EMO ae394a43b8 Remove TCB marker on TCB removal
This patch fixes the following problem:

* TCB marker is not removed on TCB removal
* TCB marker is recreated on removal
2024-08-01 21:59:41 +02:00
orwell 0a51d57138 Fix for broken get_trains_at, fixing LuaATC/Lines Scheduler execution 2024-05-06 20:20:36 +02:00
Y. Wang 64776ba60e Fix use_texture_alpha for tracks
The use of textures with transparent pixels (for the default tracks: the
"features" on the track) without specifying use_texture_alpha (at least
for the mesh drawtype) has been deprecated in a PR from August 2020[1]
(i.e. since 5.4.0[2]) and removed in the latest dev version[3]. As a
consequence, regular tracks are now rendered with black markers at the
same position where e.g. the blue (Lua)ATC marker would be found.

This commit fixes the issue by enabling use_texture_alpha by default for
all tracks.

[1] https://github.com/minetest/minetest/pull/10122
[2] https://dev.minetest.net/Changelog#5.3.0_.E2.86.92_5.4.0
[3] https://github.com/minetest/minetest/pull/13929
2024-02-25 16:27:30 +01:00
gpcf b28ceaa2b4 Add register_function command so mods can register their own functons, low-level interface for departure boards 2024-02-06 23:13:13 +01:00
orwell 2ea4a8cff1 Add chatcommand and luaatc function to get global_slowdown 2024-02-06 23:06:38 +01:00
orwell 9fac1db45f Set maximum train length and prevent coupling if it would exceed 2023-12-20 00:20:56 +01:00
orwell96 2884ed3e27 advtrains_techage: Liquid infotext display needs to be added in core 2023-07-20 21:36:06 +02:00
orwell96 8b5903a729 Fix path_invalidate_ahead after recent commit 2023-07-01 22:37:09 +02:00
Maverick2797 21ed1d23b5 Turn loading tracks into loading ramps when within the loaded area
- Partially addresses Hemiptera #165 / Notabug #6
 - Will recalculate wagon textures when the inventory is modified
 - Only acts as a loading ramp when in a loaded area.
 - Retains previous flood loading of entire train when area unloaded
2023-06-24 21:34:56 +02:00
orwell96 2d7640d424 Occupation system: store multiple indices for the same train, introduce reverse_lookup_sel() to select appropriate index out of multiple based on a heuristic 2023-06-24 14:37:52 +02:00