summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2021-05-08Add: concept of a RandomAccessFile to replace the FIO slot functionsRubidium
2021-05-08Codechange: Don't save unused NewGRF override mappings. (#9202)PeterN
2021-05-08Change: Use gender-neutral pronouns in console command messages (and ↵William Davis
comments) (#9203)
2021-05-08Fix f7e390bd: getpeername() doesn't work on closed sockets (#9213)Patric Stout
2021-05-08Fix #9209: Excessive time resizing highscore/news window when screen is too ↵PeterN
small. (#9210) If the highscore/news window panel size, which is now scaled by GUI zoom, is larger than the screen size, a loop will be entered where the window is repeatedly resized. This is resolved by removing the minimal size from the panel, as the window is always resized to cover the screen anyway. This means the screen size can never be too small.
2021-05-08Codechange: Slider widget used different range for drawing vs setting.Peter Nelson
Using the same range for setting means that no workaround for setting the extremes is necessary.
2021-05-08Codechange: Make GetCurrentRect() conform to usual Rect bounds, and reuse it.Peter Nelson
Similar code is already repeated in other locations.
2021-05-08Codechange: Don't update window contents if scrollbar position has not moved.Peter Nelson
2021-05-08Codechange: Set specific widgets dirty instead of window.Peter Nelson
2021-05-08Codechange: [Network] Change ChatMessage's message to std::string and ↵rubidium42
simplify some code
2021-05-08Fix: [Emscripten] Use non-XDG directories to simplify lolac storage (#9207)embeddedt
2021-05-07Update: Translations from eintstranslators
dutch: 2 changes by Afoklala
2021-05-06Feature: use Happy Eyeballs to make network connections (TCP-only) (#9199)Patric Stout
Hostnames like "content.openttd.org" resolve into multiple IPv4 and IPv6. It is possible that either of the IPs is not working, either due to a poorly configured OS (having IPv6 but no valid route), broken network paths, or a service that is temporary unavailable. Instead of trying the IPs one by one, waiting for a 3s timeout between each, be a bit more like browsers, and stack attempts on top of each other with slight delays. This is called Happy Eyebells. Initially, try the first IPv6 address. If within 250ms there is no connection yet, try the first IPv4 address. 250ms later, try the second IPv6 address, etc, till all addresses are tried. If any connection is created, abort all the other (pending) connections and use the one that is created. If all fail 3s after the last connect(), trigger a timeout for all.
2021-05-06Codechange: [Network] Use std::string for NetworkGameInforubidium42
2021-05-06Codechange: add DrawString(Multiline) that accepts std::string&rubidium42
2021-05-06Codechange: add SetDParamStr that accepts std::string&rubidium42
2021-05-06Update: Translations from eintstranslators
portuguese: 1 change by azulcosta
2021-05-06Codechange: [Network] Move connection string parsing away from C-stringsrubidium42
2021-05-06Codechange: [Network] Use std::string for NetworkAddress' host namerubidium42
2021-05-06Codechange: [Network] Use new/delete instead of calloc/free for NetworkGameListrubidium42
2021-05-06Add: [[nodiscard]] to std::string str_validaterubidium42
2021-05-05Codechange: use connection_string in favour of NetworkAddress (#9197)Patric Stout
We now resolve the connection_string to a NetworkAddress in a much later state. This means there are fewer places constructing a NetworkAddress. The main benefit of this is in later PRs that introduce different types of NetworkAddresses. Storing this in things like NetworkGameList is rather complex, especially as NetworkAddress has to be mutable at all times. Additionally, the NetworkAddress is a complex object to store simple information: how to connect to this server.
2021-05-05Cleanup: [Network] Remove variable from NetworkGameInfo that is only used ↵Rubidium
during deserialisation
2021-05-05Change: [Network] Update server's NetworkServerGameInfo only when neededrubidium42
Split the updating in a "static" version that only needs to be called when a new map is loaded or some settings are changed, and a "dynamic" version that updates everything that changes regularly such as the current game date or the number of spectators.
2021-05-05Codechange: [Network] Use a single NetworkServerGameInfo object at server ↵rubidium42
side and serialize that for the clients
2021-05-05Update: Translations from eintstranslators
english (us): 1 change by 2TallTyler russian: 1 change by Ln-Wolf finnish: 4 changes by hpiirai
2021-05-05Cleanup: Leftover static const variable from a3b356e (#9194)Loïc Guilloux
2021-05-05Cleanup: [Fluidsynth] Comply better with the coding stylerubidium42
2021-05-04Update: Translations from eintstranslators
english (us): 1 change by 2TallTyler estonian: 49 changes by siimsoni korean: 1 change by telk5093 hungarian: 45 changes by baliball finnish: 12 changes by hpiirai spanish: 1 change by JohnBoyFan
2021-05-04Change: Use gender-neutral pronouns in english.txt (#9189)Tyler Trahan
2021-05-03Codechange: Replace FOR_ALL_ROADTRAMTYPES with range-based for loopsglx22
2021-05-03Codechange: Replace FOR_ALL_SEARCHPATHS with range-based for loopsglx22
2021-05-03Codechange: Replace FOR_ALL_TARS with range-based for loopsglx22
2021-05-03Add: [Network] Reading std::string from a packetrubidium42
2021-05-03Add: [Network] Writing std::string to a packetrubidium42
2021-05-03Update: Translations from eintstranslators
norwegian (bokmal): 1 change by Anolitt spanish (mexican): 1 change by absay korean: 1 change by telk5093 russian: 48 changes by Ln-Wolf catalan: 1 change by J0anJosep portuguese: 1 change by azulcosta portuguese (brazilian): 1 change by Vimerum
2021-05-03Fix #9117, 04ce1f07: [Fluidsynth] Infinite wait when stopping song (#9181)rubidium42
In FluidSynth 2.2.0 an extra state was added to denote stopping. To transition from this state to a stopped state the rendering needs to be running. Since 04ce1f07 locking was added that skipped the rendering when something else held a lock, so the state would never get to stopped and join would never return.
2021-05-03Fix: Query windows may be partially drawn initially. (#9184)PeterN
Query window was not marked dirty after being moved on init. It was then marked dirty once the white border flash completed.
2021-05-03Fix #9174: Don't update text effect if it has been reset. (#9183)PeterN
2021-05-03Fix #9113: Assertion failure when removing airport with order backup (#9182)Jonathan G Rennison
2021-05-02Update: Translations from eintstranslators
norwegian (bokmal): 24 changes by Anolitt russian: 8 changes by Ln-Wolf dutch: 46 changes by Afoklala spanish: 43 changes by MontyMontana french: 44 changes by arikover
2021-05-02Codechange: Acquire video buffer before taking game state lock to prevent ↵Milek7
erratic fast forward behaviour (#9140)
2021-05-02Codechange: Validate custom station platform layout tiles are permitted ↵Peter Nelson
values only.
2021-05-02Codechange: Use std::vector for NewGRF station tile sprite layouts.Peter Nelson
2021-05-02Codechange: Use std::vector for NewGRF station platform layouts.Peter Nelson
This avoids the need to custom memory management and additional members. This also resolves use-after-free if modifying copied layouts, so presumably nobody has ever done that.
2021-05-02Fix #9147: Delay making screenshots until the next draw tick as we may not ↵Michael Lutz
access the video buffer from the game thread.
2021-05-02Codechange: Generalise the delayed blitter change to a generic video driver ↵Michael Lutz
command queue.
2021-05-02Fix: [NewGRF] industry variable 66 and object variable 46 clamped the ↵frosch
squared-euclidian distance to 16 bit, when they should not.
2021-05-02Fix: [NewGRF] industry variables 65 and 66 ignored the parameter, and always ↵frosch
used the north tile.
2021-05-02Fix: [Network] Reading beyond the length of the server's ID when hashing ↵rubidium42
password Under normal circumstances the server's ID is 32 characters excluding '\0', however this can be changed at the server. This ID is sent to the server for company name hashing. The client reads it into a statically allocated buffer of 33 bytes, but fills only the bytes it received from the server. However, the hash assumes all 33 bytes are set, thus potentially reading uninitialized data, or a part of the server ID of a previous game in the hashing routine. It is still reading from memory assigned to the server ID, so nothing bad happens, except that company passwords might not work correctly.