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.
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
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")
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.
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>
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.
- 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>
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.
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
- 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