summaryrefslogtreecommitdiff
path: root/src/linkgraph
AgeCommit message (Collapse)Author
2021-08-20Change: [Linkgraph] Delete links only served by vehicles stopped in depotNicolas Chappe
A stale link is not deleted if the link refresher finds a vehicle that still serves it. This commit excludes vehicles stopped in depot for a very long time from the link refresher, so that their stale links can be deleted.
2021-08-18Fix 977604ef: [Linkgraph] Add a special case for unknown travel times on ↵Nicolas Chappe
link update
2021-08-17Feature: [Linkgraph] Prioritize faster routes for passengers, mail and ↵Nicolas Chappe
express cargo Passengers usually prefer fast paths to short paths. Average travel times of links are updated in real-time for use in Dijkstra's algorithm, and newer travel times weigh more, just like capacities.
2021-07-09Codechange: Remove FOR_EACH_SET_CARGO_IDglx22
2021-06-14Codechange: use SLE_STRUCT(LIST) for Linkgraph chunksPatric Stout
2021-05-31Codechange: C++-ify lists for SaveLoad (#9323)Patric Stout
Basically, this changes "SaveLoad *" to either: 1) "SaveLoadTable" if a list of SaveLoads was meant 2) "SaveLoad &" if a single entry was meant As added bonus, this removes SL_END / SLE_END / SLEG_END. This also adds core/span.hpp, a "std::span"-lite.
2021-05-27Codechange: linkgraph always iterates with NodeIDs over the Size(), so make ↵rubidium42
Size() the same type to prevent infinite loops
2021-05-15Change: Use gender-neutral pronounsrubidium42
2021-05-15Fix: comparison of narrow type to wide type in loop (potential for infinite ↵Rubidium
loops)
2021-04-30Codechange: Use text lines instead of pixel height of font for link graph ↵Peter Nelson
widgets.
2021-04-13Fix: Add virtual destructor to link graph Path.Milek7
Classes derived from Path were freed through base class pointer, but no virtual destructor was present.
2021-03-11Change: Recolour graph windows to brown (#8700)Tyler Trahan
2021-01-08Codechange: Remove min/max functions in favour of STL variants (#8502)Charles Pigott
2020-12-27Codechange: Replace assert_compile macro with static_assertCharles Pigott
2020-12-25Change: [Linkgraph] Allow job threads to be aborted early when clearing ↵Jonathan G Rennison
schedule (#8416) When link graph jobs are cleared due to abandoning the game or exiting, flag the job as aborted. The link graph job running in a separate thread checks the aborted flag periodically and terminates processing early if set. This reduces the delay at game abandon or exit if a long-running job would otherwise still be running.
2020-12-22Change: [Linkgraph] Only acquire thread join performance measurements on ↵Jonathan G Rennison
network clients Network servers and single player clients do not block on thread joins due to instead pausing shortly before the join is due.
2020-12-22Change: [Linkgraph] Pause the game when linkgraph jobs lag (#6470)Jonathan G Rennison
Check if the job is still running two date fract ticks before it is due to join, and if so pause the game until its done. When loading a game, check if the game would block immediately due to a job which is scheduled to be joined within two date fract ticks, and if so pause the game until its done. This avoids the main thread being blocked on a thread join, which appears to the user as if the game is unresponsive, as the UI does not repaint and cannot be interacted with. Show if pause is due to link graph job in status bar, update network messages. This does not apply for network clients.
2020-06-05Add: introduce CMake for project managementPatric Stout
CMake works on all our supported platforms, like MSVC, Mingw, GCC, Clang, and many more. It allows for a single way of doing things, so no longer we need shell scripts and vbs scripts to work on all our supported platforms. Additionally, CMake allows to generate project files for like MSVC, KDevelop, etc. This heavily reduces the lines of code we need to support multiple platforms from a project perspective. Addtiionally, this heavily improves our detection of libraries, etc.
2020-05-21Codechange: Replace SmallPair with std::pair.Michael Lutz
std::pair is already the smallest possible pair, and it already handles non-POD types correctly.
2020-01-08Codechange: [Linkgraph] Skip MCF source node Dijkstra when all demand satisfiedJonathan G Rennison
MCF Dijkstra iterations are executed for all source nodes in a round-robin order. Source nodes typically require different numbers of MCF Dijkstra iterations to satisfy all of their demand. This change is to avoid performing MCF Dijkstra iterations on source nodes which have already been fully satisfied.
2019-12-21Codechange: Replace linkgraph related FOR_ALL with range-based for loopsglx
2019-12-21Codechange: Replace station related FOR_ALL with range-based for loopsglx
2019-11-10Cleanup: Removed SVN headersS. D. Cloudt
2019-09-29Fix: Some typos found using codespellJMcKiern
2019-04-29Codechange: Remove DistributionTypeByteCharles Pigott
2019-04-10Codechange: Use null pointer literal instead of the NULL macroHenry Wilson
2019-04-06Codechange: Replace custom thread code with C++11 thread objects.Michael Lutz
We assume a conforming C++11 compiler environment that has a valid <thread>-header. Failure to run a real thread is handled gracefully.
2019-03-30Fix aa7ca7fe6: Linkgraph node index order must be maintained due to other ↵PeterN
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-28Fix: MSVC warnings (#7423)glx22
2019-03-26Codechange: Removed SmallVector completelyHenry Wilson
2019-03-26Codechange: Replaced SmallVector::Append() with ↵Henry Wilson
std::vector::[push|emplace]_back()
2019-03-26Codechange: Replaced SmallVector::Get(n) non-const with std::vector::data() + nHenry Wilson
2019-03-26Codechange: Replaced SmallVector::Resize() with std::vector::resize()Henry Wilson
2019-03-26Codechange: Replace SmallVector::Length() with std::vector::size()Henry Wilson
2019-03-24Codechange: Use override specifier in Window-derived classes.peter1138
2019-03-20Codechange: Implement OnTooltip event for custom window tooltips.peter1138
This avoids windows from needing to know or care about tooltip delay settings.
2019-02-23Fix #7004: Mark linkgraph dirty to be rebuilt on next draw call. (#7265)PeterN
Previously the linkgraph was rebuilt before the viewport extents were finalized.
2019-01-28Codechange: [Linkgraph GUI] Replace line visibility detection algorithmJonathan G Rennison
Use an implementation of the Cohen-Sutherland line-clipping algorithm. The previous algorithm had an excessive false-positive rate. Line-rendering is sufficiently expensive that using a line-clipping algorithm with a much lower false-positive rate is a net performance benefit.
2018-10-31Doc: Lots and lots of doxymentation fixesCharles Pigott
2018-07-19Feature: Framerate display window (#6822)Niels Martin Hansen
Frame rate and various game loop/graphics timing measurements and graphs. Accessible via the Help menu, and can print some stats in the console via the fps command.
2018-06-24Add: Hover tool-tips to cargo dest flow legend window.Jonathan G Rennison
This is to improve the usability of the window. The two-letter abbreviations are not always clear, in particular when using a large number of cargoes. The company colours can be ambiguous when there are a large number of companies.
2018-06-24Fix: Poor contrast in cargo dest flow legend window cargo labels.Jonathan G Rennison
Select foreground colour depending on the brightness of the background. Previously all cargo labels were rendered using black text, even the background cargo colour was dark/black. As an example: FIRS coal was black text on a black background.
2018-05-21Change: Add CargoTypes type for cargo masks. (#6790)PeterN
2017-07-11(svn r27887) -Cleanup: Remove unused/unimplemented prototype (adf88)frosch
2016-10-30(svn r27670) -Add: [FS#6471] Assign descriptive names to (GNU pthread) ↵frosch
threads. (JGR)
2016-07-10(svn r27614) -Codechange: Use a fixed array instead of a map for link ↵fonsinchen
refresher cargo capacities. (JGR)
2016-07-10(svn r27613) -Codechange: Use a flat vector instead of a map in ↵fonsinchen
FlowEdgeIterator. (JGR)
2016-07-10(svn r27612) -Codechange: Replace three uses of std::list with ↵fonsinchen
std::queue/vector. (JGR)
2016-07-10(svn r27611) -Codechange: Cache the calculated value of CapacityAnnotationfonsinchen
2015-03-07(svn r27178) -Fix [FS#5969]: Data race due to lazy initialisation of objects.frosch