1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-13 17:49:10 +00:00

Compare commits

...

273 Commits

Author SHA1 Message Date
Charles Pigott
430ce20f8d Doc: 1.10.2 release 2020-06-01 22:16:57 +01:00
Charles Pigott
20007fd1f4 Update: Backport languages 2020-06-01 22:16:57 +01:00
Niels Martin Hansen
02980119e4 Fix #8066: Try another fallback colourspace if first one fails 2020-06-01 22:16:57 +01:00
Yexo
dd4aae830d Fix #8166: don't crash on loading an invalid roadtype newgrf
Initialization code for GRFFile::roadtype_map was copied from
railtype_map. But while RailType is a byte-sized enum and could thus
be initialized via memset, RoadType doesn't have a defined size.
2020-06-01 22:16:57 +01:00
Yexo
f4ed770cff Fix #8024: make online content gui more responsive while loading
Previously the internal content list was invalidated and sorted for
every new item added. Now the sorting is delayed until the GUI is
drawn, which means we only sort once per GUI tick.

Since the amount of incoming items per GUI tick is not controlled by
the GUI but rather by network speed, we were previously doing a lot
of duplicate work per tick, causing the mouse cursor to lag while
the list was initialized.
2020-06-01 22:16:57 +01:00
glx
89c8215b79 Fix: [Win32] Crash message not fitting in crash dialog 2020-06-01 22:16:57 +01:00
glx
911f9165cf Fix #7970: [Win32] Disable event loop on crash to prevent recursive faults 2020-06-01 22:16:57 +01:00
glx
2748a90bc9 Fix: Inconsistency in handling of SDL2 in source.list 2020-06-01 22:16:57 +01:00
glx
583a2221ca Fix: VS 2019 16.6 doesn't like newlines in <SettingsCommandLine> 2020-06-01 22:16:57 +01:00
glx22
86113008ab Fix e3511ec: [AzurePipeline] Don't loop infinitely on errors (#8165) 2020-06-01 22:16:57 +01:00
dP
31a9f549fb Fix: Trees disappear completely after a few years when they're not allowed to spread 2020-06-01 22:16:57 +01:00
glx22
8203adecb5 Fix #8161, e31def197: Lang files may have LF EOL (#8163) 2020-06-01 22:16:57 +01:00
Yexo
3d8e68f966 Fix #8155: Roadtype speed limit in toolbar dropdown in scenario editor was doubled 2020-06-01 22:16:57 +01:00
glx22
aca5d97a68 Fix: properly support utf-8 in baseset translation vbscript (#8154) 2020-06-01 22:16:57 +01:00
dP
fd8ca95947 Fix: Desync after house replacement 2020-06-01 22:16:57 +01:00
Matthijs Kooijman
9617fa727d Fix: sdl2-config would always be detected as present
The presence of sdl2-config is used go determine whether to look for
sdl2 first, or just sdl1. However, when sdl2-config is *not* present,
`which` returns an empty string. Due to lack of quoting, this produces
`[ -x ]`, rather than `[ -x "" ]` and it turns out the former actually
has a succesful exit status for some reason.

This was not a problem when just running configure, because it would
then just fail to detect sdl2 and fall back to sdl1. However, when
passing `--with-sdl` (without specifying a version), this would only
attempt to detect sdl2, even when sdl2-config was not present, but sdl1
is.

Adding quotes makes the check work as intended.
2020-06-01 22:16:57 +01:00
glx22
74b591c2e9 Fix #8142, 5aa6351: Buoy owner and tile owner can be different (#8143) 2020-06-01 22:16:57 +01:00
dP
78e558717c Fix #8137: New clients can't join (desync) after funding an industry 2020-06-01 22:16:57 +01:00
dP
cb9c4bf4a0 Codechange: Refactor FindStationsAroundTiles to avoid code duplication 2020-06-01 22:16:57 +01:00
glx22
e39c5829a2 Add: stations_near and industries_near cache check (#8139) 2020-06-01 22:16:57 +01:00
glx
a089c876ab Fix #8132: Corrupted savegame crashing OpenTTD on load 2020-06-01 22:16:57 +01:00
glx
1072c74bc4 Fix: Stop any gamelog action when recovering from SlError() 2020-06-01 22:16:57 +01:00
glx
bb251f45fc Fix #8119: Update docking area when clearing a shore rail tile 2020-06-01 22:16:57 +01:00
Charles Pigott
21aa339901 Add: [AzurePipelines] Ubuntu Focal (20.04) 64bit build for releases 2020-06-01 22:16:57 +01:00
Niels Martin Hansen
3132d29805 Fix: Two issues in MIDI file writer
Variable-length values would write threshold values with a byte too many.
System Exclusive messages would cause write to fail since the end byte was treated as part of next message.
2020-06-01 22:16:57 +01:00
SamuXarick
94581d352a Fix #8119, f538179: Update docking tile area when placing a diagonal rail next to a dock end (#8124) 2020-06-01 22:16:57 +01:00
glx22
cf27deb675 Fix #8117: Memory leak in admin port (#8122) 2020-06-01 22:16:57 +01:00
glx22
40d68273aa Add: docking tiles cache check (#8120) 2020-06-01 22:16:57 +01:00
glx
2cc244bde0 Fix #8021: limit savegame range for docking tiles fixing 2020-06-01 22:16:57 +01:00
duck
7872b1e0b5 Fix #8102: Update Windows installer strings to reference newer Windows version (#8114)
* Fix #8102: Update Windows installer strings to reference versions newer than 7

* Fix 2c53390: Version strings incorrectly capitalised
2020-06-01 22:16:57 +01:00
glx
22519b3b0d Update: Lang files 2020-06-01 22:16:57 +01:00
glx
5b2447e10c Codechange: Use a dynamic copyright year 2020-06-01 22:16:57 +01:00
Yexo
e0680c9ede Fix: reset roadtype/streetcartype info for non-road bridges 2020-06-01 22:16:57 +01:00
Yexo
ea895f05eb Fix #8108: always update tile_hash after updating v->tile 2020-06-01 22:16:57 +01:00
SamuXarick
37187df7ef Fix c01a2e2: crash on loading old savegames with invalid animated tile information 2020-06-01 22:16:57 +01:00
frosch
2faa89a98e Fix: OpenGFX download link did no longer work. (#8105) 2020-06-01 22:16:57 +01:00
frosch
4297cc5f21 Fix #8093: Build+Refit changed game-state in command test run, and thus caused desyncs.
Use DC_AUTOREPLACE for actions that shall be reversibe, in this case:
- Do not rearrange free wagons in test-run.
- Do not discard OrderBackups.
The latter was not triggered by actual auto-replace, since it does not set a 'user'.
2020-06-01 22:16:57 +01:00
frosch
591ca82845 Fix: When build+refit an engine, do not refit any free wagons that may get attached. 2020-06-01 22:16:57 +01:00
frosch
e90322f6e9 Codechange: Unify the tests whether build+refit is in simulation-test or real-run. 2020-06-01 22:16:57 +01:00
SamuXarick
978cc774ec Fix: [Script] ScriptMarine::AreWaterTilesConnected failed for aqueducts (#8074) 2020-06-01 22:16:57 +01:00
Charles Pigott
7f77b8c1e2 Doc: Prepare for 1.10.1 release 2020-04-13 18:39:51 +01:00
glx
2bf936bbbc Fix #8081: Check for waypoints when removing docking tiles 2020-04-13 18:39:51 +01:00
Pavel Stupnikov
eb8d79f41f Fix a5681d3e: Make goal question ID use 16 bits again (#8072) 2020-04-13 18:39:51 +01:00
glx
0737458ec4 Fix #8064: Incorrect display of refit capacity 2020-04-13 18:39:51 +01:00
frosch
7e659bc3da Fix #8060, 5880f14: Restore admin network API compatibility. 2020-04-13 18:39:51 +01:00
stormcone
612c912144 Fix #8055, c02ef3e: Crash when roadtype availability changed with the road toolbar open (#8058) 2020-04-13 18:39:51 +01:00
Charles Pigott
c8cd5f7f3a Doc: Prepare for 1.10.0 release 2020-03-31 23:08:53 +01:00
Charles Pigott
0c87ae1875 Update: Translations 2020-03-31 23:08:53 +01:00
Charles Pigott
cc458c9559 Add: Titlegame for 1.10 branch by ALEXbr 2020-03-31 23:08:53 +01:00
Charles Pigott
9f0371117b Codechange: Disable asserts for release 2020-03-31 23:08:53 +01:00
SamuXarick
b6d409f8a7 Fix: [Script] Random deviation upper bound range should be inclusive 2020-03-31 23:08:53 +01:00
SamuXarick
d0613bad11 Doc: [Script] Make it clear random_deviation and CONFIG_RANDOM range upper bounds are inclusive 2020-03-31 23:08:53 +01:00
Jonathan G Rennison
27cbee76b4 Codechange: Don't fail configure if SDL2 is not detected 2020-03-31 23:08:53 +01:00
glx
7e3eabdaae Fix #8043, c02ef3e4: Incorrect handling of global road/tram hotkeys 2020-03-31 23:08:53 +01:00
Sebastian Pauka
a4d73d74a2 Fix #7644: [Cocoa] Manually set colorspace to sRGB 2020-03-31 23:08:53 +01:00
SamuXarick
d4bd17d443 Fix #8020: Add missing docking tiles around industry neutral stations 2020-03-31 23:08:53 +01:00
SamuXarick
a82dca883f Fix #8039: [AI/GS] SetOrderFlags and GetOrderDestination didn't work for oil rigs 2020-03-31 23:08:53 +01:00
SamuXarick
18ad0fa983 Change: Open company window when clicking on a company goal (#8033) 2020-03-31 23:08:53 +01:00
SamuXarick
fd64c62bcd Fix: Ignore clicks on non-applicable global goals (#8035) 2020-03-31 23:08:53 +01:00
SamuXarick
b542ebfb52 Fix: [AI/GS] Consider neutral station setting when creating tile lists 2020-03-31 23:08:53 +01:00
SamuXarick
318b51c58a Fix: [AI/GS] CanBuildConnectedRoadPartsHere neighbours tiles were at times incorrect 2020-03-31 23:08:53 +01:00
Charles Pigott
df7f642a02 Codechange: [AzurePipelines] Update MacOS image to 10.14 2020-03-31 23:08:53 +01:00
Charles Pigott
a0dc9ef847 Change: Keep News Window usable by only storing the 1024 latest news messages 2020-03-31 23:08:53 +01:00
Andy
8b4501604c Fix: Provide two sets of tram tracks not one in the GUI icon for building tramway 2020-03-31 23:08:53 +01:00
SamuXarick
4082121511 Fix f5381798: Station::GetTileArea reduced docks to a single tile (#8014) 2020-03-31 23:08:53 +01:00
glx
40b3bc6f1a Fix #8011, f5381798: Dock tile in TTD savegame was only 2 bytes 2020-03-31 23:08:53 +01:00
frosch
b5a8510b9b Fix #7998: Crash when scripts tried to access companies with invalid IDs. 2020-03-31 23:08:53 +01:00
glx
aa7dbdc42e Fix: Ignore non-printable characters when layouting a string 2020-03-31 23:08:53 +01:00
LCD 47
2f57d65575 Fix: [SDL2] Support pasting from clipboard on Linux 2020-03-31 23:08:53 +01:00
Charles Pigott
ceae49a1d8 Fix #6399: Create parent directories if they don't already exist 2020-03-31 23:08:53 +01:00
Charles Pigott
dc2f10bf11 Doc: [Script] Add a note about how wagon connectivity works for scripts 2020-03-31 23:08:53 +01:00
Charlène
0643a3627f Fix: OpenBSD endianness detection 2020-03-31 23:08:53 +01:00
Charles Pigott
fd106cf67b Fix #7993: Compile warning in kick/ban debug messages 2020-03-31 23:08:53 +01:00
Niels Martin Hansen
3d5b729290 Fix #7958: Use NewGRF provided catenary sprites when either front or back is overridden 2020-03-31 23:08:53 +01:00
Niels Martin Hansen
81ed69d8d4 Codechange: Refactor road bridge catenary drawing 2020-03-31 23:08:53 +01:00
Samu
bd3ba91181 Fix #7944: Demolishing locks built on rivers didn't always restore the river 2020-03-31 23:08:53 +01:00
Charles Pigott
49d2a07f66 Fix #7988: Memory leak when using custom depot names 2020-02-09 12:02:32 +00:00
Charles Pigott
887dce4655 Update: Prepare for 1.10.0-RC1 2020-02-09 12:02:32 +00:00
translators
a499e9acdd Update: Translations from eints
russian: 2 changes by Lone_Wolf
2020-02-08 19:45:39 +01:00
glx
2b1a7ceb4e Fix #7976: Don't kick the client doing the rcon 2020-02-08 09:03:14 +01:00
Jonathan G Rennison
1a88fb5c91 Fix #7592: Do not cache road vehicle path within 8 tiles of destination with multiple entrances
Ported from jgrpp commit 79d5be7e265df3be8b73d484f0c7261b3c23229d
2020-02-07 23:02:10 +01:00
Niels Martin Hansen
9e632355f1 Fix #7525: Move autorenew setting to Basic category 2020-02-07 22:05:34 +01:00
Niels Martin Hansen
04ce1f0713 Fix #7885: [Fluidsynth] Use recommended method of setting sample rate 2020-02-07 21:01:11 +01:00
Johannes E. Krause
107283748a Feature: SLF_HEX to print hexadecimal numbers in the config file 2020-02-06 21:00:30 +00:00
Johannes E. Krause
f389d66e36 Fix: Loading SDT_INTLIST similar to loading SDT_NUMX 2020-02-06 21:00:30 +00:00
Johannes E. Krause
76eab18f02 Fix: Saving SDT_INTLIST handle unsigned values properly 2020-02-06 21:00:30 +00:00
Samu
3089c625e4 Fix #7088: close AI/GS textfile window when their data are invalid 2020-02-06 20:58:11 +00:00
stormcone
492d2704f1 Fix #7974: Crash when CTRL+click to show a vehicle group that is collapsed 2020-02-06 16:10:46 +00:00
Niels Martin Hansen
805ecd32be Fix 5880f147: Integer width warnings 2020-02-06 16:09:36 +00:00
Niels Martin Hansen
3fcb240f8e Fix d84b67e5: Station rating effects affecting too large area 2020-02-06 16:39:25 +01:00
translators
58c8ff456e Update: Translations from eints
korean: 2 changes by telk5093
2020-02-05 19:45:39 +01:00
Bjarni Thor
5880f1479f Feature #7756: Allow server to supply a reason to kicked/banned clients
This commit adds the missing feature of allowing the server owner to
    provide a reason for kicking/banning a client, which the client sees in
    a pop-up window after being kicked. The implementation extends the
    network protocol by adding a new network action called
    NETWORK_ACTION_KICKED that is capable of having an error string, unlike
    the other network error packages.  Additionally, the kick function
    broadcasts a message to all clients about the kicked client and the
    reason for the kick.
2020-02-04 22:17:39 +00:00
glx
b5d56559d2 Fix #7969: limit recursion during alias execution 2020-02-04 18:41:38 +01:00
translators
ac7cc18ab9 Update: Translations from eints
czech: 22 changes by djst
2020-02-02 19:45:40 +01:00
Jonathan G Rennison
14af8701df Fix #6566: Fix signed integer overflow in viewport draw area chunking
This caused drawing areas larger than 2097151 pixels at 8x zoom to
not be subdivided into smaller chunks as required.
This resulted in pathological performance issues in the sprite sorter.
2020-02-02 15:37:14 +01:00
glx
196157b29e Fix #7966: SQInteger is 64-bit, print it as 64-bit 2020-02-01 10:14:51 +00:00
translators
be9ca4689e Update: Translations from eints
korean: 4 changes by telk5093
2020-01-30 19:45:39 +01:00
kiwitreekor
5df01bf95e Add: [NewGRF] Station variable 6A, querying GRFID of nearby station tiles (#7956) 2020-01-29 21:23:23 +01:00
Jonathan G Rennison
2fee030a26 Change: Algorithm for transfer feeder payments
The original algorithm pays intermediate legs in feeder systems based
on the start and end stations of that particular leg.
This tends to result in large negative payments on the final leg for
journeys with many feeder legs, as the overall feeder payment increases
with the number of legs, and the final leg is penalised for discrepancies
between the previous leg payments and the actual payment for delivery
from the source to the destination.
The feeder share setting is a partial mitigation, however it is difficult
to tune as a suitable value depends on the number of legs and the network
topology, which are often not the same for all vehicles.

The new incremental algorithm pays the cargo payment from the source
station to the end station of the current leg, minus any previous
transfer feeder payments for each leg.
This prevents unbounded increase of feeder payments and therefore avoids
the issue of excessive negative payments on the final leg.
Feeder payments may be negative, e.g. in the case of poorly performing
or highly indirect legs. This is better than penalising the final leg.
This mode reduces the need to tune the feeder shares setting to the
current network.

The feeder share setting applies in the existing way.
2020-01-28 23:37:16 +01:00
Patric Stout
a38122e6f2 Fix: [AzurePipelines] the changelog-generation-script was mixing UTC and non-UTC
'date -u' returns the time in UTC. 'git log' uses local time. In
result, when a machine is on for example +0100, it would generate
the changelog of 7 days 1 hour, instead of 7 days. This is a silly
oversight.
2020-01-26 21:11:47 +00:00
translators
791eaedb64 Update: Translations from eints
tamil: 13 changes by aswn
2020-01-26 19:45:44 +01:00
fff05cf117 Fix #7868: Missing override attribute. (#7963) 2020-01-26 16:19:04 +00:00
JMcKiern
2158e26b9e Fix #7950: Incorrect setup of normal screenshot viewport 2020-01-26 14:48:35 +00:00
glx
bf4672864d Fix #7960: use the same method as findversion.sh to determine tag 2020-01-26 14:47:54 +00:00
Niels Martin Hansen
c8779fb311 Feature: NewGRF callback profiling (#7868)
Adds a console command newgrf_profile to collect some profiling data about NewGRF action 2 callbacks and produce a CSV file.
2020-01-26 13:45:51 +01:00
translators
f88ac83408 Update: Translations from eints
indonesian: 1 change by fanioz
2020-01-24 19:45:40 +01:00
glx
341941af85 Fix #7952: don't try to access destroyed QueryStrings 2020-01-22 19:53:27 +00:00
glx
9d5dd893cd Codechange: [AzurePipelines] remove commit-checker 2020-01-19 09:05:20 +00:00
glx
fb3de33a38 Add: [Actions] commit-checker workflow 2020-01-19 09:05:20 +00:00
JMcKiern
6dfe5c852e Fix #7927: Incorrect resolution shown in "Huge screenshot" query window. (#7949) 2020-01-18 23:05:51 +01:00
Patric Stout
3b177af826 Add: [Doxygen] Add the current version of documentation in header (#7940)
While at it, renamed the project names to reflect how we currently
refer to them.
2020-01-15 23:07:37 +01:00
xdavidwu
8fe38afd2b Fix: [SDL2] Correct name of the video driver in debug log
SDL_GetVideoDriver(0) returns name of first video driver included in
the library, not the driver currently used.
SDL_GetCurrentVideoDriver() does what we want here.
2020-01-15 20:16:53 +00:00
Pavel Stupnikov
d7a928a08b Feature: GS method to control engine availability for a specific company (#7791)
* Feature: GS method to allow company to use an engine before its introduction date

* Feature: GS method to retire an engine early for a specific company
2020-01-15 18:46:26 +01:00
translators
4366f8e46a Update: Translations from eints
finnish: 8 changes by ln
italian: 25 changes by AlphaJack
2020-01-14 19:45:39 +01:00
translators
5a4b27d73a Update: Translations from eints
finnish: 54 changes by ln
2020-01-13 19:45:41 +01:00
Berbe
2fc2058b3b Feature: Auto-restart loads the original resources again
If the game was started loading a savegame or scenario, auto-restart will load a new random map.
This is inconsistent with the case in which a heightmap was loaded, as in that case the heightmap is kept as a basis for a new game.
This proposal solves this heterogeneity be considering the originally loaded resource shall be kept, hence savegames & scenarios shall be reloaded
2020-01-12 23:47:19 +01:00
glx
dbbd0f5ddc Fix: [OSX] Don't show a crash/assertion message box for a GUI-less video driver. 2020-01-12 22:02:10 +01:00
Jonathan G Rennison
87700bfe0e Codechange: Use cached town name for town list window filtering 2020-01-12 19:37:43 +00:00
Jonathan G Rennison
d35f35a968 Codechange: Use cached town, station, industry names for list window sorting
This is to avoid needing to expensively regenerate name strings on
every comparison when sorting by name in the town/station/industry
list windows.
2020-01-12 19:37:43 +00:00
Jonathan G Rennison
c3223903ed Codechange: Cache resolved town, station and industry name strings 2020-01-12 19:37:43 +00:00
Jonathan G Rennison
f1734e7815 Change: Only resort industry directory window on production change if necessary 2020-01-12 19:37:43 +00:00
Jonathan G Rennison
22ba048c89 Change: Only resort town directory window on population change if necessary 2020-01-12 19:37:43 +00:00
translators
f2d230d91c Update: Translations from eints
russian: 14 changes by Lone_Wolf
2020-01-12 19:45:41 +01:00
frosch
a4be4514c9 Fix #7925: Reset temporary saveload data at the start of loading a savegame instead of at the end.
Otherwise temporary data may be passed from an aborted load action to the next load action.
2020-01-12 19:08:38 +01:00
Milek7
41163331aa Fix: Silence all notes when stopping song in fluidsynth 2020-01-12 16:19:02 +00:00
Patric Stout
1ab3fe6b85 Add: [DorpsGek] announce new tags on IRC (#7931) 2020-01-12 17:01:17 +01:00
Milek7
823333c4b0 Fix: correct checking of fluid_settings_setnum return code 2020-01-12 14:55:20 +00:00
Milek7
a411ce18c9 Fix: avoid using string pointer after scope end 2020-01-12 15:20:08 +01:00
dP
1225693b9c Feature: Improved logic of sharing industry production between 3 or more stations 2020-01-12 14:01:12 +00:00
translators
b144258bf0 Update: Translations from eints
finnish: 19 changes by ln
dutch: 17 changes by JanWillem
danish: 109 changes by nielsmh
spanish (mexican): 1 change by Absay
korean: 1 change by telk5093
2020-01-11 19:45:38 +01:00
translators
34b7cb6c03 Update: Translations from eints
finnish: 3 changes by ln
spanish (mexican): 7 changes by Absay
2020-01-10 19:45:40 +01:00
Samu
8b0e4bb101 Codechange: Use const instead of magic number for vehicle profit threshold 2020-01-09 13:51:58 +00:00
Jonathan G Rennison
6e7117e04c Codechange: [Linkgraph] Skip MCF source node Dijkstra when all demand satisfied
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.
2020-01-08 22:49:53 +01:00
translators
190e074287 Update: Translations from eints
russian: 2 changes by Lone_Wolf
2020-01-08 19:45:41 +01:00
translators
5a31efd98d Update: Translations from eints
finnish: 1 change by hpiirai
2020-01-07 19:45:39 +01:00
Niels Martin Hansen
7413d65c2a Cleanup: Unused music GUI strings 2020-01-07 18:13:58 +01:00
Niels Martin Hansen
f02b643a44 Change: Show volume sliders with wedges instead of boxy slider 2020-01-07 18:13:58 +01:00
Niels Martin Hansen
35c55dfe70 Add: Filled polygon drawing function 2020-01-07 18:13:58 +01:00
SamuXarick
fa71375ec2 Fix e04ca90: squirrel export script got forgotten 2020-01-07 15:07:24 +00:00
glx
5c10c426fe Fix 196d5868: Always apply filter on town directory rebuild 2020-01-07 14:21:35 +00:00
Jonathan G Rennison
150dfba95b Codechange: Remove std::function from Pool iteration wrapper
Add a separate template wrapper for filtered iteration
2020-01-07 09:00:45 +00:00
Jonathan G Rennison
4cc1420beb Fix: Non-deterministic name sorting in industry directory window
In the case where multiple industries have the same name, sorting
in the industry directory window is non-deterministic.
This results in the order changing on each re-sort, and is noticeable
when the industries have different production or transported values.
2020-01-07 09:03:36 +01:00
Samu
a0066ebca1 Cleanup: Remove unused parameter 2020-01-06 23:20:35 +00:00
stormcone
eb07e174f1 Fix #7908, b524f1a: "Show the NewGRF name in the build vehicle window" is missing the "On/Off" display. 2020-01-06 19:22:42 +00:00
translators
1812b0cf49 Update: Translations from eints
finnish: 4 changes by hpiirai
english (us): 20 changes by Supercheese
french: 7 changes by glx
korean: 7 changes by telk5093
2020-01-06 19:45:41 +01:00
Charles Pigott
5b52f25902 Fix e558aa8: Compiler warning about unused value (and move some variable declarations to where they're used) 2020-01-05 23:31:20 +00:00
glx
39e6247bec Fix #7899, 196d5868: don't trigger filter changes more than expected 2020-01-05 22:51:27 +00:00
Niels Martin Hansen
ac3bc30a30 Add: Highlight item under mouse in file browser 2020-01-05 23:50:00 +01:00
Niels Martin Hansen
838117b05e Doc: Missing member description 2020-01-05 23:50:00 +01:00
stormcone
596fb5d54a Change: In the industry directory window an industry will be greyed out if it temporarily does not accept the cargo selected by the acceptance cargo filter. 2020-01-05 20:52:17 +00:00
stormcone
808253c29c Change: Move the filtered cargo to the first place in the industry directory window's cargo lists 2020-01-05 20:52:17 +00:00
stormcone
70f9c3c655 Feature: Industry directory cargo filtering 2020-01-05 20:52:17 +00:00
Charles Pigott
ab9042145e Fix #6667: Also recalculate bridge costs for 'spectated' AI companies 2020-01-05 20:51:45 +00:00
Charles Pigott
d1cead7f25 Fix: When loading old timetabled saves, also reset cached timetable duration 2020-01-05 20:51:26 +00:00
Charles Pigott
cddb8a4605 Fix #7587: Crash when loading saves with waypoints with invalid locations 2020-01-05 20:51:26 +00:00
Jonathan G Rennison
12380fc1bb Fix: Assertion failure when post road-works cleanup removes all road pieces 2020-01-05 20:44:07 +00:00
translators
12f4602f57 Update: Translations from eints
finnish: 3 changes by hpiirai
2020-01-05 19:45:40 +01:00
translators
7be9c28037 Update: Translations from eints
korean: 2 changes by telk5093
2020-01-04 19:45:39 +01:00
Niels Martin Hansen
f401622149 Feature: Script API to change town rating of companies 2020-01-04 19:07:13 +01:00
stormcone
b524f1ae21 Feature: Show the name of the NewGRF in the build vehicle window. 2020-01-04 18:42:35 +01:00
TELK
e04ca904a9 Feature: Minimap screenshot 2020-01-04 18:21:38 +01:00
translators
e7922cd078 Update: Translations from eints
spanish (mexican): 18 changes by Absay
2020-01-03 19:45:40 +01:00
SamuXarick
9e7c5235e8 Fix #7891: Actually check the vehicle type before casting 2020-01-03 00:04:39 +00:00
translators
9e4533dc8f Update: Translations from eints
luxembourgish: 131 changes by Phreeze
french: 6 changes by arikover
spanish (mexican): 20 changes by Absay
2020-01-02 19:45:39 +01:00
translators
3a557b0336 Update: Translations from eints
finnish: 11 changes by hpiirai
korean: 6 changes by telk5093
2020-01-01 19:45:41 +01:00
pnda
e558aa8ff4 Feature: Screenshot window 2020-01-01 10:19:12 +00:00
glx
90f4abe03f Fix #7887: missing beep for some main toolbar buttons 2020-01-01 10:34:26 +01:00
Daniel Lee
24bace32ba Fix #7625: Road infrastructure cost is correctly updated on upgrading your own roads. 2019-12-31 19:17:56 +00:00
translators
f6ce5c4563 Update: Translations from eints
french: 4 changes by arikover
korean: 5 changes by telk5093
2019-12-30 19:45:44 +01:00
Niels Martin Hansen
86107028a4 Fix: Allow old NewGRF industries to blank out in/out cargo slots (#7882) 2019-12-29 14:36:45 +01:00
translators
e18f1703d2 Update: Translations from eints
spanish (mexican): 1 change by Absay
russian: 4 changes by Lone_Wolf
2019-12-28 19:45:41 +01:00
Niels Martin Hansen
2fd871e2af Feature: Configurable game ending year
Functionally reverts 683b65ee1
2019-12-28 12:27:39 +01:00
Konstantin Gribov
69f9529ba3 Add: Missing keycodes for hotkeys.cfg (#7850)
Added missing keycodes mapping to `_keycode_to_name` array
to allow their use in `hotkeys.cfg`.

Also reordered them according to `WindowKeyCodes` order.

Signed-off-by: Konstantin Gribov <grossws@gmail.com>
2019-12-27 08:32:34 +00:00
Niels Martin Hansen
0e78393774 Fix: Reference correct section in README file for baseset info 2019-12-26 19:50:07 +01:00
Niels Martin Hansen
7f25032766 Fix: Let bootstrap GUI work on Win32 with Uniscribe but no Freetype 2019-12-26 19:50:07 +01:00
translators
a6901f8ae8 Update: Translations from eints
russian: 1 change by Lone_Wolf
2019-12-26 19:45:41 +01:00
translators
16537b472c Update: Translations from eints
dutch: 1 change by JanWillem
2019-12-25 19:45:40 +01:00
Charles Pigott
18f03a300b Update: Prepare for 1.10.0-beta2 release 2019-12-24 22:20:28 +00:00
translators
d427559eba Update: Translations from eints
french: 1 change by arikover
2019-12-24 19:45:40 +01:00
SamuXarick
40605efd1c Codechange: Use KDTree for AirportGetNearestTown (#7424) 2019-12-24 17:37:30 +00:00
Michał Janiszewski
c7ead8388c Codechange: Improve MSVC ARM64 support 2019-12-24 13:14:11 +00:00
Mingwei Samuel
26ce4eb45d Fix #7430: when train visits station, only reset time_since_pickup if has room to load 2019-12-23 21:07:45 +01:00
Samu
f0ff7003fd Fix: Snowline height interval is now 1, in both World Generation and Settings windows
- Previously, it was 1 in World Gen window, but 5 in Settings window
2019-12-23 21:05:39 +01:00
translators
dbe44e80f1 Update: Translations from eints 2019-12-23 19:45:40 +01:00
stormcone
fea5151ee1 Feature: Control + clicking on a vehicle in the vehicle list window opens the vehicle group window focused on the vehicle's group. 2019-12-23 18:04:10 +00:00
stormcone
798e9ee93e Feature: Add a button to the vehicle advisory news window to open the group window. 2019-12-23 18:04:10 +00:00
stormcone
cc1d72c3a3 Feature: Control + click on the vehicle details button in the vehicle view window opens the vehicle group window, then selects and scrolls to the vehicle's group. 2019-12-23 18:04:10 +00:00
stormcone
a363933d08 Feature: Control + click on a vehicle in the vehicle group window selects and scrolls to the vehicle's group. 2019-12-23 18:04:10 +00:00
stormcone
551bde77a4 Add: A function which selects and scrolls to a particular group in the vehicle group window. 2019-12-23 18:04:10 +00:00
glx
42144ecd56 Add: a TextColour flag to ignore colour changes from strings 2019-12-23 17:30:13 +00:00
frosch
b769eb30c4 Fix: Setting the default railtype to 'first/last available' did not work with NewGRF defined railtypes. 2019-12-23 17:23:20 +00:00
frosch
6fa217dfc8 Codechange: Use RAILTYPE_BEGIN instead of RAILTYPE_RAIL when the intention is iteration. 2019-12-23 17:23:20 +00:00
frosch
3d29c9483b Codechange: Use a switch with fall-through instead of a if-sequence with context data between cases. 2019-12-23 17:23:20 +00:00
frosch
7f351fd7c1 Fix: Action7/9 conditions 0F..12 reported roadtypes as valid tramtypes and vice versa. 2019-12-23 17:23:20 +00:00
frosch
bc7f92815b Cleanup: Remove unused constants. The value of the tram constant was also incorrect. 2019-12-23 17:23:20 +00:00
frosch
e5dd19b0de Cleanup: Properties 12 and 15 do not exist for road/tramtypes. 2019-12-23 17:23:20 +00:00
translators
b0d443d525 Update: Translations from eints
korean: 1 change by telk5093
2019-12-22 19:45:40 +01:00
glx
faaec445d6 Fix: [MinGW] undefined references when _FORTIFY_SOURCE > 0 2019-12-21 20:13:28 +01:00
glx
e3c75a30ba Fix: unused variable warnings 2019-12-21 20:13:03 +01:00
glx
ae532008ff Cleanup: remove FOR_ALL_ITEMS 2019-12-21 20:13:03 +01:00
glx
ee7a8eebca Codechange: Replace FOR_ALL_TOWNS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
0b489f9924 Codechange: Replace FOR_ALL_SUBSIDIES with range-based for loops 2019-12-21 20:13:03 +01:00
glx
847e5f33d4 Codechange: Replace story related FOR_ALL with range-based for loops 2019-12-21 20:13:03 +01:00
glx
869581eb23 Codechange: Replace FOR_ALL_SIGNS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
b91abd3af9 Codechange: Replace FOR_ALL_ROADSTOPS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
514565fad6 Codechange: Replace FOR_ALL_OBJECTS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
11f178a312 Codechange: Replace FOR_ALL_STORAGES with range-based for loops 2019-12-21 20:13:03 +01:00
glx
d8a1be48cd Codechange: Replace vehicle related FOR_ALL with range-based for loops 2019-12-21 20:13:03 +01:00
glx
9892d90b26 Codechange: Replace order related FOR_ALL with range-based for loops 2019-12-21 20:13:03 +01:00
glx
41232f18c1 Codechange: Replace network related FOR_ALL with range-based for loops 2019-12-21 20:13:03 +01:00
glx
09fa39c5b5 Codechange: Replace linkgraph related FOR_ALL with range-based for loops 2019-12-21 20:13:03 +01:00
glx
00c2a98cf3 Codechange: Replace FOR_ALL_INDUSTRIES with range-based for loops 2019-12-21 20:13:03 +01:00
glx
4ae829cb27 Codechange: Replace FOR_ALL_GROUPS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
f58ce3db19 Codechange: Replace FOR_ALL_GOALS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
1f6b3a37f9 Codechange: Replace FOR_ALL_ENGINES with range-based for loops 2019-12-21 20:13:03 +01:00
glx
1c92ba8ebe Codechange: Replace FOR_ALL_CARGO_PAYMENTS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
fa9769f81a Codechange: Replace FOR_ALL_DEPOTS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
5fce5fa300 Codechange: Replace FOR_ALL_CARGOPACKETS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
60e3cf8aff Codechange: Replace FOR_ALL_ENGINE_RENEWS with range-based for loops 2019-12-21 20:13:03 +01:00
glx
ddabfed1cd Codechange: Replace station related FOR_ALL with range-based for loops 2019-12-21 20:13:03 +01:00
glx
3a14cea068 Codechange: Replace FOR_ALL_COMPANIES with range-based for loops 2019-12-21 20:13:03 +01:00
glx
68f22134cb Add: Allow iteration of pools in range-based for loops 2019-12-21 20:13:03 +01:00
translators
379402f02e Update: Translations from eints
croatian: 9 changes by VoyagerOne
2019-12-21 19:45:41 +01:00
Samu
96f8c13543 Fix: Custom sea level default value is now equal to minimum value, not lower
Custom sea level default value was lower than the minimum
2019-12-21 18:12:01 +00:00
translators
e54184d18b Update: Translations from eints
portuguese: 16 changes by mcbanhas
2019-12-18 19:45:40 +01:00
glx
e001d87569 Add #7801: [Script] more error mappings 2019-12-17 21:35:07 +00:00
translators
94cc0edb70 Update: Translations from eints
portuguese: 225 changes by mcbanhas
2019-12-17 19:45:38 +01:00
translators
df2a19ec87 Update: Translations from eints
german: 9 changes by planetmaker
portuguese: 19 changes by mcbanhas
2019-12-16 19:45:41 +01:00
translators
f7bf8e2da9 Update: Translations from eints
german: 11 changes by mini1025
2019-12-10 19:45:40 +01:00
Jonathan G Rennison
35dc377a58 Fix: Infrastructure total update when removing tram road stop
The wrong road owner was used when updating the tram infrastructure total.
This could result in desyncs, negative infrastructure totals, etc.
2019-12-08 15:12:56 +01:00
translators
03bbae7fe9 Update: Translations from eints
ukrainian: 56 changes by nsergiy
2019-12-07 19:45:40 +01:00
Niels Martin Hansen
9900af38f5 Fix #7847: Use ViewportSign coordinates for sign Kdtree coordinates (#7849)
Ensure the same coordinates are used for station/town/player signs regardless of how the landscape changes below it after the coordinates were first determined.

By keeping track of whether each ViewportSign is valid for Kdtree use (and only ever registering the viewport sign when the object is valid) a lot of code can be simplified and become more robust at the same time.
2019-12-01 23:17:33 +01:00
translators
f91c701ffe Update: Translations from eints
hungarian: 1 change by Brumi
2019-12-01 19:45:40 +01:00
stormcone
40ebf3c765 Fix: Do not refer to a function in the documentation that was removed years ago (#7844)
The 'DoDrawString' was removed with this commit: f11300d
2019-11-25 22:59:03 +01:00
glx22
d865916a07 Fix #7836: Check coherency of NewGRF parameter min/max (#7840) 2019-11-23 13:21:01 +00:00
translators
ef8455f549 Update: Translations from eints
vietnamese: 73 changes by myquartz
2019-11-20 19:45:39 +01:00
frosch
61dba850af Revert #7837, 7e22f243e: OpenTTD tries to replicate the original game mechanics.
Making numbers look nice and correlate is no goal, and in this case they actually did not correlate.
2019-11-20 08:01:37 +00:00
translators
c7b703d426 Update: Translations from eints
vietnamese: 36 changes by myquartz
2019-11-19 19:45:38 +01:00
Yourself
7e22f243ed Fix: typo in town growth rates (#7837) 2019-11-18 16:20:47 +01:00
translators
d242b1824c Update: Translations from eints
vietnamese: 19 changes by myquartz
russian: 5 changes by Lone_Wolf
korean: 5 changes by telk5093, 1 change by kevinhigh
2019-11-17 19:45:40 +01:00
translators
70f8c729d4 Update: Translations from eints
french: 7 changes by glx
2019-11-16 19:45:39 +01:00
glx22
e3dc65978d Fix e3511ecac: Don't use bash specific syntax (again) (#7835) 2019-11-16 14:23:25 +00:00
Charles Pigott
60cbddbb5f Fix #7606: Game crash when trying to clean up a crashed script
Also fix another possible memory leak
2019-11-15 21:06:09 +01:00
Charles Pigott
cf354f6668 Codechange: new instead of malloc 2019-11-15 21:06:09 +01:00
glx22
ddffe32f15 Fix #7646: Incomplete cleanup for non-threaded world generation failure (#7805) 2019-11-14 20:13:15 +00:00
glx22
0bdbd509be Fix #7673: [Script] Allow removal of custom town text (#7834) 2019-11-14 20:10:03 +00:00
translators
b533c66f42 Update: Translations from eints
finnish: 5 changes by hpiirai
galician: 183 changes by Michi
polish: 5 changes by azabost
dutch: 6 changes by JanWillem
spanish (mexican): 5 changes by Absay
2019-11-14 19:45:40 +01:00
Jonathan G Rennison
a1d6354caf Fix: Out of bounds tile access in ErrmsgWindow::OnInitialPosition
This fixes part A of #7619, but not part B.

Vehicle::x_pos and Vehicle::y_pos are not required to be within the map bounds.

See also: GetTileHeightBelowAircraft()
2019-11-14 08:13:44 +01:00
glx
da2504a0de Fix e3511ecac: don't use bash specific syntax 2019-11-13 22:11:45 +01:00
Andy
cfc4568ddc Doc: revised README to be more helpful to casual GitHub visitors 2019-11-13 20:40:18 +01:00
translators
b8abd54181 Update: Translations from eints
czech: 5 changes by djst
2019-11-13 19:45:40 +01:00
glx
196247ae71 Codechange: [AzurePipeline] move docs and source to developer files section 2019-11-13 18:53:38 +01:00
glx
e3511ecacd Codechange: [AzurePipeline] add developer files section in manifest 2019-11-13 18:53:38 +01:00
glx
9fc6329066 Cleanup: Remove unused strings 2019-11-13 08:11:37 +00:00
glx
fa657c8360 Fix #7631: 16 out cargo support for industry directory 2019-11-13 08:11:37 +00:00
translators
4eab70f84e Update: Translations from eints
polish: 115 changes by azabost
vietnamese: 5 changes by nglekhoi
2019-11-10 19:45:40 +01:00
S. D. Cloudt
13cc8a0cee Cleanup: Removed SVN headers 2019-11-10 17:59:20 +00:00
Jonathan G Rennison
a15ace0f5b Fix #7783, Fix #7816: [SDL2] Fix input handling in edit context
In particular this fixes handling of the shift key
2019-11-10 17:58:42 +00:00
Jonathan G Rennison
1dba06656d Codechange: Add utility function for whether the focused window is a console 2019-11-10 17:58:42 +00:00
Jonathan G Rennison
81f159434d Codechange: Add EditBoxGainedFocus method to VideoDriver base class 2019-11-10 17:58:42 +00:00
Jonathan G Rennison
46f7c6a641 Change: [SDL2] Add an "unprintable" flag to struct VkMapping
SDL_Keysym::sym is not suitable for checking whether the character
is printable or not
2019-11-10 17:58:42 +00:00
Jonathan G Rennison
d41378c00a Fix: [SDL2] Page down key not handled
SDLK_PAGEUP and SDLK_PAGEDOWN are not sequential
They must have separate entries in _vk_mapping
2019-11-10 17:58:42 +00:00
Jonathan G Rennison
3db399d7d9 Fix: [SDL2] Detection of backtick scancode
SDL_Keysym::scancode is a SDL_SCANCODE_* constant, not a raw scan code
2019-11-10 17:58:42 +00:00
Samu
3d362f2513 Fix #7697: Add a Missing AddProducedCargo proc for HQ
On TileLoop_Object, HQs are able to produce and move passengers and mail to stations, but querying the HQ tiles for cargo supplied was returning nothing. This makes it so that they return +1 to both passengers and mail.
2019-11-10 17:58:02 +00:00
Jonathan G Rennison
2be619ea88 Fix #7820: Heap use after free when removing oil rig 2019-11-03 00:39:38 +01:00
translators
460f73cd2d Update: Translations from eints
tamil: 22 changes by aswn
2019-11-02 19:45:41 +01:00
Charles Pigott
6929429f0f Fix ccb4c37: Use of possibly uninitialised pointer (#7818) 2019-11-02 13:24:38 +00:00
Charles Pigott
729caa135b Fix: Remove duplicate entry from changelog 2019-11-02 11:31:59 +00:00
Charles Pigott
3775381c10 Fix: [Pipelines] Account for versions being more than one digit when generating changelog output 2019-11-02 11:31:59 +00:00
SamuXarick
ccb4c3797f Fix #5405: Aircraft could route to depots outside their range (#7104) 2019-11-02 11:26:04 +00:00
Nikolas Nyby
4884dcacba Fix #7784: up/down/home/end key behavior in SDL2
Closes #7784.
2019-11-01 23:41:47 +01:00
Michael Lutz
d5a9bd404a Codechange: [OSX] Use std::unique_ptr with a custom deleter to simply memory management of Core Foundation types. 2019-11-01 22:32:53 +01:00
translators
58122983fb Update: Translations from eints
korean: 6 changes by telk5093
2019-10-30 19:45:40 +01:00
1403 changed files with 7346 additions and 7092 deletions

View File

@@ -12,3 +12,4 @@ notifications:
commit-comment:
pull-request:
issue:
tag-created:

45
.github/workflows/commit-checker.yml vendored Normal file
View File

@@ -0,0 +1,45 @@
name: Commit checker
on:
pull_request:
jobs:
commit-checker:
name: Commit checker
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 4
- name: Get pull-request commits
run: |
set -x
# actions/checkout did a merge checkout of the pull-request. As such, the first
# commit is the merge commit. This means that on HEAD^ is the base branch, and
# on HEAD^2 are the commits from the pull-request. We now check if those trees
# have a common parent. If not, we fetch a few more commits till we do. In result,
# the log between HEAD^ and HEAD^2 will be the commits in the pull-request.
DEPTH=4
while [ -z "$(git merge-base HEAD^ HEAD^2)" ]; do
git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --deepen=${DEPTH} origin HEAD
DEPTH=$(( ${DEPTH} * 4 ))
done
# Just to show which commits we are going to evaluate.
git log --oneline HEAD^..HEAD^2
- name: Checkout commit-checker
uses: actions/checkout@v2
with:
repository: OpenTTD/OpenTTD-git-hooks
path: git-hooks
ref: master
- name: Check commits
run: |
set -x
HOOKS_DIR=./git-hooks/hooks GIT_DIR=.git ./git-hooks/hooks/check-commits.sh HEAD^..HEAD^2
echo "Commit checks passed"

60
CREDITS.md Normal file
View File

@@ -0,0 +1,60 @@
### The OpenTTD team (in alphabetical order):
- Grzegorz Duczyński (adf88) - General coding (since 1.7.2)
- Albert Hofkamp (Alberth) - GUI expert (since 0.7)
- Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)
- Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)
- Christoph Elsenhans (frosch) - General coding (since 0.6)
- Loïc Guilloux (glx) - Windows Expert (since 0.4.5)
- Charles Pigott (LordAro) - General / Correctness police (since 1.9)
- Michael Lutz (michi_cc) - Path based signals (since 0.7)
- Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9)
- Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)
- Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5)
- Ingo von Borstel (planetmaker) - General coding, Support (since 1.1)
- Remko Bijker (Rubidium) - Lead coder and way more (since 0.4.5)
- José Soler (Terkhen) - General coding (since 1.0)
- Leif Linse (Zuu) - AI/Game Script (since 1.2)
### Inactive Developers:
- Jean-François Claeys (Belugas) - GUI, newindustries and more (0.4.5 - 1.0)
- Bjarni Corfitzen (Bjarni) - macOS port, coder and vehicles (0.3 - 0.7)
- Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)
- Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)
- Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)
- Attila Bán (MiHaMiX) - WebTranslator 1 and 2 (0.3 - 0.5)
- Zdeněk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3)
- Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5)
- Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active)
- Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3)
### Retired Developers:
- Tamás Faragó (Darkvater) - Ex-Lead coder (0.3 - 0.5)
- Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)
- Emil Djupfeld (egladil) - macOS port (0.4 - 0.6)
- Simon Sasburg (HackyKid) - Bug fixer (0.4 - 0.4.5)
- Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)
- Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)
- Petr Baudiš (pasky) - Many patches, newgrf support, etc. (0.3 - 0.3)
- Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)
- Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)
### Thanks to:
- Josef Drexler - For his great work on TTDPatch.
- Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and track foundations
- Stefan Meißner (sign_de) - For his work on the console
- Mike Ragsdale - OpenTTD installer
- Christian Rosentreter (tokai) - MorphOS / AmigaOS port
- Richard Kempton (RichK67) - Additional airports, initial TGP implementation
- Alberto Demichelis - Squirrel scripting language
- L. Peter Deutsch - MD5 implementation
- Michael Blunck - For revolutionizing TTD with awesome graphics
- George - Canal graphics
- Andrew Parkhouse (andythenorth) - River graphics
- David Dallaston (Pikka) - Tram tracks
- All Translators - For their support to make OpenTTD a truly international game
- Bug Reporters - Thanks for all bug reports
- Chris Sawyer - For an amazing game!

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -9,8 +7,8 @@
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = OpenTTD
PROJECT_NUMBER =
PROJECT_NAME = "OpenTTD Source"
PROJECT_NUMBER = $(VERSION)
PROJECT_BRIEF =
PROJECT_LOGO =
OUTPUT_DIRECTORY = docs/source/

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -93,6 +91,7 @@ ISODATE := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ')
GITHASH := $(shell echo "$(VERSIONS)" | cut -f 4 -d' ')
ISTAG := $(shell echo "$(VERSIONS)" | cut -f 5 -d' ')
ISSTABLETAG := $(shell echo "$(VERSIONS)" | cut -f 6 -d' ')
YEAR := $(shell echo "$(VERSIONS)" | cut -f 7 -d' ')
# Make sure we have something in VERSION and ISODATE
ifeq ($(VERSION),)
@@ -274,10 +273,10 @@ endif
# Revision files
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g" > $(SRC_DIR)/rev.cpp
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g;s@!!YEAR!!@$(YEAR)@g" > $(SRC_DIR)/rev.cpp
$(SRC_DIR)/os/windows/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/os/windows/ottdres.rc.in
$(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g" > $(SRC_DIR)/os/windows/ottdres.rc
$(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g;s@!!YEAR!!@$(YEAR)@g" > $(SRC_DIR)/os/windows/ottdres.rc
FORCE:

796
README.md
View File

@@ -3,215 +3,78 @@
## Table of contents
- 1.0) [About](#10-about)
- 1.1) [Compiling OpenTTD](#11-compiling-openttd)
- 1.2) [Contributing to OpenTTD](#12-contributing-to-openttd)
- 2.0) [Contacting](#20-contacting)
- 2.1) [Reporting bugs](#21-reporting-bugs)
- 2.2) [Reporting desyncs](#22-reporting-desyncs)
- 3.0) [Supported platforms](#30-supported-platforms)
- 4.0) [Installing and running OpenTTD](#40-installing-and-running-openttd)
- 4.1) [(Required) 3rd party files](#41-required-3rd-party-files)
- 4.2) [OpenTTD directories](#42-openttd-directories)
- 4.3) [Portable installations (portable media)](#43-portable-installations-portable-media)
- 4.4) [Files in tar (archives)](#44-files-in-tar-archives)
- 5.0) [OpenTTD features](#50-openttd-features)
- 5.1) [Logging of potentially dangerous actions](#51-logging-of-potentially-dangerous-actions)
- 5.2) [Frame rate and performance metrics](#52-frame-rate-and-performance-metrics)
- 6.0) [Configuration file](#60-configuration-file)
- 7.0) [Translating](#70-translating)
- 7.1) [Translation](#71-translation)
- 7.2) [Previewing](#72-previewing)
- 8.0) [Troubleshooting](#80-troubleshooting)
- 9.0) [Licensing](#90-licensing)
- X.X) [Credits](#xx-credits)
- 1.1) [Downloading OpenTTD](#11-downloading-openttd)
- 1.2) [OpenTTD gameplay manual](#12-openttd-gameplay-manual)
- 1.3) [Supported platforms](#13-supported-platforms)
- 1.4) [Installing and running OpenTTD](#14-installing-and-running-openttd)
- 1.5) [Add-on content / mods](#15-add-on-content--mods)
- 1.6) [OpenTTD directories](#16-openttd-directories)
- 1.7) [Compiling OpenTTD](#17-compiling-openttd)
- 2.0) [Contact and community](#20-contact-and-community)
- 2.1) [Contributing to OpenTTD](#21-contributing-to-openttd)
- 2.2) [Reporting bugs](#22-reporting-bugs)
- 2.3) [Translating](#23-translating)
- 3.0) [Licensing](#30-licensing)
- 4.0) [Credits](#40-credits)
## 1.0) About
OpenTTD is a transport simulation game based upon the popular game Transport
Tycoon Deluxe, written by Chris Sawyer. It attempts to mimic the original
game as closely as possible while extending it with new features.
OpenTTD is a transport simulation game based upon the popular game Transport Tycoon Deluxe, written by Chris Sawyer.
It attempts to mimic the original game as closely as possible while extending it with new features.
OpenTTD is licensed under the GNU General Public License version 2.0,
but includes some 3rd party software under different licenses. See the
section "Licensing" below for details.
OpenTTD is licensed under the GNU General Public License version 2.0, but includes some 3rd party software under different licenses.
See the section ["Licensing"](#30-licensing) below for details.
## 1.1) Compiling OpenTTD
## 1.1) Downloading OpenTTD
Instructions for compiling OpenTTD can be found in [./COMPILING.md](COMPILING.md)
OpenTTD can be downloaded from the [official OpenTTD website](https://www.openttd.org/).
## 1.2) Contributing to OpenTTD
Both 'stable' and 'nightly' versions are available for download:
We welcome contributors to OpenTTD. More information for contributors can be found in [./CONTRIBUTING.md](CONTRIBUTING.md)
- most people should choose the 'stable' version, as this has been more extensively tested
- the 'nightly' version includes the latest changes and features, but may sometimes be less reliable
## 2.0) Contacting
On some platforms OpenTTD will also be available via your OS package manager or a similar service.
The easiest way to contact the OpenTTD team is by submitting bug reports or
posting comments in our forums. You can also chat with us on IRC (#openttd
on irc.oftc.net).
The OpenTTD homepage is https://www.openttd.org.
## 1.2) OpenTTD gameplay manual
You can also find the OpenTTD forums at
[https://www.tt-forums.net](https://www.tt-forums.net/viewforum.php?f=55).
OpenTTD has a [community-maintained wiki](https://wiki.openttd.org/), including a gameplay manual and tips.
### 2.1) Reporting bugs
First of all, check whether the bug is not already known. Do this by looking
through the file called 'known-bugs.txt' which is distributed with OpenTTD
like this readme.
## 1.3) Supported platforms
For tracking our bugs we are using GitHub's issue tracker. You can find
the tracker at https://github.com/OpenTTD/OpenTTD/issues. Before actually
reporting take a look through the already reported bugs there to see if
the bug is already known. The 'known-bugs.txt' file might be a bit outdated
at the moment you are reading it as only bugs known before the release
are documented there. Also look through the recently closed bugs.
OpenTTD has been ported to several platforms and operating systems.
When you are sure it is not already reported you should:
- Make sure you are running a recent version, i.e. run the latest stable or
nightly based on where you found the bug.
- Make sure you are not running a non-official binary, like a patch pack.
When you are playing with a patch pack you should report any bugs to the
forum thread related to that patch pack.
- Make it reproducible for the developers. In other words, create a savegame
in which you can reproduce the issue once loaded. It is very useful to give
us the crash.dmp, crash.sav, crash.log and crash screenshot which are
created on crashes.
- Check whether the bug is already reported on our bug tracker. This includes
searching for recently closed bug reports as the bug might already be fixed.
After you have done all that you can report the bug. Please include the
following information in your bug report:
- OpenTTD version (PLEASE test the latest Git revision/nightly build)
- Bug details, including instructions how to reproduce it
- Platform (Windows, Linux, FreeBSD, …) and compiler (including version) if
you compiled OpenTTD yourself.
- The processor architecture of your OS (32-bit Windows, 64-bit Windows,
Linux on an ARM, Mac OS X on a PowerPC, etc.)
- Attach a saved game **and** a screenshot if possible
- If this bug only occurred recently please note the last version without
the bug and the first version including the bug. That way we can fix it
quicker by looking at the changes made.
- Attach crash.dmp, crash.log and crash.sav. These files are usually created
next to your openttd.cfg. The crash handler will tell you the location.
### 2.2) Reporting desyncs
As desyncs are hard to make reproducible OpenTTD has the ability to log all
actions done by clients so we can replay the whole game in an effort to make
desyncs better reproducible. You need to turn this ability on. When turned
on an automatic savegame will be made once the map has been constructed in
the 'save/autosave' directory, see OpenTTD directories to know where to find
this directory. Furthermore the log file 'commands-out.log' will be created
and all actions will be written to there.
To enable the desync debugging you need to set the debug level for 'desync'
to at least 1. You do this by starting OpenTTD with '`-d desync=<level>`' as
parameter or by typing '`debug_level desync=<level>`' in OpenTTD's internal
console.
The desync debug levels are:
- 0: nothing.
- 1: dumping of commands to 'commands-out.log'.
- 2: same as 1 plus checking vehicle caches and dumping that too.
- 3: same as 2 plus monthly saves in autosave.
- 4 and higher: same as 3
Restarting OpenTTD will overwrite 'commands-out.log'. OpenTTD will not remove
the savegames (dmp_cmds_*.sav) made by the desync debugging system, so you
have to occasionally remove them yourself!
The naming format of the desync savegames is as follows:
dmp_cmds_XXXXXXXX_YYYYYYYY.sav. The XXXXXXXX is the hexadecimal representation
of the generation seed of the game and YYYYYYYY is the hexadecimal
representation of the date of the game. This sorts the savegames by game and
then by date making it easier to find the right savegames.
When a desync has occurred with the desync debugging turned on you should file
a bug report with the following files attached:
- commands-out.log as it contains all the commands that were done
- the last saved savegame (search for the last line beginning with
'save: dmp_cmds_' in commands-out.log). We use this savegame to check
whether we can quickly reproduce the desync. Otherwise we will need …
- the first saved savegame (search for the first line beginning with 'save'
where the first part, up to the last underscore '_', is the same). We need
this savegame to be able to reproduce the bug when the last savegame is not
old enough. If you loaded a scenario or savegame you need to attach that.
- optionally you can attach the savegames from around 50%, 75%, 85%, 90% and
95% of the game's progression. We can use these savegames to speed up the
reproduction of the desync, but we should be able to reproduce these
savegames based on the first savegame and commands-out.log.
- in case you use any NewGRFs you should attach the ones you used unless
we can easily find them ourselves via bananas or when they are in the
#openttdcoop pack.
Do NOT remove the dmp_cmds savegames of a desync you have reported until the
desync has been fixed; if you, by accident, send us the wrong savegames we
will not be able to reproduce the desync and thus will be unable to fix it.
## 3.0) Supported platforms
OpenTTD has been ported to several platforms and operating systems. It should
not be very difficult to port it to a new platform. The currently working
platforms are:
The currently working platforms are:
- FreeBSD (SDL)
- Haiku (SDL)
- Linux (SDL or Allegro)
- Linux (SDL)
- macOS (universal) (Cocoa video and sound drivers)
- OpenBSD (SDL)
- OS/2 (SDL)
- Windows (Win32 GDI (faster) or SDL or Allegro)
- Windows (Win32 GDI (faster) or SDL)
## 4.0) Installing and running OpenTTD
### 1.3.1) Legacy support
Platforms, languages and compilers change.
We'll keep support going on old platforms as long as someone is interested in supporting them, except where it means the project can't move forward to keep up with language and compiler features.
Installing OpenTTD is fairly straightforward. Either you have downloaded an
archive which you have to extract to a directory where you want OpenTTD to
be installed, or you have downloaded an installer, which will automatically
extract OpenTTD in the given directory.
We guarantee that every revision of OpenTTD will be able to load savegames from every older revision (excepting where the savegame is corrupt).
Please report a bug if you find a save that doesn't load.
OpenTTD looks in multiple locations to find the required data files (described
in section 4.2). Installing any 3rd party files into a 'shared' location has
the advantage that you only need to do this step once, rather than copying the
data files into all OpenTTD versions you have.
## 1.4) Installing and running OpenTTD
Savegames, screenshots, etc are saved relative to the config file (openttd.cfg)
currently being used. This means that if you use a config file in one of the
shared directories, savegames will reside in the save/ directory next to the
openttd.cfg file there.
OpenTTD is usually straightforward to install, but for more help the wiki [includes an installation guide](https://wiki.openttd.org/Installation).
If you want savegames and screenshots in the directory where the OpenTTD binary
resides, simply have your config file in that location. But if you remove this
config file, savegames will still be in this directory (see notes in
section 4.2 'OpenTTD directories')
OpenTTD needs some additional graphics and sound files to run.
OpenTTD comes without AIs, so if you want to play with AIs you have to download
them. The easiest way is via the 'Check Online Content' button in the main menu.
You can select some AIs that you think are compatible with your playing style.
Another way is manually downloading the AIs from the forum although then you
need to make sure that you install all the required AI libraries too; they get
automatically selected (and downloaded) if you get the AIs via the 'Check
Online Content'. If you do not have an AI but have configured OpenTTD to start
an AI a message will be shown that the 'dummy' AI has been started.
For some platforms these will be downloaded during the installation process if required.
### 4.1) (Required) 3rd party files
For some platforms, you will need to refer to [the installation guide](https://wiki.openttd.org/Installation).
Before you run OpenTTD, you need to put the game's data files into a baseset/
directory which can be located in various places addressed in the following
section.
For OpenTTD you need to acquire some third party data files. For this you have
the choice of using the original Transport Tycoon Deluxe data files or a set
of free data files.
Do NOT copy files included with OpenTTD into 'shared' directories (explained in
the following sections) as sooner or later you will run into graphical glitches
when using other versions of the game.
#### 4.1.1) Free graphics and sound files
### 1.4.1) Free graphics and sound files
The free data files, split into OpenGFX for graphics, OpenSFX for sounds and
OpenMSX for music can be found at:
@@ -223,12 +86,13 @@ OpenMSX for music can be found at:
Please follow the readme of these packages about the installation procedure.
The Windows installer can optionally download and install these packages.
#### 4.1.2) Original Transport Tycoon Deluxe graphics and sound files
If you want to play with the original Transport Tycoon Deluxe data files you
have to copy the data files from the CD-ROM into the baseset/ directory. It
does not matter whether you copy them from the DOS or Windows version of
Transport Tycoon Deluxe. The Windows install can optionally copy these files.
### 1.4.2) Original Transport Tycoon Deluxe graphics and sound files
If you want to play with the original Transport Tycoon Deluxe data files you have to copy the data files from the CD-ROM into the baseset/ directory.
It does not matter whether you copy them from the DOS or Windows version of Transport Tycoon Deluxe.
The Windows install can optionally copy these files.
You need to copy the following files:
- sample.cat
- trg1r.grf or TRG1.GRF
@@ -237,469 +101,113 @@ You need to copy the following files:
- trgir.grf or TRGI.GRF
- trgtr.grf or TRGT.GRF
#### 4.1.3) Original Transport Tycoon Deluxe music
If you want the Transport Tycoon Deluxe music, copy the appropriate files from
the original game into the baseset folder.
### 1.4.3) Original Transport Tycoon Deluxe music
If you want the Transport Tycoon Deluxe music, copy the appropriate files from the original game into the baseset folder.
- TTD for Windows: All files in the gm/ folder (gm_tt00.gm up to gm_tt21.gm)
- TTD for DOS: The GM.CAT file
- Transport Tycoon Original: The GM.CAT file, but rename it to GM-TTO.CAT
#### 4.1.4) AIs
If you want AIs use the in-game content downloader. If for some reason that is
not possible or you want to use an AI that has not been uploaded to the content
download system download the tar file and place it in the ai/ directory. If the
AI needs libraries you will have to download those too and put them in the
ai/library/ directory. All AIs and AI Libraries that have been uploaded to
the content download system can be found at https://noai.openttd.org/downloads.
The AIs and libraries can be found their in the form of .tar.gz packages.
OpenTTD can read inside tar files but it does not extract .tar.gz files by itself.
To figure out which libraries you need for an AI you have to start the AI and
wait for an error message to pop up. The error message will tell you
'could not find library "lib-name"'. Download that library and try again.
#### 4.1.5) Game scripts
If you want an extra challenge in OpenTTD you can download so-called game
scripts via the in-game content downloader. These game scripts have varying
functionality, though they can generally influence town growth, subsidies, add
goals to reach or provide a different ranking system.
If you download a game script manually you have to follow the same rules as for
AIs, except that game scripts are placed in the game/ directory instead of the
ai/ directory.
### 4.2) OpenTTD directories
OpenTTD uses its own directory to store its required 3rd party base set files
(see section 4.1 'Required 3rd party files') and non-compulsory extension and
configuration files. See below for their proper place within this OpenTTD main
data directory.
The main OpenTTD directories can be found in various locations, depending on
your operating system:
1. The current working directory (from where you started OpenTTD)
For non-Windows operating systems OpenTTD will not scan for files in this
directory if it is your personal directory, i.e. '~/', or when it is the
root directory, i.e. '/'.
2. Your personal directory
- Windows:
- `C:\My Documents\OpenTTD` (95, 98, ME)
- `C:\Documents and Settings\<username>\My Documents\OpenTTD` (2000, XP)
- `C:\Users\<username>\Documents\OpenTTD` (Vista, 7, 8.1, 10)
- macOS: `~/Documents/OpenTTD`
- Linux: `$XDG_DATA_HOME/openttd` which is usually `~/.local/share/openttd`
when built with XDG base directory support, otherwise `~/.openttd`
3. The shared directory
- Windows:
- `C:\Documents and Settings\All Users\Shared Documents\OpenTTD` (2000, XP)
- `C:\Users\Public\Documents\OpenTTD` (Vista, 7, 8.1, 10)
- macOS: `/Library/Application Support/OpenTTD`
- Linux: not available
4. The binary directory (where the OpenTTD executable is)
- Windows: `C:\Program Files\OpenTTD`
- Linux: `/usr/games`
5. The installation directory (Linux only)
- Linux: `/usr/share/games/openttd`
6. The application bundle (macOS only)
It includes the OpenTTD files (grf+lng) and it will work as long as they
are not touched
Different types of data or extensions go into different subdirectories of the
chosen main OpenTTD directory:
| data type | directory | additional info |
| ------------------- | ----------------- | --------------------------- |
| Config File | (no subdirectory) | |
| Screenshots | screenshot | |
| Base Graphics | baseset | (or a subdirectory thereof) |
| Sound Sets | baseset | (or a subdirectory thereof) |
| NewGRFs | newgrf | (or a subdirectory thereof) |
| 32bpp Sets | newgrf | (or a subdirectory thereof) |
| Music Sets | baseset | (or a subdirectory thereof) |
| AIs | ai | (or a subdirectory thereof) |
| AI Libraries | ai/library | (or a subdirectory thereof) |
| Game Scripts (GS) | game | (or a subdirectory thereof) |
| GS Libraries | game/library | (or a subdirectory thereof) |
| Savegames | save | |
| Automatic Savegames | save/autosave | |
| Scenarios | scenario | |
The (automatically created) directory content_download is for OpenTTD's internal
use and no files should be added to it or its subdirectories manually.
#### Notes:
- Linux in the previous list means .deb, but most paths should be similar for
others.
- The previous search order is also used for NewGRFs and openttd.cfg.
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3,
5 order. When built with XDG base directory support, openttd.cfg will be
created in $XDG_CONFIG_HOME/openttd which is usually ~/.config/openttd.
- Savegames will be relative to the config file only if there is no save/
directory in paths with higher priority than the config file path, but
autosaves and screenshots will always be relative to the config file.
Unless the configuration file is in $XDG_CONFIG_HOME/openttd, then all
other files will be saved under $XDG_DATA_HOME/openttd.
#### The preferred setup:
Place 3rd party files in shared directory (or in personal directory if you do
not have write access on shared directory) and have your openttd.cfg config
file in personal directory (where the game will then also place savegames and
screenshots).
### 4.3) Portable installations (portable media)
You can install OpenTTD on external media so you can take it with you, i.e.
using a USB key, or a USB HDD, etc.
Create a directory where you shall store the game in (i.e. OpenTTD/).
Copy the binary (OpenTTD.exe, OpenTTD.app, openttd, etc), baseset/ and your
openttd.cfg to this directory.
You can copy binaries for any operating system into this directory, which will
allow you to play the game on nearly any computer you can attach the external
media to.
As always - additional grf files are stored in the newgrf/ dir (for details,
again, see section 4.1).
### 4.4) Files in tar (archives)
OpenTTD can read files that are in an uncompressed tar (archive), which
makes it easy to bundle files belonging to the same script, NewGRF or base
set. Music sets are the only exception as they cannot be stored in a tar
file due to being played by external applications.
OpenTTD sees each tar archive as the 'root' of its search path. This means that
having a file with the same path in two different tar files means that one
cannot be opened, after all only one file will be found first. As such it is
advisable to put an uniquely named folder in the root of the tar and put all the
content in that folder. For example, all downloaded content has a path that
concatenates the name of the content and the version, which makes the path
unique. For custom tar files it is advised to do this as well.
The normal files are also referred to by their relative path from the search
directory, this means that also normal files could hide files in a tar as
long as the relative path from the search path of the normal file is the
same as the path in the tar file. Again it is advised to have an unique path
to the normal file so they do not collide with the files from other tar
files.
## 5.0) OpenTTD features
OpenTTD has a lot of features going beyond the original Transport Tycoon Deluxe
emulation. Unfortunately, there is currently no comprehensive list of features,
but there is a basic features list on the web, and some optional features can be
controlled through the Advanced Settings dialog. We also implement some
features known from [TTDPatch](https://www.ttdpatch.net).
Several important non-standard controls:
- Ctrl modifies many commands and makes them more powerful. For example Ctrl
clicking on signals with the build signal tool changes their behaviour,
holding Ctrl while the track build tool is activated changes it to the track
removal tool, and so on. See https://wiki.openttd.org/Hidden_features
for a non-comprehensive list or look at the tooltips.
- Ingame console. More information at https://wiki.openttd.org/Console
- Hovering over a GUI element shows tooltips. This can be changed to right click
via the advanced settings.
### 5.1) Logging of potentially dangerous actions
OpenTTD is a complex program, and together with NewGRF, it may show a buggy
behaviour. But not only bugs in code can cause problems. There are several
ways to affect game state possibly resulting in program crash or multiplayer
desyncs.
Easier way would be to forbid all these unsafe actions, but that would affect
game usability for many players. We certainly do not want that.
However, we receive bug reports because of this. To reduce time spent with
solving these problems, these potentially unsafe actions are logged in
the savegame (including crash.sav). Log is stored in crash logs, too.
Information logged:
- Adding / removing / changing order of NewGRFs
- Changing NewGRF parameters, loading compatible NewGRF
- Changing game mode (scenario editor <-> normal game)
- Loading game saved in a different OpenTTD / TTDPatch / Transport Tycoon Deluxe /
original Transport Tycoon version
- Running a modified OpenTTD build
- Changing settings affecting NewGRF behaviour (non-network-safe settings)
- Triggering NewGRF bugs
No personal information is stored.
You can show the game log by typing 'gamelog' in the console or by running
OpenTTD in debug mode.
### 5.2) Frame rate and performance metrics
The Help menu in-game has a function to open the Frame rate window. This
window shows various real-time performance statistics, measuring what parts
of the game require the most processing power currently.
A summary of the statistics can also be retrieved from the console with the
`fps` command. This is especially useful on dedicated servers, where the
administrator might want to determine what's limiting performance in a slow
game.
The frame rate is given as two figures, the simulation rate and the graphics
frame rate. Usually these are identical, as the screen is rendered exactly
once per simulated tick, but in the future there might be support for graphics
and simulation running at different rates. When the game is paused, the
simulation rate drops to zero.
In addition to the simulation rate, a game speed factor is also calculated.
This is based on the target simulation speed, which is 30 milliseconds per
game tick. At that speed, the expected frame rate is 33.33 frames/second, and
the game speed factor is how close to that target the actual rate is. When
the game is in fast forward mode, the game speed factor shows how much
speed up is achieved.
The lower part of the window shows timing statistics for individual parts of
the game. The times shown are short-term and long-term averages of how long
it takes to process one tick of game time, all figures are in milliseconds.
Clicking a line in the lower part of the window opens a graph window, giving
detailed readings on each tick simulated by the game.
The following is an explanation of the different statistics:
- *Game loop* - Total processing time used per simulated "tick" in the game.
This includes all pathfinding, world updates, and economy handling.
- *Cargo handling* - Time spent loading/unloading cargo at stations, and
industries and towns sending/retrieving cargo from stations.
- *Train ticks*, *Road vehicle ticks*, *Ship ticks*, *Aircraft ticks* -
Time spent on pathfinding and other processing for each player vehicle type.
- *World ticks* - Time spent on other world/landscape processing. This
includes towns growing, building animations, updates of farmland and trees,
and station rating updates.
- *GS/AI total*, *Game script*, and *AI players* - Time spent running logic
for game scripts and AI players. The total may show as less than the current
sum of the individual scripts, this is because AI players at lower
difficulty settings do not run every game tick, and hence contribute less
to the average across all ticks. Keep in mind that the "Current" figure is
also an average, just only over short term.
- *Link graph delay* - Time overruns of the cargo distribution link graph
update thread. Usually the link graph is updated in a background thread,
but these updates need to synchronise with the main game loop occasionally,
if the time spent on link graph updates is longer than the time taken to
otherwise simulate the game while it was updating, these delays are counted
in this figure.
- *Graphics rendering* - Total time spent rendering all graphics, including
both GUI and world viewports. This typically spikes when panning the view
around, and when more things are happening on screen at once.
- *World viewport rendering* - Isolated time spent rendering just world
viewports. If this figure is significantly lower than the total graphics
rendering time, most time is spent rendering GUI than rendering world.
- *Video output* - Speed of copying the rendered graphics to the display
adapter. Usually this should be very fast (in the range of 0-3 ms), large
values for this can indicate a graphics driver problem.
- *Sound mixing* - Speed of mixing active audio samples together. Usually
this should be very fast (in the range of 0-3 ms), if it is slow, consider
switching to the NoSound set.
If the frame rate window is shaded, the title bar will instead show just the
current simulation rate and the game speed factor.
## 6.0) Configuration file
The configuration file for OpenTTD (openttd.cfg) is in a simple Windows-like
.INI format. It is mostly undocumented. Almost all settings can be changed
ingame by using the 'Advanced Settings' window.
When you cannot find openttd.cfg you should look in the directories as
described in section 4.2. If you do not have an openttd.cfg OpenTTD will
create one after closing.
## 7.0) Translating
See https://www.openttd.org/development for up-to-date information.
The use of the online Translator service, located at
https://translator.openttd.org, is highly encouraged. For getting an account
simply follow the guidelines in the FAQ of the translator website.
If for some reason the website is down for a longer period of time, the
information below might be of help.
Please contact the translations manager (https://www.openttd.org/contact)
before beginning the translation process! This avoids double work, as
someone else may have already started translating to the same language.
### 7.1) Translation
So, now that you have notified the development team about your intention to
translate (You did, right? Of course you did.) you can pick up english.txt
(found in the Git repository under /src/lang) and translate.
You must change the first two lines of the file appropriately:
##name English-Name-Of-Language
##ownname Native-Name-Of-Language
Note: Do not alter the following parts of the file:
- String identifiers (the first word on each line)
- Parts of the strings which are in curly braces (such as {STRING})
- Lines beginning with ## (such as ##id), other than the first two lines
of the file
### 7.2) Previewing
In order to view the translation in the game, you need to compile your language
file with the strgen utility. As this utility is tailored to a specific OpenTTD
version, you need to compile it yourself. Just take the normal OpenTTD sources
and build that. During the build process the strgen utility will be made.
strgen is a command-line utility. It takes the language filename as parameter.
Example:
strgen lang/german.txt
This results in compiling german.txt and produces another file named german.lng.
Any missing strings are replaced with the English strings. Note that it looks
for english.txt in the lang subdirectory, which is where your language file
should also be.
That is all! You should now be able to select the language in the game options.
## 8.0) Troubleshooting
To see all startup options available to you, start OpenTTD with the
'`./openttd -h`' option. This might help you tweak some of the settings.
If the game is acting strange and you feel adventurous you can try the
'`-d [[<name>=]<level>]`' flag, where the higher levels will give you more
debugging output. The 'name' variable can help you to display only some type of
debugging messages. This is mostly undocumented so best is to look in the
source code file debug.c for the various debugging types. For more information
look at https://wiki.openttd.org/Command_line.
The most frequent problem is missing data files. Please install OpenGFX and
possibly OpenSFX and OpenMSX. See section 4.1.1 for more information.
Under certain circumstance, especially on Ubuntu OpenTTD can be extremely slow
and/or freeze. See known-bugs.txt for more information and how to solve this
problem on your computer.
Under Windows 98 and lower it is impossible to use a dedicated server; it will
fail to start. Perhaps this is for the better because those OSes are not known
for their stability.
With the added support for font-based text selecting a non-latin language can
result in lots of question marks ('?') being shown on screen. Please open your
configuration file (openttd.cfg - see Section 4.2 for where to find it)
and add a suitable font for the small, medium and / or large font, e.g.:
small_font = "Tahoma"
medium_font = "Tahoma"
large_font = "Tahoma"
You should use a font name like 'Tahoma' or a path to the desired font.
Any NewGRF file used in a game is stored inside the savegame and will refuse to
load if you do not have that NewGRF file available. A list of missing files can
be viewed in the NewGRF window accessible from the file load dialogue window.
You can try to obtain the missing files from that NewGRF dialogue or if they
are not available online you can search manually through our
[forum's graphics development section](https://www.tt-forums.net/viewforum.php?f=66)
or [GRFCrawler](https://grfcrawler.tt-forums.net). Put the NewGRF files in
OpenTTD's newgrf folder (see section 4.2 'OpenTTD directories') and rescan the
list of available NewGRFs. Once you have all missing files, you are set to go.
## 9.0) Licensing
OpenTTD is licensed under the GNU General Public License version 2.0. For
the complete license text, see the file 'COPYING.md'. This license applies
to all files in this distribution, except as noted below.
The squirrel implementation in src/3rdparty/squirrel is licensed under
the Zlib license. See src/3rdparty/squirrel/COPYRIGHT for the complete
license text.
The md5 implementation in src/3rdparty/md5 is licensed under the Zlib
license. See the comments in the source files in src/3rdparty/md5 for
the complete license text.
The implementations of Posix getaddrinfo and getnameinfo for OS/2 in
src/3rdparty/os2 are distributed partly under the GNU Lesser General Public
License 2.1, and partly under the (3-clause) BSD license. The exact licensing
terms can be found in src/3rdparty/os2/getaddrinfo.c resp.
src/3rdparty/os2/getnameinfo.c.
CONTRIBUTING.md is adapted from
[Bootstrap](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md)
under the [Creative Commons Attribution 3.0 Unported
License](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE)
terms for Bootstrap documentation.
## X.X) Credits
### The OpenTTD team (in alphabetical order):
- Grzegorz Duczyński (adf88) - General coding (since 1.7.2)
- Albert Hofkamp (Alberth) - GUI expert (since 0.7)
- Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)
- Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)
- Christoph Elsenhans (frosch) - General coding (since 0.6)
- Loïc Guilloux (glx) - Windows Expert (since 0.4.5)
- Charles Pigott (LordAro) - General / Correctness police (since 1.9)
- Michael Lutz (michi_cc) - Path based signals (since 0.7)
- Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9)
- Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)
- Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5)
- Ingo von Borstel (planetmaker) - General coding, Support (since 1.1)
- Remko Bijker (Rubidium) - Lead coder and way more (since 0.4.5)
- José Soler (Terkhen) - General coding (since 1.0)
- Leif Linse (Zuu) - AI/Game Script (since 1.2)
### Inactive Developers:
- Jean-François Claeys (Belugas) - GUI, newindustries and more (0.4.5 - 1.0)
- Bjarni Corfitzen (Bjarni) - macOS port, coder and vehicles (0.3 - 0.7)
- Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)
- Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)
- Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)
- Attila Bán (MiHaMiX) - WebTranslator 1 and 2 (0.3 - 0.5)
- Zdeněk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3)
- Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5)
- Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active)
- Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3)
### Retired Developers:
- Tamás Faragó (Darkvater) - Ex-Lead coder (0.3 - 0.5)
- Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)
- Emil Djupfeld (egladil) - macOS port (0.4 - 0.6)
- Simon Sasburg (HackyKid) - Bug fixer (0.4 - 0.4.5)
- Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)
- Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)
- Petr Baudiš (pasky) - Many patches, newgrf support, etc. (0.3 - 0.3)
- Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)
- Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)
### Thanks to:
- Josef Drexler - For his great work on TTDPatch.
- Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and track foundations
- Stefan Meißner (sign_de) - For his work on the console
- Mike Ragsdale - OpenTTD installer
- Christian Rosentreter (tokai) - MorphOS / AmigaOS port
- Richard Kempton (RichK67) - Additional airports, initial TGP implementation
- Alberto Demichelis - Squirrel scripting language
- L. Peter Deutsch - MD5 implementation
- Michael Blunck - For revolutionizing TTD with awesome graphics
- George - Canal graphics
- Andrew Parkhouse (andythenorth) - River graphics
- David Dallaston (Pikka) - Tram tracks
- All Translators - For their support to make OpenTTD a truly international game
- Bug Reporters - Thanks for all bug reports
- Chris Sawyer - For an amazing game!
## 1.5) Add-on content / mods
OpenTTD features multiple types of add-on content, which modify gameplay in different ways.
Most types of add-on content can be downloaded within OpenTTD via the 'Check Online Content' button in the main menu.
Add-on content can also be installed manually, but that's more complicated; the [OpenTTD wiki](https://wiki.openttd.org/OpenTTD) may offer help with that, or the [OpenTTD directory structure guide](./docs/directory_structure.md).
### 1.5.1) AI opponents
OpenTTD comes without AI opponents, so if you want to play with AIs you have to download them.
The easiest way is via the 'Check Online Content' button in the main menu.
You can select some AIs that you think are compatible with your playing style.
AI help and discussions may also be found in the [AI section of the forum](https://www.tt-forums.net/viewforum.php?f=65).
### 1.5.2) Scenarios and height maps
Scenarios and heightmaps can be added via the 'Check Online Content' button in the main menu.
### 1.5.3) NewGRFs
A wide range of add-content is available as NewGRFs, including vehicles, industries, stations, landscape objects, town names and more.
NewGRFs can be added via the 'Check Online Content' button in the main menu.
See also the wiki [guide to NewGRFs](https://wiki.openttd.org/NewGRF) and [the forum graphics development section](https://www.tt-forums.net/viewforum.php?f=66).
### 1.5.4) Game scripts
Game scripts can provide additional challenges or changes to the standard OpenTTD gameplay, for example setting transport goals, or changing town growth behaviour.
Game scripts can be added via the 'Check Online Content' button in the main menu.
See also the wiki [guide to game scripts](https://wiki.openttd.org/Game_script) and [the forum graphics game script section](https://www.tt-forums.net/viewforum.php?f=65).
### 1.6) OpenTTD directories
OpenTTD uses its own directory structure to store game data, add-on content etc.
For more information, see the [directory structure guide](./docs/directory_structure.md).
### 1.7) Compiling OpenTTD
If you want to compile OpenTTD from source, instructions can be found in [COMPILING.md](./COMPILING.md).
## 2.0) Contact and Community
'Official' channels
- [OpenTTD website](https://www.openttd.org)
- IRC chat using #openttd on irc.oftc.net [more info about our irc channel](https://wiki.openttd.org/Irc)
- [OpenTTD on Github](https://github.com/openTTD/) for code repositories and for reporting issues
- [forum.openttd.org](https://forum.openttd.org/) - the primary community forum site for discussing OpenTTD and related games
- [OpenTTD wiki](https://wiki.openttd.org/) community-maintained wiki, including topics like gameplay guide, detailed explanation of some game mechanics, how to use add-on content (mods) and much more
'Unofficial' channels
- the OpenTTD wiki has a [page listing OpenTTD communities](https://wiki.openttd.org/Community) including some in languages other than English
### 2.1) Contributing to OpenTTD
We welcome contributors to OpenTTD. More information for contributors can be found in [CONTRIBUTING.md](./CONTRIBUTING.md)
### 2.2) Reporting bugs
Good bug reports are very helpful. We have a [guide to reporting bugs](./CONTRIBUTING.md#bug-reports) to help with this.
Desyncs in multiplayer are complex to debug and report (some software development skils are required).
Instructions can be found in [debugging and reporting desyncs](./docs/debugging_desyncs.md).
### 2.3) Translating
OpenTTD is translated into many languages. Translations are added and updated via the [online translation tool](https://translator.openttd.org).
## 3.0) Licensing
OpenTTD is licensed under the GNU General Public License version 2.0.
For the complete license text, see the file '[COPYING.md](./COPYING.md)'.
This license applies to all files in this distribution, except as noted below.
The squirrel implementation in `src/3rdparty/squirrel` is licensed under the Zlib license.
See `src/3rdparty/squirrel/COPYRIGHT` for the complete license text.
The md5 implementation in `src/3rdparty/md5` is licensed under the Zlib license.
See the comments in the source files in `src/3rdparty/md5` for the complete license text.
The implementations of Posix `getaddrinfo` and `getnameinfo` for OS/2 in `src/3rdparty/os2` are distributed partly under the GNU Lesser General Public License 2.1, and partly under the (3-clause) BSD license.
The exact licensing terms can be found in `src/3rdparty/os2/getaddrinfo.c` resp. `src/3rdparty/os2/getnameinfo.c`.
## 4.0 Credits
See [CREDITS.md](./CREDITS.md)

View File

@@ -39,8 +39,6 @@ jobs:
strategy:
matrix:
commit-checker:
Tag: 'commit-checker'
linux-amd64-clang-3.9:
Tag: 'linux-amd64-clang-3.9'
linux-amd64-gcc-6:
@@ -60,7 +58,7 @@ jobs:
- job: macos
displayName: 'MacOS'
pool:
vmImage: 'macOS-10.13'
vmImage: 'macOS-10.14'
variables:
MACOSX_DEPLOYMENT_TARGET: 10.9

View File

@@ -1,16 +1,16 @@
#!/bin/sh
tag=$(git describe --tags 2>/dev/null)
tag=$(git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null | sed 's@\^0$@@')
# If we are a tag, show the part of the changelog till (but excluding) the last stable
if [ -n "$tag" ]; then
grep='^[0-9]\.[0-9]\.[0-9][^-]'
grep='^[0-9]\+\.[0-9]\+\.[0-9]\+[^-]'
next=$(cat changelog.txt | grep '^[0-9]' | awk 'BEGIN { show="false" } // { if (show=="true") print $0; if ($1=="'$tag'") show="true"} ' | grep "$grep" | head -n1 | sed 's/ .*//')
cat changelog.txt | awk 'BEGIN { show="false" } /^[0-9].[0-9].[0-9]/ { if ($1=="'$next'") show="false"; if ($1=="'$tag'") show="true";} // { if (show=="true") print $0 }'
cat changelog.txt | awk 'BEGIN { show="false" } /^[0-9]+.[0-9]+.[0-9]+/ { if ($1=="'$next'") show="false"; if ($1=="'$tag'") show="true";} // { if (show=="true") print $0 }'
exit 0
fi
# In all other cases, show the git log of the last 7 days
revdate=$(git log -1 --pretty=format:"%ci")
last_week=$(date -u -d "$revdate -7days" +"%Y-%m-%d %H:%M")
last_week=$(date -d "$revdate -7days" +"%Y-%m-%d %H:%M")
git log --after="${last_week}" --pretty=fuller

View File

@@ -31,29 +31,56 @@ DATE=$(cat .release_date | tr ' ' T | sed 's/TUTC/:00-00:00/')
VERSION=$(cat .version)
BASE="openttd-${VERSION}"
echo "name: ${NAME}" >> manifest.yaml
echo "name: ${NAME}" > manifest.yaml
echo "date: ${DATE}" >> manifest.yaml
echo "base: ${BASE}-" >> manifest.yaml
echo "files:" >> manifest.yaml
error=""
for i in $(ls ${FOLDER} | grep -v ".txt$\|.md$\|sum$" | sort); do
if [ -n "$(echo $i | grep pdb.xz)" ]; then continue; fi
if [ -n "$(echo $i | grep dbg.deb)" ]; then continue; fi
if [ ! -e ${FOLDER}/$i.md5sum ] || [ ! -e ${FOLDER}/$i.sha1sum ] || [ ! -e ${FOLDER}/$i.sha256sum ]; then
echo "ERROR: missing checksum file for ${i}" 1>&2
error="y"
continue
fi
FILES=
DEV_FILES=
for filename in $(ls ${FOLDER} | grep -v ".txt$\|.md$\|sum$" | sort); do
case ${filename} in
*docs* |\
*source* |\
*dbg.deb |\
*pdb.xz )
DEV_FILES="${DEV_FILES} ${filename}"
;;
echo "- id: $i" >> manifest.yaml
echo " size: $(stat -c"%s" ${FOLDER}/$i)" >> manifest.yaml
echo " md5sum: $(cat ${FOLDER}/$i.md5sum | cut -d\ -f1)" >> manifest.yaml
echo " sha1sum: $(cat ${FOLDER}/$i.sha1sum | cut -d\ -f1)" >> manifest.yaml
echo " sha256sum: $(cat ${FOLDER}/$i.sha256sum | cut -d\ -f1)" >> manifest.yaml
*)
FILES="${FILES} ${filename}"
;;
esac
done
# output_files key filename...
output_files() {
if [ "$#" -lt 2 ]; then return; fi
key=$1
echo "${key}:" >> manifest.yaml
shift
while [ "$#" -gt 0 ]; do
filename=$1
if [ ! -e ${FOLDER}/${filename}.md5sum ] || [ ! -e ${FOLDER}/${filename}.sha1sum ] || [ ! -e ${FOLDER}/${filename}.sha256sum ]; then
echo "ERROR: missing checksum file for ${filename}" 1>&2
error="y"
shift
continue
fi
echo "- id: ${filename}" >> manifest.yaml
echo " size: $(stat -c"%s" ${FOLDER}/${filename})" >> manifest.yaml
echo " md5sum: $(cat ${FOLDER}/${filename}.md5sum | cut -d\ -f1)" >> manifest.yaml
echo " sha1sum: $(cat ${FOLDER}/${filename}.sha1sum | cut -d\ -f1)" >> manifest.yaml
echo " sha256sum: $(cat ${FOLDER}/${filename}.sha256sum | cut -d\ -f1)" >> manifest.yaml
shift
done
}
output_files files ${FILES}
output_files dev_files ${DEV_FILES}
if [ -n "${error}" ]; then
echo "ERROR: exiting due to earlier errors" 1>&2
exit 1

View File

@@ -2,7 +2,7 @@ steps:
- bash: |
set -ex
cd bin/baseset
curl -L https://binaries.openttd.org/extra/opengfx/0.5.2/opengfx-0.5.2-all.zip > opengfx-0.5.2-all.zip
unzip opengfx-0.5.2-all.zip
rm -f opengfx-0.5.2-all.zip
curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip > opengfx-all.zip
unzip opengfx-all.zip
rm -f opengfx-all.zip
displayName: 'Install OpenGFX'

View File

@@ -119,6 +119,8 @@ jobs:
Tag: 'linux-ubuntu-bionic-i386-gcc'
linux-ubuntu-bionic-amd64-gcc:
Tag: 'linux-ubuntu-bionic-amd64-gcc'
linux-ubuntu-focal-amd64-gcc:
Tag: 'linux-ubuntu-focal-amd64-gcc'
linux-debian-stretch-i386-gcc:
Tag: 'linux-debian-stretch-i386-gcc'
linux-debian-stretch-amd64-gcc:
@@ -141,7 +143,7 @@ jobs:
- job: macos
displayName: 'MacOS'
pool:
vmImage: 'macOS-10.13'
vmImage: 'macOS-10.14'
dependsOn: source
variables:

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,7 +1,5 @@
#!/bin/sh
# $Id$
if ! [ -f ai/regression/completeness.sh ]; then
echo "Make sure you are in the root of OpenTTD before starting this script."
exit 1

View File

@@ -1,5 +1,3 @@
/* $Id$ */
class Regression extends AIInfo {
function GetAuthor() { return "OpenTTD NoAI Developers Team"; }
function GetName() { return "Regression"; }

View File

@@ -1,7 +1,5 @@
#!/bin/sh
# $Id$
if ! [ -f ai/regression/run.sh ]; then
echo "Make sure you are in the root of OpenTTD before starting this script."
exit 1

View File

@@ -1,7 +1,5 @@
Option Explicit
' $Id$
'
' This file is part of OpenTTD.
' OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
' OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
class Regression extends AIController {
function Start();
};
@@ -1692,6 +1690,9 @@ function Regression::Vehicle()
print(" BuildVehicle(): " + AIVehicle.BuildVehicle(10008, 9));
print(" BuildVehicle(): " + AIVehicle.BuildVehicle(10008, 27));
print(" BuildVehicle(): " + AIVehicle.BuildVehicle(10008, 27));
print(" IsValidVehicle(17): " + AIVehicle.IsValidVehicle(17));
print(" IsValidVehicle(18): " + AIVehicle.IsValidVehicle(18));
print(" IsValidVehicle(19): " + AIVehicle.IsValidVehicle(19)); // 19 is immediately joined to 18
print(" MoveWagonChain(): " + AIVehicle.MoveWagonChain(18, 0, 17, 0));
print(" GetNumWagons(): " + AIVehicle.GetNumWagons(17));
print(" GetLength(): " + AIVehicle.GetLength(17));

View File

@@ -1,4 +1,2 @@
/* $Id$ */
print(" Required this file");

View File

@@ -9115,6 +9115,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
BuildVehicle(): 17
BuildVehicle(): 18
BuildVehicle(): 19
IsValidVehicle(17): true
IsValidVehicle(18): true
IsValidVehicle(19): false
MoveWagonChain(): true
GetNumWagons(): 3
GetLength(): 24

View File

@@ -1,5 +1,3 @@
/* $Id$ */
class Regression extends AIController {
function Start();
};

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,5 +1,3 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

View File

@@ -1,3 +1,127 @@
1.10.2 (2020-06-01)
------------------------------------------------------------------------
Add: Ubuntu 20.04 packages (#8127)
Fix: [OSX] Possible crash on failure to set colourspace (#8181)
Fix #8166: Prevent crash from a NewGRF with an invalid RoadType (#8180)
Fix #8024: Make Online Content GUI more responsive while loading (#8179)
Fix #7970: Disable event loop when generating crash dump (#8176)
Fix: [Build] Compatibility with modern Visual Studio (#8170)
Fix: Trees would disappear completely after a few years if tree spread was disabled (#8160)
Fix #8155: Roadtype speed limit in scenario editor toolbar dropdown was doubled (#8156)
Fix: Desync after house replacement (#8151)
Fix #8137: New clients can't join (desync) after funding an industry (#8140)
Fix #8132: Corrupted savegame with station with multiple owners caused a crash (#8134, #8142)
Fix: Stop gamelog when recovering from a savegame load error (#8133)
Fix: Exceptionally unlikely issue when reading MIDI files (#8125)
Fix #8119: Docking areas were not properly updated when clearing, causing desyncs (#8124, #8130)
Fix #8117: Memory leak for incoming admin port packets (#8122)
Fix: Non-roadbridges potentially had roadtype information set (#8111)
Fix #8108: Possible crash on loading TTD savegames with phantom oil rigs (#8109, #8110)
Fix #8093: Build & refit test run changed game state and could cause desyncs (#8103)
Fix: [Script] AreWaterTilesConnected did not handle aqueducts properly (#8074)
1.10.1 (2020-04-13)
------------------------------------------------------------------------
Fix #8081: Crash when placing a ship depot next to a dock (#8082)
Fix: [GS] A Goal's QuestionID was getting truncated (#8072)
Fix #8064: Refit capacity could be displayed incorrectly in extreme edgecases (#8065)
Fix #8060: Restore admin network API compatibility (#8061)
Fix #8055: Crash when roadtype availability changes with the road construction toolbar open (#8058)
1.10.0 (2020-04-01)
------------------------------------------------------------------------
Change: Open company window when clicking on a company goal (#8033)
Change: [SDL2] Support pasting from clipboard on Linux (#8004)
Fix: [Script] Random deviation upper bound range should be inclusive (#8052)
Fix #8043: Incorrect handling of global road/tram hotkeys caused a crash (#8044)
Fix #8039: [Script] SetOrderFlags and GetOrderDestination didn't work for oil rigs (#8040)
Fix: [Script] CanBuildConnectedRoadPartsHere neighbours tiles were incorrect if you started a new game with a different world size (#8036)
Fix: Ignore clicks on non-applicable global goals (#8035)
Fix #7613: Limit News Window to 1024 messages to keep it usable and avoid overflowing scrollbars (#8026)
Fix #7644: [OSX] Hopefully improve performance by manually set colorspace to sRGB (#8023)
Fix #8020: Add missing docking tiles around industry neutral stations (#8021)
Fix: GUI tramway icon only contained a single set of tram tracks (#8015)
Fix: Station with multiple docks had the wrong tile area (#8014)
Fix #8011: Crash when loading TTD scenario containing a dock (#8012)
Fix #7998: Crash when scripts tried to access companies with invalid IDs (#8010)
Fix: Crash when attempting to draw a string containing nonprintable characters (#8005)
Fix #6399: Directory ~/.local/share not created if it didn't already exist (#8003)
Fix #7958: Custom catenary missing on road bridges (#7991)
Fix #7944: Demolishing locks built on rivers didn't always restore the river (#7946)
1.10.0-RC1 (2020-02-09)
------------------------------------------------------------------------
Feature: Allow server to supply a reason to kicked/banned clients (#7859)
Feature: [NewGRF] Station variable 6A, querying GRFID of nearby station tiles (#7956)
Feature: Improved logic of sharing industry production between 3 or more stations (#7922)
Feature: Highlight the item under mouse cursor in file browser (#7900)
Feature: [GS] Methods to change town rating of companies (#7898)
Feature: [NewGRF] Callback profiling command (#7868)
Feature: Add a setting to show the name of the NewGRF of a vehicle in the build window (#7852)
Feature: Ability to filter industry directory window by cargo (#7843)
Feature: Minimap screenshot type (#7817)
Feature: [GS] Methods to control engine availability of a specific company (#7791)
Feature: Configurable game ending year (#7747)
Feature: Separate window for taking screenshots (#7550)
Change: Move autorenew setting to basic category (#7984)
Change: Improved algorithm for transfer feeder payments (#7935)
Change: Show volume sliders with wedges instead of boxy slider (#7902)
Change: Auto-restart loads the original resources (e.g. save or scenario) again (#7688)
Change: Improve readability of integer lists saved to config files (#7396)
Fix #7976: Crash when attempting to kick the host via rcon (#7985)
Fix #7592: Road vehicles no longer balanced between multiple road stop stations (#7979)
Fix: Station rating effects affecting too large area (#7977)
Fix #7974: Crash when Ctrl+click to show a collapsed vehicle group (#7975)
Fix #7969: Crash when executing a recursive console alias (#7973)
Fix #6566: Very long loading of the maximum "zoom out" level at high resolutions (#7968)
Fix #7952: Crash when switching input languages (#7953)
Fix: [OSX] Don't show a crash/assertion message box for a GUI-less video driver (#7934)
Fix #7925: Corrupt savegames could lead to corruption of the titlegame (#7932)
Fix: [Fluidsynth] Music notes from previous song were not properly reset (#7930)
Fix: Invalid string usage within music window (#7928)
Fix: Non-deterministic name sorting in industry directory window (#7915)
Fix #7899: Various issues with town list window sorting (#7906, #7916)
Fix #7587: Fix possible crashes when loading old save games with invalid waypoint positions (#7894)
Fix: Avoid a crash by properly resetting timetable duration when loading old savegames (#7894)
Fix: Possible crash when post road-works cleanup removes all road pieces (#7903)
Fix #7891: Fix crash when loading save from 1.7.2 (#7892)
Fix #7887: Missing sound effects for some main toolbar buttons (#7888)
Fix #6667: Avoid confusion by also recalculating bridge costs for 'spectated' AI companies (#7884)
Fix: Allow old NewGRF industries to hide in/out cargo slots (#7882)
Fix: [Windows] Fix bootstrap GUI with Uniscribe but no Freetype (#7878)
Fix: Missing keycodes for hotkeys.cfg (#7850)
Fix #7625: Ensure road infrastructure cost is correctly updated when upgrading your own roads (#7628)
Fix #7088: Avoid crash by closing AI/GS textfile windows when changing their in-game slot (#7094)
1.10.0-beta2 (2019-12-25)
------------------------------------------------------------------------
- Feature: [Script] More error mappings (#7857)
- Feature: Ctrl+Click on a vehicle in the vehicle group window selects and scrolls to the vehicle's group (#7800)
- Feature: Ctrl+Click on the vehicle details button in the vehicle view window opens the vehicle group window focused on the vehicle (#7800)
- Feature: Add a button to the vehicle advisory news window to open the vehicle's group window (#7800)
- Feature: Ctrl+Click on a vehicle in the vehicle list window opens the vehicle group window focused on the vehicle's group (#7800)
- Fix: Custom sea level default value is now equal to minimum value (#7866)
- Fix: [NewGRF] Various tracktype fixes (#7863)
- Fix: Infrastructure total update when removing tram road stop (#7856)
- Fix #7847: Use ViewportSign coordinates for sign Kdtree coordinates (#7849)
- Fix #7836: Check coherency of NewGRF parameter min/max (#7840)
- Fix #7673: [Script] Allow removal of custom town text (#7834)
- Fix: Crash when displaying an error message at map edges (#7833)
- Fix #7783, #7816: [SDL2] Fix input handling in edit context (#7825)
- Fix #7697: Tile query on HQs did not display cargo correctly (#7824)
- Fix #7820: Possible game crash when removing oil rig (#7821)
- Fix #7606: Rare crash when trying to clean up a crashed script (#7819)
- Fix #7784: [SDL2] up/down/home/end key behaviour (#7815)
- Fix #7631: 16 out cargo support for industry directory (#7809)
- Fix #7646: Crash on random map generation failure (#7805)
- Fix #7430: Only reset time since pickup when train visits station if it has room to load (#7595)
- Fix #5405: Aircraft could route to depots outside their range (#7104)
1.10.0-beta1 (2019-10-29)
------------------------------------------------------------------------
- Feature: Configurable minimum age for companies before allowing share trading (#7780)
@@ -11,7 +135,6 @@
- Feature: Improved performance for road vehicle pathfinding (#7261)
- Feature: Option to show local authority boundary of towns (#7025)
- Feature: Experimental method of town cargo generation that scales linearly with population (#6965)
- Feature: [NewGRF] Houses and industries can accept/produce up to 16 different cargo types (#6867, #6872)
- Feature: [NewGRF] RoadTypes (NRT) (#6811)
- Add: [Win32] Select MIDI device by port name (#7666)
- Add: 'getsysdate' console command (#7658)

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -56,8 +54,8 @@ set_default() {
enable_translator="0"
enable_unicode="1"
enable_console="1";
enable_assert="1"
enable_strip="0"
enable_assert="0"
enable_strip="1"
enable_universal="0"
enable_osx_g5="0"
enable_cocoa_quartz="1"
@@ -1518,12 +1516,20 @@ make_cflags_and_ldflags() {
# extensions in a way that breaks build with at least ICC.
# This requires -O1 or more, so debug level 3 (-O0) is excluded.
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
if [ "$os" = "MINGW" ]; then
# Prevent undefined references when _FORTIFY_SOURCE > 0
LDFLAGS="$LDFLAGS -fstack-protector"
fi
fi
cc_build_is_gcc=`basename "$cc_build" | grep "gcc" 2>/dev/null`
if [ -n "$cc_build_is_gcc" ]; then
# Just add -O1 to the tools needed for building.
CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
if [ "$os" = "MINGW" ]; then
# Prevent undefined references when _FORTIFY_SOURCE > 0
LDFLAGS_BUILD="$LDFLAGS_BUILD -fstack-protector"
fi
fi
fi
@@ -2399,16 +2405,17 @@ detect_sdl() {
log 1 "checking SDL... disabled"
sdl_config=""
sdl2_config=""
return 0
fi
if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then
if [ "$with_sdl" != "1" ] && [ "$with_cocoa" = "2" ]; then
log 1 "configure: error: it is impossible to compile both SDL and COCOA"
log 1 "configure: error: please deselect one of them and try again"
exit 1
fi
if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then
if [ "$with_sdl" != "1" ] && [ "$enable_dedicated" != "0" ]; then
log 1 "configure: error: it is impossible to compile a dedicated with SDL"
log 1 "configure: error: please deselect one of them and try again"
exit 1
@@ -2418,6 +2425,7 @@ detect_sdl() {
log 1 "checking SDL... dedicated server, skipping"
sdl_config=""
sdl2_config=""
return 0
fi
@@ -2437,10 +2445,16 @@ detect_sdl() {
if [ $with_sdl = "sdl1" ]; then
detect_pkg_config "2" "sdl" "sdl_config" "1.2"
elif [ $with_sdl = "sdl2" ] || [ -x `which sdl2-config` ]; then
elif [ $with_sdl = "sdl2" ]; then
detect_pkg_config "2" "sdl2" "sdl2_config" "2.0"
else
detect_pkg_config "$with_sdl" "sdl" "sdl_config" "1.2"
sdl2_config=""
if [ -x "`which sdl2-config`" ]; then
detect_pkg_config "$with_sdl" "sdl2" "sdl2_config" "2.0"
fi
if [ -z "$sdl2_config" ]; then
detect_pkg_config "$with_sdl" "sdl" "sdl_config" "1.2"
fi
fi
}

2
configure vendored
View File

@@ -1,7 +1,5 @@
#!/bin/sh
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

56
docs/debugging_desyncs.md Normal file
View File

@@ -0,0 +1,56 @@
# Debugging / reporting desyncs
As desyncs are hard to make reproducible OpenTTD has the ability to log all
actions done by clients so we can replay the whole game in an effort to make
desyncs better reproducible. You need to turn this ability on. When turned
on an automatic savegame will be made once the map has been constructed in
the 'save/autosave' directory, see OpenTTD directories to know where to find
this directory. Furthermore the log file 'commands-out.log' will be created
and all actions will be written to there.
To enable the desync debugging you need to set the debug level for 'desync'
to at least 1. You do this by starting OpenTTD with '`-d desync=<level>`' as
parameter or by typing '`debug_level desync=<level>`' in OpenTTD's internal
console.
The desync debug levels are:
- 0: nothing.
- 1: dumping of commands to 'commands-out.log'.
- 2: same as 1 plus checking vehicle caches and dumping that too.
- 3: same as 2 plus monthly saves in autosave.
- 4 and higher: same as 3
Restarting OpenTTD will overwrite 'commands-out.log'. OpenTTD will not remove
the savegames (dmp_cmds_*.sav) made by the desync debugging system, so you
have to occasionally remove them yourself!
The naming format of the desync savegames is as follows:
dmp_cmds_XXXXXXXX_YYYYYYYY.sav. The XXXXXXXX is the hexadecimal representation
of the generation seed of the game and YYYYYYYY is the hexadecimal
representation of the date of the game. This sorts the savegames by game and
then by date making it easier to find the right savegames.
When a desync has occurred with the desync debugging turned on you should file
a bug report with the following files attached:
- commands-out.log as it contains all the commands that were done
- the last saved savegame (search for the last line beginning with
'save: dmp_cmds_' in commands-out.log). We use this savegame to check
whether we can quickly reproduce the desync. Otherwise we will need …
- the first saved savegame (search for the first line beginning with 'save'
where the first part, up to the last underscore '_', is the same). We need
this savegame to be able to reproduce the bug when the last savegame is not
old enough. If you loaded a scenario or savegame you need to attach that.
- optionally you can attach the savegames from around 50%, 75%, 85%, 90% and
95% of the game's progression. We can use these savegames to speed up the
reproduction of the desync, but we should be able to reproduce these
savegames based on the first savegame and commands-out.log.
- in case you use any NewGRFs you should attach the ones you used unless
we can easily find them ourselves via bananas or when they are in the
#openttdcoop pack.
Do NOT remove the dmp_cmds savegames of a desync you have reported until the
desync has been fixed; if you, by accident, send us the wrong savegames we
will not be able to reproduce the desync and thus will be unable to fix it.

130
docs/directory_structure.md Normal file
View File

@@ -0,0 +1,130 @@
# OpenTTD directory structure
OpenTTD uses its own directory to store its required 3rd party base set files
(see section 4.1 'Required 3rd party files') and non-compulsory extension and
configuration files.
See below for their proper place within this OpenTTD main data directory.
The main OpenTTD directories can be found in various locations, depending on
your operating system:
1. The current working directory (from where you started OpenTTD)
For non-Windows operating systems OpenTTD will not scan for files in this
directory if it is your personal directory, i.e. '~/', or when it is the
root directory, i.e. '/'.
2. Your personal directory
- Windows:
- `C:\My Documents\OpenTTD` (95, 98, ME)
- `C:\Documents and Settings\<username>\My Documents\OpenTTD` (2000, XP)
- `C:\Users\<username>\Documents\OpenTTD` (Vista, 7, 8.1, 10)
- macOS: `~/Documents/OpenTTD`
- Linux: `$XDG_DATA_HOME/openttd` which is usually `~/.local/share/openttd`
when built with XDG base directory support, otherwise `~/.openttd`
3. The shared directory
- Windows:
- `C:\Documents and Settings\All Users\Shared Documents\OpenTTD` (2000, XP)
- `C:\Users\Public\Documents\OpenTTD` (Vista, 7, 8.1, 10)
- macOS: `/Library/Application Support/OpenTTD`
- Linux: not available
4. The binary directory (where the OpenTTD executable is)
- Windows: `C:\Program Files\OpenTTD`
- Linux: `/usr/games`
5. The installation directory (Linux only)
- Linux: `/usr/share/games/openttd`
6. The application bundle (macOS only)
It includes the OpenTTD files (grf+lng) and it will work as long as they
are not touched
Different types of data or extensions go into different subdirectories of the
chosen main OpenTTD directory:
| data type | directory | additional info |
| ------------------- | ----------------- | --------------------------- |
| Config File | (no subdirectory) | |
| Screenshots | screenshot | |
| Base Graphics | baseset | (or a subdirectory thereof) |
| Sound Sets | baseset | (or a subdirectory thereof) |
| NewGRFs | newgrf | (or a subdirectory thereof) |
| 32bpp Sets | newgrf | (or a subdirectory thereof) |
| Music Sets | baseset | (or a subdirectory thereof) |
| AIs | ai | (or a subdirectory thereof) |
| AI Libraries | ai/library | (or a subdirectory thereof) |
| Game Scripts (GS) | game | (or a subdirectory thereof) |
| GS Libraries | game/library | (or a subdirectory thereof) |
| Savegames | save | |
| Automatic Savegames | save/autosave | |
| Scenarios | scenario | |
The (automatically created) directory content_download is for OpenTTD's internal
use and no files should be added to it or its subdirectories manually.
## Notes:
- Linux in the previous list means .deb, but most paths should be similar for
others.
- The previous search order is also used for NewGRFs and openttd.cfg.
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3,
5 order. When built with XDG base directory support, openttd.cfg will be
created in $XDG_CONFIG_HOME/openttd which is usually ~/.config/openttd.
- Savegames will be relative to the config file only if there is no save/
directory in paths with higher priority than the config file path, but
autosaves and screenshots will always be relative to the config file.
Unless the configuration file is in $XDG_CONFIG_HOME/openttd, then all
other files will be saved under $XDG_DATA_HOME/openttd.
## The preferred setup:
Place 3rd party files in shared directory (or in personal directory if you do
not have write access on shared directory) and have your openttd.cfg config
file in personal directory (where the game will then also place savegames and
screenshots).
## Portable installations (portable media)
You can install OpenTTD on external media so you can take it with you, i.e.
using a USB key, or a USB HDD, etc.
Create a directory where you shall store the game in (i.e. OpenTTD/).
Copy the binary (OpenTTD.exe, OpenTTD.app, openttd, etc), baseset/ and your
openttd.cfg to this directory.
You can copy binaries for any operating system into this directory, which will
allow you to play the game on nearly any computer you can attach the external
media to.
As always - additional grf files are stored in the newgrf/ dir (for details,
again, see section 4.1).
## Files in tar (archives)
OpenTTD can read files that are in an uncompressed tar (archive), which
makes it easy to bundle files belonging to the same script, NewGRF or base
set. Music sets are the only exception as they cannot be stored in a tar
file due to being played by external applications.
OpenTTD sees each tar archive as the 'root' of its search path. This means that
having a file with the same path in two different tar files means that one
cannot be opened, after all only one file will be found first. As such it is
advisable to put an uniquely named folder in the root of the tar and put all the
content in that folder. For example, all downloaded content has a path that
concatenates the name of the content and the version, which makes the path
unique. For custom tar files it is advised to do this as well.
The normal files are also referred to by their relative path from the search
directory, this means that also normal files could hide files in a tar as
long as the relative path from the search path of the normal file is the
same as the path in the tar file. Again it is advised to have an unique path
to the normal file so they do not collide with the files from other tar
files.
## Configuration file
The configuration file for OpenTTD (openttd.cfg) is in a simple Windows-like
.INI format. It is mostly undocumented. Almost all settings can be changed
ingame by using the 'Advanced Settings' window.
When you cannot find openttd.cfg you should look in the directories as
described in this document. If you do not have an openttd.cfg OpenTTD will
create one after closing.

View File

@@ -0,0 +1,141 @@
# Logging, frame rate and performance metrics
## 1.0) Logging of potentially dangerous actions
OpenTTD is a complex program, and together with NewGRF, it may show a buggy
behaviour. But not only bugs in code can cause problems. There are several
ways to affect game state possibly resulting in program crash or multiplayer
desyncs.
Easier way would be to forbid all these unsafe actions, but that would affect
game usability for many players. We certainly do not want that.
However, we receive bug reports because of this. To reduce time spent with
solving these problems, these potentially unsafe actions are logged in
the savegame (including crash.sav). Log is stored in crash logs, too.
Information logged:
- Adding / removing / changing order of NewGRFs
- Changing NewGRF parameters, loading compatible NewGRF
- Changing game mode (scenario editor <-> normal game)
- Loading game saved in a different OpenTTD / TTDPatch / Transport Tycoon Deluxe /
original Transport Tycoon version
- Running a modified OpenTTD build
- Changing settings affecting NewGRF behaviour (non-network-safe settings)
- Triggering NewGRF bugs
No personal information is stored.
You can show the game log by typing 'gamelog' in the console or by running
OpenTTD in debug mode.
## 2.0) Frame rate and performance metrics
The Help menu in-game has a function to open the Frame rate window. This
window shows various real-time performance statistics, measuring what parts
of the game require the most processing power currently.
A summary of the statistics can also be retrieved from the console with the
`fps` command. This is especially useful on dedicated servers, where the
administrator might want to determine what's limiting performance in a slow
game.
The frame rate is given as two figures, the simulation rate and the graphics
frame rate. Usually these are identical, as the screen is rendered exactly
once per simulated tick, but in the future there might be support for graphics
and simulation running at different rates. When the game is paused, the
simulation rate drops to zero.
In addition to the simulation rate, a game speed factor is also calculated.
This is based on the target simulation speed, which is 30 milliseconds per
game tick. At that speed, the expected frame rate is 33.33 frames/second, and
the game speed factor is how close to that target the actual rate is. When
the game is in fast forward mode, the game speed factor shows how much
speed up is achieved.
The lower part of the window shows timing statistics for individual parts of
the game. The times shown are short-term and long-term averages of how long
it takes to process one tick of game time, all figures are in milliseconds.
Clicking a line in the lower part of the window opens a graph window, giving
detailed readings on each tick simulated by the game.
The following is an explanation of the different statistics:
- *Game loop* - Total processing time used per simulated "tick" in the game.
This includes all pathfinding, world updates, and economy handling.
- *Cargo handling* - Time spent loading/unloading cargo at stations, and
industries and towns sending/retrieving cargo from stations.
- *Train ticks*, *Road vehicle ticks*, *Ship ticks*, *Aircraft ticks* -
Time spent on pathfinding and other processing for each player vehicle type.
- *World ticks* - Time spent on other world/landscape processing. This
includes towns growing, building animations, updates of farmland and trees,
and station rating updates.
- *GS/AI total*, *Game script*, and *AI players* - Time spent running logic
for game scripts and AI players. The total may show as less than the current
sum of the individual scripts, this is because AI players at lower
difficulty settings do not run every game tick, and hence contribute less
to the average across all ticks. Keep in mind that the "Current" figure is
also an average, just only over short term.
- *Link graph delay* - Time overruns of the cargo distribution link graph
update thread. Usually the link graph is updated in a background thread,
but these updates need to synchronise with the main game loop occasionally,
if the time spent on link graph updates is longer than the time taken to
otherwise simulate the game while it was updating, these delays are counted
in this figure.
- *Graphics rendering* - Total time spent rendering all graphics, including
both GUI and world viewports. This typically spikes when panning the view
around, and when more things are happening on screen at once.
- *World viewport rendering* - Isolated time spent rendering just world
viewports. If this figure is significantly lower than the total graphics
rendering time, most time is spent rendering GUI than rendering world.
- *Video output* - Speed of copying the rendered graphics to the display
adapter. Usually this should be very fast (in the range of 0-3 ms), large
values for this can indicate a graphics driver problem.
- *Sound mixing* - Speed of mixing active audio samples together. Usually
this should be very fast (in the range of 0-3 ms), if it is slow, consider
switching to the NoSound set.
If the frame rate window is shaded, the title bar will instead show just the
current simulation rate and the game speed factor.
## 3.0) NewGRF callback profiling
NewGRF developers can profile callback chains via the `newgrf_profile`
console command. The command controls a profiling mode where every sprite
request is measured and logged, and written to a CSV file in the end.
The NewGRF developer tools need to be enabled for the command to function.
View the syntax for the command in-game with the console command
`help newgrf_profile`.
Profiling only works during game or in the editor, it's not possible to
profile across the main menu, world generation, or loading savegames.
The CSV files contain one line per sprite request during the profiling.
They can get very large, especially on large games with many objects from
the GRF. Start profiling short periods such as 3 or 7 days, and watch the
file sizes.
The produced CSV file contains the following fields:
- *Tick* - Game tick counter, this may wrap to zero during recording.
Mainly useful to distinguish events from separate ticks.
- *Sprite* - Index of the root Action 2 sprite in the GRF file. This is
the sprite group being resolved.
- *Feature* - NewGRF feature number the sprite group is being resolved for.
This will be 0xFF for AI purchase selection and ambient sound callbacks.
- *Item* - The id of the item within the GRF. For cargotypes, railtypes,
roadtypes, and tramtypes, this is the integer representation of the label.
- *CallbackID* - The type of callback being resolved. ID 0 is regular graphics
lookup. See the `newgrf_callbacks.h` file in the OpenTTD source code for the
full list of callback IDs.
- *Microseconds* - Total time spent to resolve the Action 2, in microseconds.
- *Depth* - Number of recursive Action 2 lookups were made during resolution.
Value zero means the sprite group resolved directly.
- *Result* - Result of the callback resolution. For lookups that result in
a sprite, this is the index of the base action 2 in the GRF file. For
callbacks that give a numeric result, this is the callback result value.
For lookups that result in an industry production or tilelayout, this
is the sprite index of the action 2 defining the production/tilelayout.

View File

@@ -1,7 +1,5 @@
#!/bin/sh
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -69,6 +67,7 @@ if [ -d "$ROOT_DIR/.git" ] || [ -f "$ROOT_DIR/.git" ]; then
HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null`
SHORTHASH=`echo ${HASH} | cut -c1-10`
ISODATE=`LC_ALL=C git show -s --pretty='format:%ci' HEAD | "$AWK" '{ gsub("-", "", $1); print $1 }'`
YEAR=`echo ${ISODATE} | cut -c1-4`
BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@'`"
TAG="`git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null | sed 's@\^0$@@'`"
@@ -105,10 +104,11 @@ else
SHORTHASH=""
BRANCH=""
ISODATE=""
YEAR=""
TAG=""
VERSION=""
ISTAG="0"
ISSTABLETAG="0"
fi
echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG $ISSTABLETAG"
echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG $ISSTABLETAG $YEAR"

View File

@@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2019-10-29
Release version: 1.10.0-beta1
Last updated: 2020-06-01
Release version: 1.10.2
------------------------------------------------------------------------

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents more or less nothingness
;
[metadata]

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents more or less nothingness
;
[metadata]

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents the original graphics as on the non-German Transport
; Tycoon Deluxe DOS CD.
;

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents the original music as on the Transport
; Tycoon Deluxe for DOS CD.
;

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents the original sounds as on the Transport
; Tycoon Deluxe DOS CD.
;

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents the original graphics as on the German Transport
; Tycoon Deluxe DOS CD. It contains one broken sprite.
;

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents the original music as on the Transport
; Tycoon (with World Editor) for DOS CD.
;

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents the original graphics as on the Transport
; Tycoon Deluxe for Windows CD.
;

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents the original music as on the Transport
; Tycoon Deluxe for Windows CD.
;

View File

@@ -1,5 +1,3 @@
; $Id$
;
; This represents the original sounds as on the Transport
; Tycoon Deluxe for Windows CD.
;

View File

@@ -1,5 +1,3 @@
# $Id: openttd.desktop.translation.awk 24100 2012-04-08 14:29:31Z rubidium $
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -63,10 +63,14 @@ Sub Lookup(ini_key, str_id, outfile)
For Each file In folder.Files
If UCase(FSO.GetExtensionName(file.Name)) = "TXT" Then
Dim f
Set f = FSO.OpenTextFile(file.Path)
Set f = CreateObject("ADODB.Stream")
f.Charset = "utf-8"
f.LineSeparator = 10 ' Assume lines end with \n even for \r\n files
f.Open
f.LoadFromFile(file.Path)
Do Until f.atEndOfStream
line = f.ReadLine()
Do Until f.EOS
line = Replace(f.ReadText(-2), Chr(13), "") ' Read a line and remove any \r
If InStr(1, line, "##isocode ") = 1 Then
p = Split(line)
@@ -80,8 +84,9 @@ Sub Lookup(ini_key, str_id, outfile)
End If
i = i + 1
End If
Loop
f.Close
End If
Next
@@ -89,7 +94,7 @@ Sub Lookup(ini_key, str_id, outfile)
ISort output
For Each line In output
outfile.Write line & vbCrLf
outfile.WriteText line, 1
Next
End Sub
@@ -100,7 +105,9 @@ Dim infile
Set infile = FSO.OpenTextFile(inputfile)
Dim outfile
Set outfile = FSO.CreateTextFile(outputfile, True)
Set outfile = CreateObject("ADODB.Stream")
outfile.Charset = "utf-8"
outfile.Open
Do Until infile.atEndOfStream
@@ -109,15 +116,30 @@ Do Until infile.atEndOfStream
If InStr(1, line, "ORIG_EXTRA.GRF ") = 1 Then
p = Split(line, "=")
If Trim(p(1)) = "" Then
outfile.Write("ORIG_EXTRA.GRF = " & GetExtraGrfHash() & vbCrLf)
outfile.WriteText "ORIG_EXTRA.GRF = " & GetExtraGrfHash(), 1
Else
outfile.Write(line & vbCrLf)
outfile.WriteText line, 1
End If
ElseIf InStr(1, line, "!! ") = 1 Then
p = Split(line)
Lookup p(1), p(2), outfile
Else
outfile.Write(line & vbCrLf)
outfile.WriteText line, 1
End If
Loop
' UTF-8 Text ADO Stream includes BOM, so we need to remove it
Dim outfile_noBOM
Set outfile_noBOM = CreateObject("ADODB.Stream")
outfile_noBOM.Type = 1
outfile_noBOM.Open
' Copy Text stream to Binary stream, skiping the BOM
outfile.Position = 3
outfile.CopyTo outfile_noBOM
outfile.Close
' Write the Binary stream
outfile_noBOM.SaveToFile outputfile, 2
outfile_noBOM.Close

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,5 +1,3 @@
# $Id$
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -2,8 +2,6 @@
// (Info version 32)
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1017 B

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -2,8 +2,6 @@
// (Info version 32)
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

View File

@@ -1,6 +1,3 @@
//
// $Id$
//
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Some files were not shown because too many files have changed in this diff Show More