Commit Graph

17287 Commits

Author SHA1 Message Date
peter1138 672c857e37 Cleanup: Update modified and removed strings in language files. 2019-05-01 21:36:27 +02:00
peter1138 3293f08e0b Add: New RoadType API functions. 2019-05-01 21:36:27 +02:00
peter1138 c02ef3e456 Feature: Add NotRoadTypes (NRT) 2019-05-01 21:36:27 +02:00
Peter Nelson 21edf67f89 Codechange: Untangle game and scenario toolbars. 2019-05-01 21:36:27 +02:00
peter1138 08f00151f1 Codechange: MakeBridgeRamp()'s road-or-rail-type parameter does not make sense.
Road type and rail type are stored in separate locations, so this parameter does
not make make sense as it is only used for rail bridges. Instead explicitly set the
rail type in MakeRailBridgeRamp().
2019-05-01 21:36:27 +02:00
peter1138 bcdb28249c Codechange: Use RAILTYPES_NONE instead of INVALID_RAILTYPES when not using rail.
INVALID_RAILTYPES, if it was accidentally tested, would match any railtype.
2019-05-01 21:36:27 +02:00
Berbe 04c74355ba Fix: IniLoadFile::LoadFromDisk expects filename but BaseMedia::AddFile provided full path (#7348) 2019-05-01 18:57:23 +01:00
glx22 76788a1eb3
Fix 2bb80d2: really increase the maximum number of GameScript texts to 64k (#7555) 2019-05-01 19:31:30 +02:00
glx22 cef9a76c3f
Fix #7553: check bounds when loading strings (#7554) 2019-05-01 19:12:37 +02:00
kiwitree 28b23a6643 Fix: Crash on waypoint selection window 2019-04-30 20:20:14 +01:00
PeterN 14dc8dd619
Fix 81d335b: Don't check state of widget not present in scenario editor. (#7551) 2019-04-29 19:09:11 +01:00
pnda 8cc6ee60ed Add: Icons on air/water/landscape construction menus (#7485) 2019-04-29 18:42:00 +01:00
Charles Pigott 63a7df027d Fix 5db883f: Railtype bits were moved too late, leading to rails under bridges losing their type 2019-04-29 17:46:28 +01:00
Charles Pigott d9f9a64389 Fix #6507: Don't try to load invalid depots from older savegames 2019-04-29 17:46:28 +01:00
Charles Pigott 3299d6540b Cleanup: Delete GetSavegameType function since it's been commented out since 2005 2019-04-29 17:46:28 +01:00
Charles Pigott 9da1c5bb0b Fix: Crash when attempting to load old save game with GRFs set
GroupStatistics pool was not initialised before trying to delete vehicles (specifically, trams with no tram track)
2019-04-29 17:46:28 +01:00
Charles Pigott 47d0d86a3c Fix #7255: Prevent crashlog corruption by only printing the 32 most recent news messages 2019-04-29 17:43:27 +01:00
Charles Pigott 9e19a5f93e Remove: (Simple)TinyEnumT 2019-04-29 17:40:22 +01:00
Charles Pigott bd87f11355 Codechange: Remove DistributionTypeByte 2019-04-29 17:40:22 +01:00
Charles Pigott a5681d3eba Codechange: Remove GoalTypeByte 2019-04-29 17:40:22 +01:00
Charles Pigott 327ff89808 Codechange: Remove PauseModeByte 2019-04-29 17:40:22 +01:00
Charles Pigott e18c8c30be Codechange: Remove RoadTypesByte 2019-04-29 17:40:22 +01:00
Charles Pigott 644f4c3547 Codechange: Set size of SettingGuiFlag & SettingDescType enums, and use them properly 2019-04-29 17:40:22 +01:00
Charles Pigott 0a53ee8cfe Codechange: Remove PartOfSubsidyByte 2019-04-29 17:40:22 +01:00
Charles Pigott 5d66d8fd7d Codechange: Remove ExpensesTypeByte 2019-04-29 17:40:22 +01:00
Charles Pigott 2e1936da64 Codechange: Remove SourceTypeByte type 2019-04-29 17:40:22 +01:00
Charles Pigott 5b34c8019f Codechange: Remove Company/OwnerByte types 2019-04-29 17:40:22 +01:00
Charles Pigott fcf06ba4c4 Codechange: Remove StationClassIDByte, and drop STAT_CLASS_MAX by one 2019-04-29 17:40:22 +01:00
Charles Pigott 60e31c7cfa Codechange: Remove OrderTypeByte 2019-04-29 17:40:22 +01:00
Charles Pigott 96097b34a5 Codechange: Remove Direction*Byte types 2019-04-29 17:40:22 +01:00
Charles Pigott 9f3928658b Codechange: Remove Track{dir,}{Bits,}Byte types 2019-04-29 17:40:22 +01:00
Charles Pigott 931d32f414 Codechange: Remove RailTypeByte type 2019-04-29 17:40:22 +01:00
Charles Pigott 10ba431d21 Codechange: Remove SpriteTypeByte type 2019-04-29 17:40:22 +01:00
Charles Pigott 119ea7a195 Codechange: Remove StationHadVehicleOfTypeByte type 2019-04-29 17:40:22 +01:00
Charles Pigott fb6ae81415 Codechange: Remove StationFacilityByte type 2019-04-29 17:40:22 +01:00
Charles Pigott 09567bf0b3 Codechange: Remove StoryPageElementTypeByte type 2019-04-29 17:40:22 +01:00
Charles Pigott f20b75d712 Codechange: Remove TownLayoutByte type 2019-04-29 17:40:22 +01:00
Charles Pigott 0e439aeab7 Codechange: Remove TownFoundingByte type 2019-04-29 17:40:22 +01:00
Charles Pigott 0a57db01af Codechange: Remove TrainForceProceedingByte type 2019-04-29 17:40:22 +01:00
Charles Pigott 69a6c494bf Codechange: Set VehicleType's base type to byte instead of using VehicleTypeByte 2019-04-29 17:40:22 +01:00
Charles Pigott 96a4787710 Codechange: Set ZoomLevel's base type to byte instead of using ZoomLevelByte 2019-04-29 17:40:22 +01:00
translators aa220b2375 Update: Translations from eints
indonesian: 2 changes by fanioz
dutch: 3 changes by JanWillem
korean: 3 changes by telk5093
2019-04-28 19:45:44 +02:00
PeterN 0ab6244f6b
Fix #7165: Missed another 'Append() --> push_back()' replacement (#7548) 2019-04-27 20:47:32 +01:00
translators ead5b55119 Update: Translations from eints
spanish (mexican): 3 changes by Absay
russian: 3 changes by Lone_Wolf
2019-04-27 19:45:42 +02:00
peter1138 b454ca7110 Fix 81d335b: Coverage button missing from town window in scenario editor. 2019-04-27 14:41:58 +01:00
translators f354b869c1 Update: Translations from eints
indonesian: 3 changes by fanioz
croatian: 3 changes by VoyagerOne
2019-04-26 19:45:41 +02:00
translators 5b0ce8c214 Update: Translations from eints
finnish: 3 changes by hpiirai
italian: 3 changes by lorenzodv
2019-04-25 19:45:45 +02:00
Niels Martin Hansen d5841109f0 Fix dcb2571: Missing override keywords 2019-04-25 17:45:00 +02:00
peter1138 81d335b081 Feature: Add station coverage area display for towns. 2019-04-25 09:14:01 +02:00
peter1138 81f0f97406 Feature: Add existing station coverage area display when placing new station parts. 2019-04-25 09:14:01 +02:00
peter1138 b6733edd17 Feature: Add coverage area display for existing stations. 2019-04-25 09:14:01 +02:00
Niels Martin Hansen 37daf43037 Change: Zoom title game by UI zoom level 2019-04-24 23:04:55 +02:00
Niels Martin Hansen 58609e8fa6 Fix: Manager name in company news was being clipped 2019-04-24 23:04:55 +02:00
Niels Martin Hansen 2c67af391b Fix: Scale news ticker scroll speed by UI scale 2019-04-24 23:04:55 +02:00
Niels Martin Hansen 62dec9f174 Fix: Scale all min size and padding by UI scale 2019-04-24 23:04:55 +02:00
Niels Martin Hansen dd35a43703 Codechange: Revert unnecessary indentation change 2019-04-24 17:40:11 +02:00
Niels Martin Hansen a64bd6e22c Fix: Also breaking for warning text in set company password 2019-04-24 17:40:11 +02:00
Niels Martin Hansen 08284e005d Fix: Automatic line breaking of the warning 2019-04-24 17:40:11 +02:00
Niels Martin Hansen dcb2571888 Add: Warn players that company passwords are not truly secure 2019-04-24 17:40:11 +02:00
peter1138 66cd32a252 Codechange: Use std::underlying_type for DECLARE_POSTFIX_INCREMENT. 2019-04-21 22:31:12 +01:00
peter1138 ac1e1a272f Fix: Replace int with std::underlying_type in DECLARE_ENUM_AS_BIT_SET.
This fixes 64 bit uses of this macro.
2019-04-21 22:31:12 +01:00
PeterN c17736b493
Fix e8d397e: Invisible station/waypoint signs could still be clicked on. (#7531) 2019-04-20 17:49:54 +01:00
PeterN be073b46da
Fix: Bounds check access to railtype_map. (#7529) 2019-04-20 02:34:25 +01:00
PeterN d2b6176cdf
Add: NewGRF string codes to access PUSH/POP_COLOUR. (#7527) 2019-04-20 02:21:25 +01:00
glx22 66a8db9dc5
Fix #7526, 5b77102b6: FiosItem::operator< must return false for equality (#7528) 2019-04-19 18:48:01 +02:00
glx ebd4f32d15 Cleanup: remove core/sort_func.hpp as it's not used anymore 2019-04-18 21:49:34 +02:00
glx 48f99fd980 Codechange: use std::array for _sorted_industry_types 2019-04-18 21:49:34 +02:00
glx 60da17418a Codechange: use std::sort in SaveHighScoreValueNetwork() 2019-04-18 21:49:34 +02:00
glx 9388fa2aa1 Codechange: use std::vector to sort _all_grfs linked list 2019-04-18 21:49:34 +02:00
glx 8899272614 Codechange: use std::vector for _language_dropdown 2019-04-18 21:49:34 +02:00
glx 9195f2337a Codechange: use std::vector for _resolutions 2019-04-18 21:49:34 +02:00
glx 25e534f3cf Codechange: use std::vector for _sorted_railtypes 2019-04-18 21:49:34 +02:00
glx 0797de06be Codechange: use std::vector for _sorted_cargo_specs 2019-04-18 21:49:34 +02:00
translators f0b3267615 Update: Translations from eints
indonesian: 9 changes by fanioz
2019-04-17 19:45:47 +02:00
PeterN 671a310d21
Fix #7235: Ensure catchment area of neutral station covers entire industry. (#7518) 2019-04-16 20:30:07 +01:00
translators 8ae15d9797 Update: Translations from eints
indonesian: 6 changes by fanioz
2019-04-16 19:45:42 +02:00
Michael Lutz 38729297f9 Codechange: No need for AutoFreePtr if there's std::unique_ptr. 2019-04-15 22:52:50 +01:00
Michael Lutz 4e85ccf3c0 Codechange: Replace SmallStackSafeStackAlloc with std::array.
The only port that ever used it to make heap allocations instead of stack ones was the NDS port, which got thrown out some time ago.
2019-04-15 22:52:50 +01:00
stormcone 79343762a4 Fix: Typos. (#7517) 2019-04-15 22:06:41 +02:00
translators 3964604148 Update: Translations from eints
luxembourgish: 1 change by Phreeze
2019-04-15 19:45:42 +02:00
peter1138 4f052fc2a4 Cleanup: Fix alignment after NULL -> nullptr change. 2019-04-13 20:35:10 +01:00
glx 410b81537c Fix 801cbea9c: operator< is not always the best idea
Also removes unused and anyway broken SmallMap::SortByKey() function.
2019-04-13 21:05:25 +02:00
PeterN 3bbd7ea2c1
Fix: Industry coverage area is no longer rectangular. (#7464)
AIs test station catchment in reverse to how players see station catchment.
This did not take account of non-rectangular station catchment areas, so AIs
could end up placing stations in locations that did not accept/deliver cargo.
2019-04-13 14:27:57 +01:00
PeterN abe8cf4985
Codechange: Replace duplicated code with TileArea::Expand() (#7467) 2019-04-13 14:12:34 +01:00
glx 801cbea9cc Codechange: use std::sort() for all std::vector types 2019-04-13 12:49:18 +01:00
glx 5b77102b63 Codechange: use std::sort() to sort file lists 2019-04-13 12:49:18 +01:00
glx b52561fd38 Codechange: use std::sort() in EngList_Sort[Partial]() 2019-04-13 12:49:18 +01:00
glx 2db88953e7 Codechange: use std::sort() in GUIList 2019-04-13 12:49:18 +01:00
PeterN b9b34f676b
Change: Always report error when ordering a road vehicle to wrong type of road stop. (#7316)
This was inconsistent before, depending on road/tram and articulated/single vehicle status.
2019-04-13 12:43:49 +01:00
peter1138 5bd2b15e86 Codechange: Replace NULL with nullptr in squirrel interface. 2019-04-11 22:42:11 +01:00
peter1138 c0836bccef Codechange: NULL -> nullptr in settings files. 2019-04-11 13:00:55 +01:00
peter1138 0130f3be45 Fix #7491: Send company update admin message when bankruptcy counter changes. 2019-04-11 13:00:25 +01:00
SamuXarick 4ad981a98e Fix 50e08f333a: Creating a cargo subsidy with town as source did not consider min population. (#7493) 2019-04-11 07:35:46 +01:00
Henry Wilson 7c8e7c6b6e Codechange: Use null pointer literal instead of the NULL macro 2019-04-10 23:22:20 +02:00
glx22 3b4f224c0b
Fix #7494: std::sort() and qsort() use different comparators (#7495) 2019-04-10 20:55:53 +02:00
translators 87d588f22f Update: Translations from eints
luxembourgish: 17 changes by Phreeze
spanish (mexican): 2 changes by njn
2019-04-10 19:45:43 +02:00
Jonathan G Rennison 01f957c51f Fix: Crash due to use of invalid iterator in ClientNetworkContentSocketHandler
In particular this crash can be observed when using the
bootstrap GUI to download the base graphics.

In ClientNetworkContentSocketHandler::OnReceiveContentInfo
ClientNetworkContentSocketHandler::callbacks is iterated, using an iterator
cb->OnReceiveContentInfo() is called (cb is of type BootstrapAskForDownloadWindow)
This calls new BootstrapContentDownloadStatusWindow()
This inherits from BaseNetworkContentDownloadStatusWindow
The constructor of which calls _network_content_client.AddCallback(this)
This reallocates the std::vector which is being iterated in ClientNetworkContentSocketHandler::OnReceiveContentInfo
This results in iter being invalid, and an assertion failure occurs shortly
afterwards due to its use in the next iteration of cb->OnReceiveContentInfo()

Adjust all locations where ClientNetworkContentSocketHandler::callbacks
is iterated to avoid problematic behaviour
2019-04-09 22:56:23 +02:00
Michael Lutz 8b1880187a Remove: AutoFreeSmallVector.
The last use was for storing a list of memory blocks. As the way these lists are accessed is very
specific, it is easier to just write an explicit destructor instead of trying to exactly match the behaviour.
2019-04-09 22:45:15 +02:00
Michael Lutz e804173595 Codechange: If something is a vector of strings, use a vector of strings instead of an AutoFreeSmallVector. 2019-04-09 22:45:15 +02:00
Michael Lutz c7b9987d08 Codechange: Switch DropDownList to directly use std::vector, thus making AutoDeleteSmallVector obsolete.
DropDownListItem are strongly managed using std::unique_ptr to ensure leak-free handling. Appropriate use
of move-semantics make intent a lot clearer than parameter comments and allows the compiler to generate
copy-free code for most situations.
2019-04-09 22:45:15 +02:00
Michael Lutz d3e113eb5f Codechange: Use std::vector instead of AutoDeleteSmallVector in GS text handling. 2019-04-09 22:45:15 +02:00
Michael Lutz baf9229931 Codechange: Replace AutoDeleteSmallVector with direct std::vector use in text layout code. 2019-04-09 22:45:15 +02:00
Michael Lutz 329bb52613 Codechange: Store text layout runs directly as values in a std::vector instead of heap allocated.
This reduces memory allocations and heap fragmentation.
2019-04-09 22:45:15 +02:00
Michael Lutz 9325d63d8e Fix: Forgotten override keywords for DropDownListIconItem. 2019-04-09 22:45:15 +02:00
Michael Lutz fbc4cef180 Codechange: Use override specifier for text layout classes. 2019-04-09 22:45:15 +02:00
Michael Lutz d95c7083ea Fix: Don't crash if reading a GS string file from disk produces an error.
The raw_strings vector may not include NULLs as no consumer can deal with it.
2019-04-09 22:45:15 +02:00
translators 0a883afe19 Update: Translations from eints
luxembourgish: 20 changes by Phreeze
2019-04-09 19:45:42 +02:00
PeterN 812886ca61
Fix #7478: Don't remove NewGRF objects on company take-over. (#7483) 2019-04-08 19:20:43 +01:00
kiwitreekor bc9b47d2e5 Fix #6222: Advanced sprite layout sometimes showed incorrect railtype ground tile 2019-04-08 18:41:07 +01:00
glx22 3e608afa6c
Fix: [Windows] OpenTTD window may be inactive when an error happens (#7482) 2019-04-07 21:52:30 +02:00
Michael Lutz 967b27a2c1 Codechange: C++11 STL has a function for getting the number of CPU cores. 2019-04-06 11:27:39 +02:00
Michael Lutz ae748166d0 Codechange: Use platform independent C++11 function for sleeping on a thread. 2019-04-06 11:27:39 +02:00
Michael Lutz 94c5269fa7 Codechange: Use atomic variables for thread synchronization where useful. 2019-04-06 11:27:39 +02:00
Michael Lutz 05bc2ed7cb Codechange: Replace custom thread code with C++11 thread objects.
We assume a conforming C++11 compiler environment that has a valid <thread>-header.
Failure to run a real thread is handled gracefully.
2019-04-06 11:27:39 +02:00
Michael Lutz 05f4e73608 Codechange: Replace custom mutex code with C++11 mutex'es.
A conforming compiler with a valid <mutex>-header is expected.
Most parts of the code assume that locking a mutex will never fail unexpectedly,
which is generally true on all common platforms that don't just pretend to
be C++11. The use of condition variables in driver code is checked.
2019-04-06 11:27:39 +02:00
glx22 a1e492d0d8
Fix #7439: don't overwrite CompanyRemoveReason with ClientID (#7465) 2019-04-05 15:11:52 +02:00
Samu fb6e31ca43 Cleanup 3f32711: Don't apply forbid 90 deg turn settings for ships. 2019-04-05 10:03:54 +01:00
peter1138 8114bad033 Fix #7469: Desync when using build and refit feature. 2019-04-04 23:29:43 +01:00
translators 24fc25164a Update: Translations from eints
french: 3 changes by glx
croatian: 17 changes by VoyagerOne
2019-04-02 19:45:45 +02:00
Niels Martin Hansen cebdd72146 Fix #7440: Remove town sign when deleting town, not add it once more 2019-04-02 09:46:33 +02:00
translators 92d5835495 Update: Translations from eints
dutch: 2 changes by JanWillem
french: 19 changes by glx
2019-04-01 19:45:46 +02:00
translators cb449049ff Update: Translations from eints
english (us): 3 changes by Supercheese
spanish (mexican): 18 changes by Absay
hungarian: 2 changes by Brumi
latin: 33 changes by Supercheese
2019-03-31 19:45:45 +02:00
peter1138 f0336f1f17 Codechange: Remove ship max order distance from script API. 2019-03-31 17:22:54 +01:00
peter1138 f656f5e8eb Change: Remove ship max order distance.
It is skipped when NPF is in use.
It is trivial to work around by adding and removing dummy orders.
It is mostly alleviated by the ship path cache in YAPF.
2019-03-31 17:22:54 +01:00
peter1138 66bed86bbb Fix #7062, Revert 7af53d7588: Don't test ship max order distance when pathfinding. 2019-03-31 17:22:54 +01:00
glx d0e8060182 Fix 6fc60d8c4f: forgot to update API changelog 2019-03-31 03:33:03 +02:00
PeterN 6d1cc142c2
Change: Shorten engine rail type drop down in autoreplace window. (#7448)
In the autoreplace window, the rail type drop down is for choosing engines
of the given time. Many rail types do not have engines specifically designed for them,
and are merely compatible with other rail types. This list is thus unwieldy and many
options have no engines available.

As this drop down is for choosing _engine_ rail type rather than compatible rail types,
we can list just the rail types explicitly listed by engines.
2019-03-31 02:05:23 +01:00
PeterN e1069eee05
Codechange: Check airport layout would fit within map bounds before iterating tiles. (#7429) 2019-03-30 22:20:26 +00:00
PeterN 32fda83d39
Fix aa7ca7fe6: Linkgraph node index order must be maintained due to other references. (#7431)
Linkgraph nodes require a specific order that was maintained by swapping just the last
element for the node to be removed. std::vector::erase() changed this to removing the
node is then shuffling the remain items down, which upsets other references to this
indices.

This is fixed by switching back to the original swap & pop method.
2019-03-30 22:19:50 +00:00
Andy 423aea5c32 Change: adjust Violet smallmap colour 1 shade darker, to compensate for legibility against darker blue of sea introduced by #7436 2019-03-30 22:57:07 +01:00
glx22 e93630541d
Fix #7433: don't use AirportSpec substitute if it's not set (#7435) 2019-03-30 22:12:25 +01:00
Niels Martin Hansen df673e9b2c Fix: Fluidsynth should not try to lock sample data in memory 2019-03-30 22:11:32 +01:00
Niels Martin Hansen 66c60e52ba Change: [SDL] Do not offer video smaller than 640x480 2019-03-30 22:02:14 +01:00
frosch 0cf25e84df Fix #7447, 3357cac847: Action 4 has feature 48 'original strings'. (#7449) 2019-03-30 19:56:43 +00:00
translators 3118f1430f Update: Translations from eints
italian: 25 changes by lorenzodv
portuguese: 3 changes by JayCity
2019-03-30 19:45:46 +01:00
SamuXarick ed51fba7ed Change: Dark Blue company and water were indistinguishable in small map. (#7436) 2019-03-29 19:00:43 +00:00
translators 1d14e31be3 Update: Translations from eints
korean: 14 changes by telk5093
2019-03-29 19:45:45 +01:00
PeterN b6e3e30d86
Codechange: Distance between town and airport has already just been found, so use it. (#7427)
Previously the distance was thrown away, only to be expensively recalculated again.
2019-03-29 17:43:06 +00:00
PeterN 9244dad3f1
Fix #7434: Incorrect use of vector iterator. (#7437) 2019-03-29 17:42:32 +00:00
glx22 acb09eb9a8 Fix: [Win64] settingsgen MSVC compile warnings (#7432) 2019-03-28 21:25:21 +01:00
translators cd3767bec2 Update: Translations from eints
luxembourgish: 29 changes by Phreeze
russian: 2 changes by Lone_Wolf
latin: 4 changes by Supercheese
portuguese: 1 change by JayCity
2019-03-28 19:45:46 +01:00
Michael Lutz 21d9e87b46 Fix #7165: Const overload SmallMap::Contains(key) compared wrong types.
Const and non-const Find() have different return types.
2019-03-28 00:04:28 +00:00
stormcone ee260e4704 Fix #7165: SmallMap::Erase(key) does not work correctly 2019-03-28 00:04:28 +00:00
PeterN 7fb77ff35a
Fix: Incorrect display of industry production around tiles. (#7426)
Display of industry production around tiles (as shown when placing a station)
did not take account of the station catchment changes, so still showed production
from an industry even if it was not covered by a tile.

This is fixed by making a set of nearby industries that are covered, instead of
looping over all possible industries.
2019-03-27 23:10:02 +00:00
glx22 66dd7c3879
Fix: MSVC warnings (#7423) 2019-03-28 00:09:33 +01:00
translators e817951bfd Update: Translations from eints
finnish: 2 changes by hpiirai
english (us): 17 changes by Supercheese
luxembourgish: 10 changes by Phreeze
dutch: 20 changes by JanWillem
norwegian (bokmal): 2 changes by Leifbk
latin: 16 changes by Supercheese
portuguese: 3 changes by JayCity
2019-03-27 19:45:44 +01:00
Johannes E. Krause fdaf67d924 Add: [Newgrf] Some 60+ Vars for industries that were missed in #6867 2019-03-27 10:44:21 +00:00
Johannes E. Krause 1a4c7a4e54 Cleanup: use switch for industry cargo vars 2019-03-27 10:44:21 +00:00
Charles Pigott 49f7332b75 Feature #6053: Collapsible vehicle groups (3298) 2019-03-27 06:58:48 +00:00
Charles Pigott 8890436af1 Add #6189: Groups now count the total number of vehicles in subgroups (3298) 2019-03-27 06:58:48 +00:00