rubidium42
05394d5216
Fix #6598 : Prevent invalid memory accesses when abandoning a join from within a network game
...
One could join a network game from within an already running network game. This would call a NetworkDisconnect, but keeps the UI alive. If, during that process the join is aborted, e.g. by cancelling on a password dialog, you would still be in your network game but also get shown the server list.
Solve all the underlying problems by falling back to the main UI when (re)connecting to a(nother) server.
2021-05-01 18:30:08 +02:00
rubidium42
a61696d6c5
Change: [Network] Encapsulate logic about the connection string to the network code ( #23 )
2021-04-29 20:12:11 +02:00
Patric Stout
be37a2cab8
Codechange: use NetworkAddress instead of two host/port variables where possible
...
This also means we no longer need last_host/last_port, but can
just use a single last_joined setting.
2021-04-29 20:12:11 +02:00
rubidium42
cbad518bf3
Codechange: [Network] Do not leak os_abstraction.h via network_func
2021-04-27 18:17:34 +01:00
Jonathan G Rennison
ba418f9d0d
Merge branch 'master' into jgrpp
...
# Conflicts:
# src/lang/simplified_chinese.txt
# src/network/core/tcp_content.cpp
# src/network/core/udp.cpp
# src/network/network_server.cpp
# src/saveload/linkgraph_sl.cpp
# src/table/gameopt_settings.ini
2021-04-25 01:23:52 +01:00
Patric Stout
31897eaa7d
Codechange: split ParseConnectionString into two functions
...
One also looks for a company, the other doesn't. There were more
uses of the latter than the first, leaving very weird code all
over the place.
2021-04-20 17:34:04 +02:00
Patric Stout
f4bd3fff5e
Remove: "map_name" from server announcements / listing
...
The idea back in the days was nice, but it never resulted in
anything useful. Most servers either read "(loaded game)" or
"Random Map", neither being useful. It was meant for heightmaps,
so you could find a server that was using a specific one .. but
there are many things wrong with that idea. Mostly, servers tend
to save and load savegames from time to time, after which the
original heightmap used was lost.
All in all, removing map_name all together is just better.
2021-04-20 17:24:38 +02:00
Jonathan G Rennison
b514d29db1
Replace TrainCache::cached_tilt with a flags field
2021-04-15 20:56:45 +01:00
Jonathan G Rennison
e623560120
Fix 4c2e42fa
: Wrong town caches when loading pre more-houses savegame
2021-04-14 19:49:35 +01:00
Jonathan G Rennison
253d54ce05
Merge branch 'master' into jgrpp
...
# Conflicts:
# src/lang/french.txt
# src/network/network_udp.cpp
2021-04-12 22:59:30 +01:00
rubidium42
c4bccd4f70
Fix #8874 : show a warning when a NewGRF scan is requested multiple times from the console ( #9022 )
2021-04-12 20:53:04 +02:00
Jonathan G Rennison
272e583478
Merge branch 'master' into jgrpp
...
# Conflicts:
# src/lang/korean.txt
# src/settings.cpp
2021-04-12 00:22:13 +01:00
rubidium42
df045b92ea
Fix #9008 : Validate starting year given on the command line. ( #9014 )
...
An invalid starting year causes all sorts of weird behaviour and crashes in map generation.
Now just set the appropriate setting via IConsoleSetSetting so the validation
and, if needed, clamping is performed on the starting year value.
2021-04-11 13:52:55 +02:00
Jonathan G Rennison
d7b536ca78
Fix e094b7f1
: Wrong include path
2021-04-06 18:46:12 +01:00
Jonathan G Rennison
63ddf7f587
Crashlog: Update thread/lock handling to match GameLoop changes
2021-04-06 18:43:50 +01:00
Jonathan G Rennison
e094b7f1d6
Partially fix thread safety issues around _cur_palette
...
Replaces: 4c59dfb6
See also: https://github.com/OpenTTD/OpenTTD/issues/8712
2021-04-05 23:34:01 +01:00
Jonathan G Rennison
2a13c8623c
Revert: 4c59dfb6
, move DoPaletteAnimations back into GameLoop
...
Race fix to follow
2021-04-05 19:55:53 +01:00
Jonathan G Rennison
5e14b54a0c
Merge branch 'master' into jgrpp
2021-04-05 17:51:45 +01:00
Jonathan G Rennison
26a123b708
Realistic braking: Cache offset of centre of mass of train
2021-04-03 21:25:04 +01:00
Jonathan G Rennison
f53697ce76
Windows: Call SetThreadStackGuarantee for all threads, not just main thread
2021-03-12 17:30:40 +00:00
Jonathan G Rennison
4361a6dbf4
Avoid undefined behaviour const_casting std::string c_str()
...
Use non-const data() instead
See: #224
2021-03-11 01:33:06 +00:00
Patric Stout
5426cb3baf
Fix: abort GRFFileScanner on exiting the game as soon as possible
...
This prevents the window from "freezing" when you close it during
the scanning of NewGRFs, as it first would continue the action.
2021-03-10 13:41:18 +01:00
Patric Stout
b349ef6e71
Fix: don't update framerates when a modal window is open
...
Otherwise the numbers are all over the place when a modal window
just closed.
2021-03-10 13:41:18 +01:00
Patric Stout
970fedd78c
Add: make modal windows update more smooth
...
Basically, modal windows had their own thread-locking for what
drawing was possible. This is a bit nonsense now we have a
game-thread. And it makes much more sense to do things like
NewGRFScan and GenerateWorld in the game-thread, and not in a
thread next to the game-thread.
This commit changes that: it removes the threads for NewGRFScan
and GenerateWorld, and just runs the code in the game-thread.
On regular intervals it allows the draw-thread to do a tick,
which gives a much smoother look and feel.
It does slow down NewGRFScan and GenerateWorld ever so slightly
as it spends more time on drawing. But the slowdown is not
measureable on my machines (with 700+ NewGRFs / 4kx4k map and
a Debug build).
Running without a game-thread means NewGRFScan and GenerateWorld
are now blocking.
2021-03-10 13:41:18 +01:00
Patric Stout
47e11fa3f2
Codechange: only run InteractiveRandom() from the draw-thread ( #8831 )
...
Otherwise both the draw-thread and game-thread can do it both
at the same time, which gives rather unwanted side-effects.
Calling it from the draw-thread alone is sufficient, as we just
want to create some unpredictable randomness for the player. The
draw-thread is a lot more active (normally) than the game-thread,
so it is the best place of the two to do this.
Additionally, InteractiveRandom() mostly has to do with visuals
that are client-side-only, so more related to drawing than to
game.
2021-03-09 20:30:37 +01:00
Jonathan G Rennison
edeced8fce
Zstd: Enable zstd for autosaves
...
See also: https://github.com/OpenTTD/OpenTTD/pull/8773
2021-03-01 18:59:03 +00:00
Jonathan G Rennison
0a31a3b923
Fix for crash when exiting whilst NewGRF scan still in progress
...
See: https://github.com/OpenTTD/OpenTTD/issues/8760
2021-03-01 18:04:12 +00:00
Jonathan G Rennison
e95216b59d
Merge branch 'master' into jgrpp
...
# Conflicts:
# src/company_cmd.cpp
# src/core/geometry_func.cpp
# src/date.cpp
# src/genworld_gui.cpp
# src/gfx.cpp
# src/object_gui.cpp
# src/openttd.cpp
# src/settings_type.h
# src/video/allegro_v.cpp
# src/video/dedicated_v.cpp
# src/video/null_v.cpp
# src/video/sdl2_v.cpp
# src/video/sdl_v.cpp
# src/video/win32_v.cpp
2021-02-19 15:38:34 +00:00
Patric Stout
c81c6e5eb7
Add: draw the screen at a steady pace, also during fast-forward
...
During fast-forward, the game was drawing as fast as it could. This
means that the fast-forward was limited also by how fast we could
draw, something that people in general don't expect.
To give an extreme case, if you are fully zoomed out on a busy
map, fast-forward would be mostly limited because of the time it
takes to draw the screen.
By decoupling the draw-tick and game-tick, we can keep the pace
of the draw-tick the same while speeding up the game-tick. To use
the extreme case as example again, if you are fully zoomed out
now, the screen only redraws 33.33 times per second, fast-forwarding
or not. This means fast-forward is much more likely to go at the
same speed, no matter what you are looking at.
2021-02-19 10:43:15 +01:00
Michael Lutz
22f5aeab07
Feature: Automatic UI and font zoom levels when supported by the OS.
2021-02-14 14:16:40 +01:00
Jonathan G Rennison
650d5e014e
Merge branch 'master' into jgrpp
...
# Conflicts:
# src/ai/ai_gui.cpp
# src/company_cmd.cpp
# src/lang/estonian.txt
# src/lang/german.txt
# src/lang/hungarian.txt
# src/lang/korean.txt
# src/lang/slovak.txt
# src/main_gui.cpp
# src/video/sdl2_v.cpp
2021-02-01 19:34:30 +00:00
Jonathan G Rennison
7154f8859d
Merge tag '1.11.0-beta1' into jgrpp
...
# Conflicts:
# src/console_cmds.cpp
# src/gfx_func.h
# src/industry.h
# src/lang/czech.txt
# src/lang/estonian.txt
# src/lang/german.txt
# src/lang/indonesian.txt
# src/lang/japanese.txt
# src/lang/norwegian_bokmal.txt
# src/lang/russian.txt
# src/lang/slovak.txt
# src/saveload/saveload.h
# src/station_gui.cpp
# src/town_gui.cpp
# src/vehicle_gui.cpp
# src/video/sdl2_v.cpp
# src/waypoint_gui.cpp
2021-02-01 18:58:36 +00:00
Jonathan G Rennison
b7ddd486cf
Merge branch 'master' into jgrpp
...
# Conflicts:
# cmake/CompileFlags.cmake
# src/aircraft_cmd.cpp
# src/blitter/32bpp_anim.cpp
# src/cargopacket.cpp
# src/cheat_gui.cpp
# src/company_cmd.cpp
# src/company_gui.cpp
# src/core/pool_func.hpp
# src/date.cpp
# src/economy.cpp
# src/error_gui.cpp
# src/ground_vehicle.cpp
# src/ground_vehicle.hpp
# src/group_gui.cpp
# src/industry_cmd.cpp
# src/lang/dutch.txt
# src/lang/french.txt
# src/lang/german.txt
# src/linkgraph/linkgraph_gui.cpp
# src/linkgraph/mcf.cpp
# src/network/network_content.cpp
# src/network/network_server.cpp
# src/network/network_udp.cpp
# src/newgrf_engine.cpp
# src/newgrf_station.cpp
# src/order_cmd.cpp
# src/order_gui.cpp
# src/pathfinder/follow_track.hpp
# src/pathfinder/yapf/yapf_common.hpp
# src/saveload/saveload.cpp
# src/settings_gui.cpp
# src/station_cmd.cpp
# src/station_kdtree.h
# src/string_func.h
# src/table/settings.ini
# src/tgp.cpp
# src/timetable_cmd.cpp
# src/timetable_gui.cpp
# src/toolbar_gui.cpp
# src/town_cmd.cpp
# src/train_cmd.cpp
# src/train_gui.cpp
# src/tree_gui.cpp
# src/tunnelbridge_cmd.cpp
# src/vehicle.cpp
# src/vehicle_gui.cpp
# src/video/sdl2_v.cpp
# src/video/sdl_v.cpp
# src/video/win32_v.cpp
# src/viewport.cpp
# src/viewport_sprite_sorter_sse4.cpp
# src/window.cpp
2021-02-01 17:07:34 +00:00
Jonathan G Rennison
6c3e5642f8
Merge branch 'master' into jgrpp
...
# Conflicts:
# cmake/CompileFlags.cmake
# src/crashlog.cpp
# src/fileio.cpp
# src/fileio_func.h
# src/fios_gui.cpp
# src/ini_load.cpp
# src/ini_type.h
# src/lang/english.txt
# src/lang/german.txt
# src/lang/korean.txt
# src/network/network_client.cpp
# src/order_base.h
# src/order_cmd.cpp
# src/os/windows/win32.cpp
# src/road_cmd.cpp
# src/saveload/saveload.cpp
# src/saveload/saveload.h
# src/settings.cpp
# src/station_cmd.cpp
# src/stdafx.h
# src/table/settings.ini
# src/tree_cmd.cpp
# src/tree_gui.cpp
# src/vehicle_base.h
# src/video/cocoa/cocoa_v.mm
# src/video/cocoa/event.mm
# src/video/cocoa/wnd_quartz.mm
# src/viewport.cpp
# src/widgets/tree_widget.h
2021-01-31 01:08:35 +00:00
Jonathan G Rennison
39df1c49a1
Merge branch 'master' into jgrpp
...
# Conflicts:
# src/fileio.cpp
# src/group_gui.cpp
# src/industry.h
# src/lang/korean.txt
# src/linkgraph/linkgraphjob.cpp
# src/linkgraph/linkgraphjob.h
# src/linkgraph/linkgraphschedule.cpp
# src/linkgraph/linkgraphschedule.h
# src/openttd.cpp
# src/saveload/saveload.cpp
# src/saveload/saveload.h
# src/town_cmd.cpp
# src/vehicle_gui.cpp
# src/vehicle_gui_base.h
2021-01-30 18:27:35 +00:00
Jonathan G Rennison
43980639de
Merge branch 'master' into jgrpp
...
# Conflicts:
# .gitignore
# CMakeLists.txt
# src/3rdparty/optional/optional.hpp
# src/group_cmd.cpp
# src/industry_cmd.cpp
# src/misc_gui.cpp
# src/video/sdl2_v.cpp
2021-01-29 17:45:15 +00:00
Jonathan G Rennison
ed0ffb6220
Add feature: realistic train braking
...
Add setting to select train braking model.
2021-01-28 19:03:18 +00:00
glx22
6b8ad5a9b1
Change: Apply some consistency to singleplayer related comments
2021-01-22 22:19:55 +01:00
Jonathan G Rennison
aacb70d371
Debug: Extend random debug logging to also include state checksum updates
2021-01-18 20:57:55 +00:00
Michael Lutz
fa60c1f8b9
Feature: Choose a sensible window size on a fresh OTTD config file. ( #8536 )
2021-01-14 21:53:06 +01:00
Patric Stout
760b0cdc11
Change: change console command "restart" and add "reload"
...
The current "restart" command is now called "reload", as that is
what it does.
The old "restart" command is now called "restart", as that is what
it did.
As this has not been in any official release yet, this shouldn't
harm any kitten.
2021-01-11 20:11:08 +01:00
Patric Stout
ff89f5f4c6
Fix 8f3d1ec
: "restart" did not always restart your current game
...
In the sequence:
- Load a game
- Start a newgame (via console)
- Restart a game (via console)
Gave you the loaded game back, not the new game.
2021-01-11 20:11:08 +01:00
Charles Pigott
9b800a96ed
Codechange: Remove min/max functions in favour of STL variants ( #8502 )
2021-01-08 11:16:18 +01:00
Jonathan G Rennison
5721790c5d
Fix assert failure in DoStartupNewCompany when called from AfterLoadGame
2020-12-29 20:52:53 +00:00
Jonathan G Rennison
483ed2f468
Merge branch 'master' into jgrpp
...
# Conflicts:
# .github/workflows/ci-build.yml
# .github/workflows/commit-checker.yml
# src/openttd.cpp
2020-12-27 20:16:16 +00:00
Michael Lutz
b408fe77f7
Codechange: Use std::string in file scanners.
2020-12-27 13:19:25 +01:00
Michael Lutz
5cbb2da794
Codechange: Even more std::string usage in file IO.
2020-12-27 13:19:25 +01:00
Michael Lutz
65f65ad2ad
Codechange: Convert some more FIO functions to take std::string.
2020-12-27 13:19:25 +01:00
Michael Lutz
dd138fc460
Codechange: Stringify config file paths.
2020-12-27 13:19:25 +01:00
Charles Pigott
860c270c73
Codechange: Replace assert_compile macro with static_assert
2020-12-27 10:55:42 +00:00