Commit Graph

19187 Commits (93fd42b0c3a26eb02d3c3dd4ae273b5e546baf14)

Author SHA1 Message Date
translators 8380ff8dd0 Update: Translations from eints
dutch: 13 changes by Afoklala
3 years ago
translators 9df60a2759 Update: Translations from eints
slovak: 39 changes by ApplePie420
3 years ago
translators dea999566d Update: Translations from eints
finnish: 14 changes by hpiirai
3 years ago
translators 476c039332 Update: Translations from eints
german: 10 changes by Wuzzy2
3 years ago
translators d17e4f7d29 Update: Translations from eints
german: 4 changes by danidoedel
romanian: 23 changes by ALEX11BR
portuguese (brazilian): 6 changes by jpsl00
3 years ago
translators 7409e6fea1 Update: Translations from eints
romanian: 17 changes by ALEX11BR
3 years ago
translators cab212258f Update: Translations from eints
swedish: 9 changes by joeax910
russian: 1 change by Ln-Wolf
3 years ago
translators 333de9f15d Update: Translations from eints
russian: 9 changes by Ln-Wolf
catalan: 25 changes by J0anJosep
3 years ago
translators 72737a91f3 Update: Translations from eints
spanish (mexican): 13 changes by absay
3 years ago
Rubidium ba29edb0b3 Cleanup: remove some references to the old master-server 3 years ago
Patric Stout 9cc706847c
Fix: crash when joining a server again after a TCP disconnect (#9453)
"my_client" wasn't always free'd when a game ended. "my_client"
keeps a reference inside the PT_NCLIENT pool. The rest of the
code assumes that when you are not in a game, it can freely
reset this pool.
In result: several ways to trigger a use-after-free.
3 years ago
translators 99d0d9be6b Update: Translations from eints
english (us): 15 changes by 2TallTyler
korean: 12 changes by telk5093
russian: 3 changes by Ln-Wolf
portuguese: 12 changes by azulcosta
polish: 98 changes by pAter-exe
3 years ago
Charles Pigott 6c33b4ed28
Fix #8335: Race condition in music mixer (#9450) 3 years ago
translators dd54e4c835 Update: Translations from eints
swedish: 1 change by joeax910
romanian: 36 changes by ALEX11BR
3 years ago
Patric Stout fa1e27994d Feature: allow the use of TURN to connect client and server together
TURN is a last resort, used only if all other methods failed.
TURN is a relay approach to connect client and server together, where
openttd.org (by default) is the middleman.

It is very unlikely either the client or server cannot connect to
the STUN server, as they are both already connected to the Game
Coordinator. But in the odd case it does fail, estabilishing the
connection fails without any further possibility to recover.
3 years ago
Patric Stout 8a36134003 Fix: [Network] rework when to close connections and inform Game Coordinator if needed 3 years ago
Charles Pigott f1dfc2f482 Codechange: Make OverflowSafeInt constexpr 3 years ago
Charles Pigott 549a58731f Codechange: Remove (unused) ability to specify min/max of OverflowSafeInt 3 years ago
Charles Pigott e6e2a67aa1 Codechange: Use GCC/clang builtins for overflow safety when supported 3 years ago
Charles Pigott 3d0d9edafd Fix: OverflowSafeInt could underflow
Notably, a company with an extremely negative amount of money would
suddenly become very rich
3 years ago
Charles Pigott 1e439979f7 Fix: OverflowSafeInt negation not handling INT64_MIN
INT64_MIN negated is above INT64_MAX, and would overflow.
Instead, when negating INT64_MIN make it INT64_MAX.
This does mean that -(-(INT64_MIN)) != INT64_MIN.
3 years ago
Loïc Guilloux 9b0bb21f3b
Fix 57734fd: Don't enable rename button for network clients in build vehicle window (#9452) 3 years ago
translators d1cf56609d Update: Translations from eints
german: 1 change by danidoedel
3 years ago
Charles Pigott 1e529e1632
Fix: [Fluidsynth] Crash when debug output enabled (#9446) 3 years ago
translators 9421cb1e2c Update: Translations from eints
estonian: 1 change by siimsoni
russian: 20 changes by Ln-Wolf
3 years ago
Rubidium 386ef4dac3 Feature: [Game Coordinator] Send NewGRF names to the client 3 years ago
rubidium42 3eaa470632 Feature: [Network] Optionally send NewGRF names with NewGRFs in GameInfo
Before 8a2da49 the NewGRF names were synchronized using UDP packets, however
those have been removed. With this a new version of the GameInfo packet is
introduced that allows to specify the type of serialisation happens for
NewGRFs. Either only the GRF ID and checksum, or those two plus the name of
the NewGRF.
On this request for local servers will send the NewGRFs names.
The Game Coordinator will get the names on the first registration, and after
that only the GRF ID and checksum.
3 years ago
rubidium42 5dd524139f Fix c921f6d: [Network] Documentation of Game Info packet was not updated 3 years ago
rubidium42 09a7825d1e Remove: the concept of UnknownGRFs
These were filled with "<Unknown>" (before 8a2da49) and later their name would get filled via UDP requests to the server. These UDP packets do not exist anymore, so they will always remain "<Unknown>".
Remove that logic and just use the generic translated error GRF UNKNOWN string instead.
3 years ago
translators 3479e59eea Update: Translations from eints
korean: 2 changes by telk5093
catalan: 3 changes by J0anJosep
french: 17 changes by glx22
portuguese: 1 change by azulcosta
portuguese (brazilian): 15 changes by Vimerum
3 years ago
Patric Stout ab601115a9
Fix 75b6051b: removing items from the ini could leave the group in a bad state (#9445) 3 years ago
Loïc Guilloux 460991ecf4
Feature: Persistant rotation of numbered auto/netsave after restart (#9397)
It was always starting from 0 on openttd restart.
Now the most recent auto/netsave number will be used as a base to generate the next filename.
3 years ago
glx22 16abdd5254 Change: [Win32] Set the console codepage to UTF-8 3 years ago
glx22 afea5e85ae Fix 433f74e: GetString() requires a language pack 3 years ago
translators 96add9c36d Update: Translations from eints
spanish (mexican): 1 change by absay
dutch: 15 changes by Afoklala
portuguese: 1 change by azulcosta
3 years ago
Patric Stout 29cceb59a5 Doc: explain in a bit more detail how we implemented STUN 3 years ago
Patric Stout 8adade26ed Feature: allow the use of STUN to connect client and server together
This method doesn't require port-forwarding to be used, and works for
most common NAT routers in home setups. But, for sure it doesn't work
for all setups, and not everyone will be able to use this.
3 years ago
Patric Stout 55eed246b8 Codechange: allow Connect() to bind to a local address 3 years ago
translators 695e1493c9 Update: Translations from eints
swedish: 14 changes by joeax910
3 years ago
Patric Stout c921f6d817
Add: inform clients what game-script a server is running (#9441)
Co-authored-by: The Dude <thedude@novapolis.net>
3 years ago
translators 333cba6a61 Update: Translations from eints
spanish (mexican): 1 change by absay
finnish: 14 changes by hpiirai
3 years ago
translators e9b157f1f5 Update: Translations from eints
korean: 1 change by telk5093
portuguese: 1 change by azulcosta
3 years ago
translators 80f4e42627 Update: Translations from eints
spanish (mexican): 4 changes by absay
english (us): 13 changes by 2TallTyler
korean: 5 changes by telk5093
german: 13 changes by Wuzzy2
portuguese: 4 changes by azulcosta
hindi: 6 changes by ritwikraghav14
3 years ago
Rubidium c71f06e59b Feature: parse the console settings the same way as config settings
Now you can use things like `set server_game_type public` instead of having to
guess the number, which would not be written into the configuration file nor
would it be shown when doing `set server_game_type`.
3 years ago
Patric Stout dd7f69be6e
Fix: "Search LAN games" used the socket after it was closed (#9437)
Every outgoing connection, either TCP or UDP, triggered
NetworkInitialize(), which triggered NetworkUDPInitialize() which
first closes all connections.

Now the problem was that "Search LAN games" found a server, added
it to the list, after which (over TCP) it queries the server. This
closes all UDP sockets (as that makes sense, I guess?), while the
UDP was still reading from it.

Solve this by simply stop initializing UDP every time we make an
outgoing TCP connection; instead only do it on start-up.
3 years ago
Rubidium 178ea3196b Remove: includes to network/core/config.h from headers when only three cpp files need it 3 years ago
Patric Stout b6a116a247
Add: allow setting your server visibility to "invite-only" (#9434)
In this mode you do register to the Game Coordinator, but your
server will not show up in the public server listing. You can give
your friends the invite code of the server with which they can
join.
3 years ago
translators 8bb9c3f646 Update: Translations from eints
spanish (mexican): 29 changes by absay
czech: 11 changes by JustImagine436
korean: 9 changes by telk5093
portuguese: 9 changes by azulcosta
hindi: 28 changes by ritwikraghav14
3 years ago
Patric Stout e4d216e44b Feature: join servers based on their invite code
This removes the need to know a server IP to join it. Invite codes
are small (~7 characters) indentifiers for servers, which can be
exchanged with other players to join the servers.
3 years ago
Patric Stout 1baec41542 Change: groundwork to allow ServerAddress to use invite codes
Normally TCPConnecter will do a DNS resolving of the connection_string
and connect to it. But for SERVER_ADDRESS_INVITE_CODE this is different:
the Game Coordinator does the "resolving".

This means we need to allow TCPConnecter to not setup a connection
and allow it to be told when a connection has been setup by an external
(to TCPConnecter) part of the code. We do this by telling the (active)
socket for the connection.

This means the rest of the code doesn't need to know the TCPConnecter
is not doing a simple resolve+connect. The rest of the code only
cares the connection is established; not how it was established.
3 years ago
Patric Stout cee8174d02 Codechange: track servers with a ServerAddress instead of a NetworkAddress
This allows future extensions to have different ways of referencing
a server, instead of forcing to use IP:port.
3 years ago
Patric Stout f4dd2d88c7 Feature: raise the maximum NewGRF limit to 255 3 years ago
Patric Stout 6f0c6fb2ae Fix a4987233: NewGRFs could no longer be loaded from the NewGRF folder.
This statement was removed by accident, as it felt it could be removed.
But it is used to know if the NewGRF is from the baseset folder or
from the NewGRF folder.
3 years ago
rubidium42 a498723345
Remove: arbitrary limit on number of statically loaded NewGRFs (#9431) 3 years ago
Rubidium f6955a304c Fix: ensure no more than the allowed number of NewGRFs are loaded from the configuration 3 years ago
Rubidium e99134654b Feature: allow setting (game) coordinator and content server connection strings using environment variables
OTTD_COORDINATOR_CS for the game coordinator defaults to coordinator.openttd.org:3976
OTTD_CONTENT_SERVER_CS for the content server defaults to content.openttd.org:3978
OTTD_CONTENT_MIRROR_CS for the content mirror server defaults to binaries.openttd.org:80
3 years ago
Rubidium 3e4d327451 Codechange: use the C++ std::getenv over the POSIX/C getenv
The C++ std::getenv is guaranteed thread-safe by the C++11 specification,
whereas the POSIX/C getenv might not be thread-safe by the C11 specification.
3 years ago
translators d158eba72c Update: Translations from eints
spanish (mexican): 74 changes by absay
vietnamese: 62 changes by KhoiCanDev
3 years ago
Patric Stout de7ab2eb1c Cleanup: remove unused optional ctor parameter for NetworkGameList 3 years ago
Patric Stout 6212d0a8da Remove: unused UDP protocol parts 3 years ago
Patric Stout 8a2da49413 Remove: old server listing via Master Server
This removes all UDP from the game except for a local broadcast
to find LAN games.

So long Master Server, and tnx for all the fish!
3 years ago
Patric Stout 61fdef8457 Remove: old server announcement to Master Server
As we now use the Game Coordinator for announcements, there is no
longer a need to use the Master Server for this.
3 years ago
Patric Stout aa93d76223 Add: use Game Coordinator to get latest public server listing 3 years ago
Patric Stout b1280fd17e Add: use Game Coordinator to annouce public servers 3 years ago
Patric Stout e1e2212e0e Codechange: track version of network servers to prune once out-of-date 3 years ago
Patric Stout cbaac5609f Codechange: use UpdateNetworkGameWindow() over manually marking window dirty 3 years ago
Loïc Guilloux ddb6024bc6
Codechange: Don't explicitly unset _generating_world outside of genworld.cpp (#9418) 3 years ago
Rubidium 85faa218ff Remove: logically dead code in graph UI 3 years ago
Rubidium 0d0375c019 Remove: logically dead code from font cache
The outer if statement checks for 'aa' being false, so within the inner
statements anything checking aa will have a known result and the other
branch from there will be dead code.
3 years ago
Rubidium 1c0c4637d2 Fix 11ab3c4: [NewGRF] Overflow when determining cargo mask for string code 9A 1E
9A 1E: Print unsigned word as name of a cargo type (translated for GRF version >= 7).
3 years ago
Rubidium ede3f79475 Codechange: use the name string in SaveLoad for the name of the Setting as well 3 years ago
Rubidium 01139d3368 Codechange: access the name of a setting via an accessor function 3 years ago
Rubidium 94881f5a34 Codechange: name a few unnamed settings as to not to have to check for that being empty 3 years ago
Stephan a70aa5df49
Add #9188: netsave now keeps multiple version around, similar to autosave (#9395) 3 years ago
glx22 ce813ce644 Cleanup: Remove now unused FOR_EACH_SET_BIT_EX macro 3 years ago
glx22 49b66ea504 Codechange: Remove FOR_EACH_SET_TRACK 3 years ago
glx22 a543a4b7bb Codechange: Remove FOR_EACH_SET_CARGO_ID 3 years ago
glx22 89ab8b79a5 Codechange: Remove FOR_EACH_SET_BIT 3 years ago
glx22 5844027eb8 Codechange: Remove FOR_ALL_SORTED_STANDARD_CARGOSPECS 3 years ago
glx22 87eb997be0 Codechange: Remove FOR_ALL_TILES_IN_HEIGHT 3 years ago
Patric Stout 8f5d0ecde3
Codechange: split settings.ini over several files (#9421)
This reduced the load on compilers, as currently for example MacOS
doesn't like the huge settings-tables.

Additionally, nobody can find settings, as the list is massive and
unordered. By splitting it, it becomes a little bit more sensible.
3 years ago
translators d9ca9ca555 Update: Translations from eints
spanish (mexican): 44 changes by absay
italian: 2 changes by CoderLel
3 years ago
translators a5add82600 Update: Translations from eints
spanish (mexican): 54 changes by absay
3 years ago
Patric Stout c1f13e0372
Fix: reduce the amount of debug messages on -dsl=2 (#9420)
LoadCheck makes it sound like something is really broken while
loading savegames, while it really is perfectly normal, as most
chunks do not implement LoadCheck.
3 years ago
Patric Stout 852e056d6f
Fix 9e32c618: network revision was always empty (#9419)
Shadowing the variable you intend to write in tends to do that ;)
3 years ago
translators a7fabe497c Update: Translations from eints
spanish (mexican): 6 changes by absay
3 years ago
glx22 7bcc7e11ff Codechange: Use a common sub-class for NewGRFMapping chunks 3 years ago
glx22 6e627f35ac Cleanup: Remove now unneeded ChunkHandler members 3 years ago
glx22 2c941cd8b3 Codechange: Use ChunkHandlers sub-classes 3 years ago
glx22 c1a9fe6fbd Codechange: Use static array of references to ChunkHandler 3 years ago
glx22 f371a5ad70 Codechange: Preparation for ChunkHandler subclassing 3 years ago
Rubidium 7e7a4aad72 Codechange: split off the settings saveload code from the main settings handling logic 3 years ago
rubidium42 25ca6a75bc Codechange: split off the settings table and all the callbacks from the main settings handling logic 3 years ago
glx22 b4aedc8bee Codechange: ensure xxx_setting_tables are initialised after their content 3 years ago
Loïc Guilloux ddafc0de05
Fix 39e90ec: Integers for scripts are 64bit, but saved as 32bit (#9415) 3 years ago
translators 8913ae9ba8 Update: Translations from eints
portuguese (brazilian): 1 change by Vimerum
3 years ago
translators faea943a9b Update: Translations from eints
hindi: 26 changes by ritwikraghav14
3 years ago
translators 511c1081af Update: Translations from eints
catalan: 1 change by J0anJosep
3 years ago
translators 05bdfadcb6 Update: Translations from eints
norwegian (bokmal): 1 change by Anolitt
japanese: 1 change by scabtert
3 years ago
Loïc Guilloux 0fa2007560
Fix cdb3dd049: GOAL chunk was not using the header for loading (#9409) 3 years ago