Compare commits

...

22 Commits

Author SHA1 Message Date
rubidium 640184e278 (svn r12908) -Release: 0.6.1-RC1.
Lots of bugfixes and solved some performance regressions.
2008-04-26 21:05:09 +00:00
rubidium 9e966f9cd0 (svn r12907) [0.6] -Backport from trunk r12906:
- Fix: Vehicle groups, engine replacement rules and player/company names were not properly reset/freed after bankrupt (r12906)
[0.6] -Prepare: for 0.6.1-RC1.
2008-04-26 20:54:56 +00:00
rubidium 942a752e2a (svn r12905) [0.6] -Backport from trunk r12904, r12876:
- Fix: Remove trams from savegames saved in OTTD without tram support, it is better than to simply crash [FS#1953] (r12904)
- Fix: GCC on FreeBSD does not support -dumpmachine causing configure to fail. Use g++ instead [FS#1928] (r12876)
2008-04-25 19:27:27 +00:00
rubidium 9e03a7b23a (svn r12893) [0.6] -Backport from trunk (r12543, r12861):
- Language updates (r12543, r12861)
2008-04-25 06:53:50 +00:00
rubidium e114133d18 (svn r12891) [0.6] -Fix (r12868): breakdowns were broken and would cause vehicles to go slower than they should have been moving. 2008-04-25 06:15:12 +00:00
rubidium 9241c4649d (svn r12871) [0.6] -Backport from trunk r12819, r12818, r12759:
- Fix: Inconsistent use of 8/15-bitness of NewGRF callback results with respect to TTDP's implementation of the specification (r12819, r12818, r12759)
2008-04-24 14:33:18 +00:00
rubidium f126c2e66f (svn r12869) [0.6] -Backport from trunk r12714, r12708, r12674, r12577, r12553:
- Fix: Do not move windows below the toolbar on resizes unless they would go behind the toolbar [FS#1904] (r12714)
- Fix: Increase default sound buffer size only for Vista [FS#1914] (r12708)
- Fix: Colour remaps on station sprites only worked for company colours [FS#1902] (r12674)
- Fix: The convert signal button disallowed signal dragging when the signal GUI was closed (r12577)
- Fix: Redraw the signal GUI when the signal drag density changes in the patch settings and vice versa (r12553)
2008-04-24 12:36:18 +00:00
rubidium c973bd87ce (svn r12868) [0.6] -Backport from trunk r12795, r12776, r12683, r12681, r12678:
- Fix: Vehicles could break down during loading and keep loading. The intention of the break down code is not to break down when having zero speed, therefor break downs now do not happen when loading [FS#1938] (r12795)
- Fix: [OSX] In some rare cases when using an uncalibrated monitor the system colour space could not be retrieved. Show an error when this happens instead of just trying an assertion (r12776)
- Fix: In some cases a news messages would not be shown [FS#1906] (r12683)
- Fix: When a road vehicle has a tram only stop multiple times in a row in it's orders, only the first one would be skipped [FS#1918] (r12678)
2008-04-24 12:32:37 +00:00
rubidium 4cb6a89e81 (svn r12867) [0.6] -Backport from trunk r12706, r12642, r12622, r12572, r12542:
- Fix: Do not crash very hard on unrecognised savegames, just go back to the intro menu instead (r12706)
- Fix: Remove buggy buoys at tile 0 from old TTDP savegames (r12642)
- Fix: Infinite loop in case your compiler decides that enums are unsigned by default (r12622)
- Fix: min() has 32bit arguments, clamping of 64bit values did not work (r12572)
- Fix: Do not install scenarios into the current user's homedir when running 'make install', that is silly. Simply always install scenarios system wide instead (r12542)
2008-04-24 12:15:24 +00:00
rubidium 7bf1737a66 (svn r12866) [0.6] -Backport from trunk r12759, r12717, r12682, r12564, r12561:
- Fix: Slope checking for NewGRFs failed (r12759)
- Fix: Check the TILE_NOT_SLOPED flag of the _north_ tile of multi-tile houses to decide if autoslope is allowed (r12717)
- Fix: Removing road pieces from a town gave you twice the intended penalty [FS#1920] (r12682)
- Fix: Towns could not terraform when inflation rised terraform prices enough (r12564)
- Fix: Do not affect town rating change by the order in which we examine stations (r12561)
2008-04-24 12:05:36 +00:00
rubidium fb0afc9cca (svn r12865) [0.6] -Backport from trunk r12856, r12809, r12808, r12637, r12574:
- Fix: Ensure that prop 25 is set for all vehicles in the consist before other properties as it could cause desyncs (r12856)
- Fix: Possible out of bounds array access (r12809)
- Fix: Enforce autorenew values range in command (r12808)
- Fix: Possible NULL pointer dereference when reading some NewGRF data [FS#1913] (r12637)
- Fix: Binding to a specific IP could cause OpenTTD to not register properly with the masterserver if one has multiple external interfaces (r12574)
2008-04-24 11:56:15 +00:00
rubidium 9f65c1b8f0 (svn r12864) [0.6] -Backport from trunk r12859, r12857, r12855, r12845, r12844:
- Fix: Make the town rating tests use less memory and much quicker (r12859)
- Fix: Usage of AutoPtr made (trying to) build stuff very expensive (r12857, r12855)
- Fix: Use YAPF for fairly old savegames from before YAPF was introduced (r12845)
- Fix: The industry tick trigger should only be triggered once every 256 ticks, not every tick... Also bail out of the triggers a little earlier if you know they are not going to happen anyway (r12844)
2008-04-24 11:48:09 +00:00
rubidium 1a495b0b1c (svn r12524) [0.6] -Update: some documentation. 2008-03-31 22:09:27 +00:00
rubidium 5294075ad4 (svn r12523) [0.6] -Backport from trunk (r12486): wrong copy right data in Windows binaries. 2008-03-31 21:46:15 +00:00
rubidium ed4ae53e8a (svn r12485) [0.6] -Backport: from trunk (r12483, disabling of stripping for betas and RCs). 2008-03-30 15:20:30 +00:00
rubidium c53f9fc2a2 (svn r12481) [0.6] -Backport r12480 from trunk (default enabling of assertions). 2008-03-28 21:42:47 +00:00
rubidium cbd426059e (svn r12478) [0.6] -Backport from trunk (12477, 12453, 12448, 12443, 12439, 12417):
- Fix: Timetable times for aircraft were always doubled [FS#1883] (r12477)
- Fix: Remove broken endian-dependent code and unnecessary rgb to bgr swapping [FS#1880] (r12453)
- Change: Unify RPM spec files (r12448)
- Add: OpenTTD's version to the config file to 'ease' getting the correct version on bugreports (r12443)
- Fix: Do not 'disable' the drawing of autorail overlays when the tile is 'error'-marked (red pulsating selection) [FS#1871] (r12439)
- Fix: Plural rule for Icelandic was wrong (r12417)
2008-03-28 19:01:57 +00:00
rubidium 624549464f (svn r12465) [0.6] -Fix: for the 0.6.x releases we shouldn't say we're 0.7.0~svn. 2008-03-28 11:51:58 +00:00
belugas 1f9dce4697 (svn r12432) [0.6] -Change: Update documentation for release of RC1 2008-03-26 15:24:34 +00:00
glx 185c30b6bf (svn r12418) [0.6] -Backport from trunk (r12408):
- Language updates (r12408)
2008-03-25 18:34:49 +00:00
glx 8df7a53652 (svn r12416) [0.6] -Backport from trunk (r12399, r12401):
- Fix: loading of TTD savegames (r12399, r12401)
2008-03-25 14:53:59 +00:00
rubidium 9d47454105 (svn r12395) [0.6] -Branch: the long awaited branch so we can introduce new features in trunk before 0.6.0, but not let them destabalize the pending release :) 2008-03-22 19:48:14 +00:00
88 changed files with 953 additions and 956 deletions
-6
View File
@@ -22,7 +22,6 @@ INSTALL_DIR = !!INSTALL_DIR!!
INSTALL_BINARY_DIR = "$(INSTALL_DIR)/"!!BINARY_DIR!!
INSTALL_ICON_DIR = "$(INSTALL_DIR)/"!!ICON_DIR!!
INSTALL_DATA_DIR = "$(INSTALL_DIR)/"!!DATA_DIR!!
INSTALL_PERSONAL_DIR = !!PERSONAL_DIR!!
TTD = !!TTD!!
TTDS = $(SRC_DIRS:%=%/$(TTD))
OS = !!OS!!
@@ -271,10 +270,5 @@ install: bundle
$(Q)install -m 644 "$(BUNDLE_DIR)/data/"* "$(INSTALL_DATA_DIR)/data"
$(Q)install -m 644 "$(BUNDLE_DIR)/docs/"* "$(INSTALL_DATA_DIR)/docs"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/"* "$(INSTALL_ICON_DIR)"
ifdef INSTALL_PERSONAL_DIR
$(Q)mkdir -p ~/"$(INSTALL_PERSONAL_DIR)"
$(Q)cp -R "$(BUNDLE_DIR)/scenario" ~/"$(INSTALL_PERSONAL_DIR)"
else
$(Q)cp -R "$(BUNDLE_DIR)/scenario" "$(INSTALL_DATA_DIR)"
endif # INSTALL_PERSONAL_DIR
endif # OSXAPP
+82 -2
View File
@@ -1,3 +1,83 @@
0.6.1-RC1 (2008-04-26)
------------------------------------------------------------------------
- Fix: Vehicle groups, engine replacement rules and player/company names were not properly reset/freed after bankrupt (r12906)
- Fix: Remove trams from savegames saved in OTTD without tram support, it is better than to simply crash [FS#1953] (r12904)
- Fix: GCC on FreeBSD does not support -dumpmachine causing configure to fail. Use g++ instead [FS#1928] (r12876)
- Fix: Make the town rating tests use less memory and much quicker (r12859)
- Fix: Usage of AutoPtr made (trying to) build stuff very (time) expensive (r12857, r12855)
- Fix: Ensure that prop 25 is set for all vehicles in the consist before other properties as it could cause desyncs (r12856)
- Fix: Too much catenary was drawn about tunnel entrances, middle bridge pieces and non-rail station tiles (r12853, r12852)
- Fix: Use YAPF for fairly old savegames from before YAPF was introduced (r12845)
- Fix: The industry tick trigger should only be triggered once every 256 ticks, not every tick... Also bail out of the triggers a little earlier if you know they are not going to happen anyway (r12844)
- Fix: Inconsistent use of 8/15-bitness of NewGRF callback results with respect to TTDP's implementation of the specification (r12819, r12818, r12759)
- Fix: Possible out of bounds array access (r12809)
- Fix: Enforce autorenew values range in command (r12808)
- Fix: Vehicles could break down during loading and keep loading. The intention of the break down code is not to break down when having zero speed, therefor break downs now do not happen when loading [FS#1938] (r12795)
- Fix: [OSX] In some rare cases when using an uncalibrated monitor the system colour space could not be retrieved. Show an error when this happens instead of just trying an assertion (r12776)
- Fix: Slope checking for NewGRFs failed (r12759)
- Fix: Check the TILE_NOT_SLOPED flag of the _north_ tile of multi-tile houses to decide if autoslope is allowed (r12717)
- Fix: Do not move windows below the toolbar on resizes unless they would go behind the toolbar [FS#1904] (r12714)
- Fix: Increase default sound buffer size only for Vista [FS#1914] (r12708)
- Fix: Do not crash very hard on unrecognised savegames, just go back to the intro menu instead (r12707)
- Fix: In some cases a news messages would not be shown [FS#1906] (r12683)
- Fix: Removing road pieces from a town gave you twice the intended penalty [FS#1920] (r12682)
- Fix: When a road vehicle has a tram only stop multiple times in a row in it's orders, only the first one would be skipped [FS#1918] (r12678)
- Fix: Colour remaps on station sprites only worked for company colours [FS#1902] (r12674)
- Fix: Remove buggy buoys at tile 0 from old TTDP savegames (r12642)
- Fix: Possible NULL pointer dereference when reading some NewGRF data [FS#1913] (r12637)
- Fix: Infinite loop in case your compiler decides that enums are unsigned by default (r12622)
- Fix: The convert signal button disallowed signal dragging when the signal GUI was closed (r12577)
- Fix: Binding to a specific IP could cause OpenTTD to not register properly with the masterserver if one has multiple external interfaces (r12574)
- Fix: min() has 32bit arguments, clamping of 64bit values did not work (r12572)
- Fix: Towns could not terraform when inflation rised terraform prices enough (r12564)
- Fix: Do not affect town rating change by the order in which we examine stations (r12561)
- Fix: Redraw the signal GUI when the signal drag density changes in the patch settings and vice versa (r12553)
- Fix: Do not install scenarios into the current user's homedir when running 'make install', that is silly. Simply always install scenarios system wide instead (r12542)
0.6.0 (2008-04-01)
------------------------------------------------------------------------
- Fix: Final formatting of some string codes from NewGRFs was not done correctly [FS#1889] (r12488)
- Fix: Timetable times for aircraft were always doubled [FS#1883] (r12477)
- Fix: Remove broken endian-dependent code and unnecessary rgb to bgr swapping [FS#1880] (r12453)
- Fix: Do not 'disable' the drawing of autorail overlays when the tile is 'error'-marked (red pulsating selection) [FS#1871] (r12439)
- Fix: Plural rule for Icelandic was wrong (r12417)
0.6.0-RC1 (2008-03-26)
------------------------------------------------------------------------
- Feature: Show whether a town is a "city" in the town description title bar (r12391)
- Feature: Increase house animation frame number from 32 to 128 (r12347)
- Fix: Loading of TTD savegames (r12399, r12401)
- Fix: Vehicle lists related to stations not closed when the station is deleted [FS#1872] (r12393)
- Fix: Trams failing to turn on bridge heads/tunnel entrances [FS#1851] (r123890)
- Fix: Train could break apart when reversed while partially in a depot [FS#1841] (r12386, r12384)
- Fix: Non-breaking spaces should not be broken (r12385)
- Fix: Check return of AfterLoadGame for success or failure when loading TTD games [FS#1860] (r12383)
- Fix: Use 'items' unit for batteries, fizzy drinks, toys and bubbles in total cargo tab [FS#1864] (r12382)
- Fix: The number of houses wasn't computed right [FS#1835, FS#1535] (r12381)
- Fix: Update train acceleration and max speed after setting cached value to ensure the correct max speed is used with disabled real acceleration (r12380)
- Fix: Refresh vehicle details window when cached values are updated (r12378)
- Fix: Set cached value for vehicle property 25 before other cached values [FS#1854] (r12377)
- Fix: Don't close a dropmenu when clicking on a dropdown widget (r12374)
- Fix: win32 music driver fails if path is too long or if containing non-latin chars [FS#1849] (r12373, r12372)
- Fix: Do not let window hide behind the main toolbar after resizing the screen [FS#1823] (r12371)
- Fix: Close language drop down when parent window is clicked/closed [FS#1853] (r12370)
- Fix: Reset train speed limits when _patches.realistic_acceleration changes (r12369)
- Fix: Commands were sent to clients waiting for map download causing 'executing command from the past' error [FS#1650] (r12367)
- Fix: Do not allow building 'zero' road bits (r12363)
- Fix: Randomize variable 8F only once per callback 28 (r12362)
- Fix: openttdd.grf was using the wrong colours for glyphs due to a grfcodec bug (fixed in grfcodec 0.9.10 r1837) (r12360)
- Fix: Some callback-results were treated as 8 bit, when they were 15 bit, and vice versa (r12352, r12358)
- Fix: Do not try to flood water tile [FS#1836] (r12350)
- Fix: NTP skipped junction just after bridge end (r12348)
- Fix: Remove duplicated and inconsistent code wrt. autoreplace with rules in both vehicles' group and ALL_GROUP [FS#1748, FS#1825] (r12346)
- Fix: Don't try to restore backupped timetable when timetabling is disabled [FS#1828] (r12345)
- Fix: Slow helicopters never got the 'chance' to finish the landing routine (r12343)
- Fix: GRM buffer for cargos was incorrect size [FS#1827] (r12341)
- Fix: Recalculate cached train data after clearing reversing flag when entering depot (r12339)
0.6.0-beta5 (2008-03-04)
------------------------------------------------------------------------
- Feature: Vehicle variable FE bit 5, 6 and 8 [FS#1812] (r12331, r12330)
@@ -15,7 +95,7 @@
- Fix: Include prop 25 data for all train parts, not just those that carry cargo (r12314)
- Fix: YAPF and NTP did not apply penalty for uphill tracks on steep slopes (r12313)
- Fix: Restore timetable from backupped orders and add group ID to the backup [FS#1549] (r12296)
- Fix: Do not draw trees nor lamps between tram tracks (r12290) [FS#1807]
- Fix: Do not draw trees nor lamps between tram tracks (r12290) [FS#1807]
- Fix: [Win32] Do not create save dir on install (r12269)
- Fix: Autoreplace did not update vehicle index for timetable window [FS#1805] (r12261)
- Fix: GetProductionAroundTiles() may fail if only the second production slot exists (r12258)
@@ -26,7 +106,7 @@
- Fix: When loading a savegame fails, do not start creating a new game, just go straight back to the intro screen (r12202)
- Fix: Force AI to build rail or road instead of bridges if possible, so it doesn't build bridges everywhere (r12200)
- Fix: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent [FS#1789] (r12198)
- Fix: Show correct last year profit when the train had negative income [FS#1788] (r12197)
- Fix: Show correct last year profit when the train had negative income [FS#1788] (r12197)
- Fix: There can be oil rigs at map borders, do not set water class for them [FS#1787] (r12195)
- Fix: Do not start overtaking if the RV reaches wrong-way one-way-road in the next tiles (r12191)
- Fix: Assert when trying to play tile sound at NW border of map (placing buyos, leveling land) [FS#1784] (r12186)
+20 -7
View File
@@ -5,7 +5,7 @@ log() {
}
set_default() {
released_version=""
released_version="0.6.1-RC1"
ignore_extra_parameters="0"
# We set all kinds of defaults for params. Later on the user can override
@@ -41,7 +41,7 @@ set_default() {
enable_translator="0"
enable_unicode="1"
enable_assert="1"
enable_strip="1"
enable_strip="0"
enable_universal="1"
enable_osx_g5="0"
enable_cocoa_quartz="1"
@@ -419,11 +419,11 @@ check_params() {
detect_awk
detect_os
check_build
check_host
detect_os
# We might enable universal builds always on OSX targets.. but currently we don't
# if [ "$enable_universal" = "1" ] && [ "$os" != "OSX" ]; then
if [ "$enable_universal" = "1" ]; then
@@ -1347,13 +1347,26 @@ check_compiler() {
}
check_build() {
check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
if [ "$os" = "FREEBSD" ]; then
# FreeBSD's C compiler does not support dump machine.
# However, removing C support is not possible because PSP must be linked with the C compiler.
check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
else
check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
fi
}
check_host() {
# By default the host is the build
if [ -z "$host" ]; then host="$build"; fi
check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
if [ "$os" = "FREEBSD" ]; then
# FreeBSD's C compiler does not support dump machine.
# However, removing C support is not possible because PSP must be linked with the C compiler.
check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
else
check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
fi
}
check_cxx_build() {
@@ -2335,7 +2348,7 @@ showhelp() {
echo " version (Win32 ONLY)"
echo " --disable-network disable network support"
echo " --disable-assert disable asserts (continue on errors)"
echo " --disable-strip disable any possible stripping"
echo " --enable-strip enable any possible stripping"
echo " --without-osx-sysroot disable the automatic adding of sysroot "
echo " (OSX ONLY)"
echo " --without-application-bundle disable generation of application bundle"
+12 -4
View File
@@ -11,15 +11,23 @@ by the number below on http://bugs.openttd.org.
If the bug report is closed, it has been fixed, which then can be verified
in the latest SVN version of /trunk.
Bugs for 0.6.0-beta5
Bugs for 0.6.1
------------------------------------------------------------------------
URL: http://bugs.openttd.org
- 1944 Road vehicles not picking empty drivethrough platform
- 1923 Unique names not always enforced
- 1891 Go to depot for servicing is forgotten
- 1890 Airplanes copy helipcopters goto heliport order
- 1885 Almost all unserved industries die in big maps
- 1868 In depot, cannot move wagon from another line before first wagon in a wagon-only line
- 1858 Industry legend in small map overwrites buttons
- 1852 Minor tram reversing glitches
- 1802 Path with space in configure fails
- 1793 Inconsistent travel time for fast trains
- 1762 Strange Autoreplace behaviour
- 1711 Gravel and Clay have no worth
- 1752 User input is not checked
- 1693 Removing road does not reset owner
- 1495 Long vehicles block multistop station
- 1487 Ending_year is never written to
- 1473 Train not going to available platform
- 1404 Spinner widget interprets one click as many
- 1264 Autoreplace for multiple NewGRF DMU sets fails
+19 -1
View File
@@ -1,4 +1,22 @@
openttd (0.6.0~beta5) unstable; urgency=low
openttd (0.6.1~RC1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Sat, 26 Apr 2008 22:55:00 +0200
openttd (0.6.0) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Tue, 01 Apr 2008 13:33:37 +0100
openttd (0.6.0~RC1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Wed, 26 Mar 2008 15:51:40 +0100
openttd (0.6.0~beta5-1) unstable; urgency=low
* New upstream release.
-9
View File
@@ -1,9 +0,0 @@
You require the data files of the original Transport Tycoon Deluxe
for Windows to play the game. You have to manually copy the following
files to %{_gamesdatadir}/openttd/data/
sample.cat
trg1r.grf
trgcr.grf
trghr.grf
trgir.grf
trgtr.grf
-146
View File
@@ -1,146 +0,0 @@
#------------------------------------------------------------------------------
# openttd.spec
# This SPEC file controls the building of custom OpenTTD RPM
# packages.
#------------------------------------------------------------------------------
%define name openttd
%define version 0.5.0
%define release 1mdk
#------------------------------------------------------------------------------
# Prologue information
#------------------------------------------------------------------------------
Name: %{name}
Version: %{version}
Release: %{release}
Summary: An open source clone of the Microprose game "Transport Tycoon Deluxe"
Group: Games/Strategy
License: GPL
URL: http://www.openttd.org
Source: %{name}-%{version}.tar.gz
Packager: Dominik Scherer <dominik@openttd.com>
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
BuildRequires: libSDL1.2-devel >= 1.2.7
BuildRequires: libpng3-devel >= 1.2.5
BuildRequires: zlib1-devel >= 1.2.1
#------------------------------------------------------------------------------
# Description
#------------------------------------------------------------------------------
%description
An enhanced open source clone of the Microprose game "Transport Tycoon Deluxe".
You require the data files of the original Transport Tycoon Deluxe
for Windows to play the game. You have to MANUALLY copy them to the
game data directory!
#------------------------------------------------------------------------------
# install scripts
#------------------------------------------------------------------------------
%prep
rm -rf $RPM_BUILD_ROOT
%setup
%build
make BINARY_DIR=%{_gamesbindir} PREFIX=%{_gamesdatadir} DATA_DIR=openttd INSTALL_DIR=%{_gamesdatadir}/openttd/ USE_HOMEDIR=1 PERSONAL_DIR=.openttd INSTALL=1 RELEASE=%{version}
%install
mkdir -p $RPM_BUILD_ROOT%{_gamesbindir}
mkdir -p $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/lang
mkdir -p $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/data
mkdir -p $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/scenario
cp ./openttd $RPM_BUILD_ROOT%{_gamesbindir}/
cp -r ./lang/*.lng $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/lang/
cp -r ./data/*.grf $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/data/
cp -r ./scenario/*.scn $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/scenario/
cp -r ./data/opntitle.dat $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/data/
# icon
install -m644 media/openttd.32.png -D $RPM_BUILD_ROOT%{_miconsdir}/%{name}.png
install -m644 media/openttd.64.png -D $RPM_BUILD_ROOT%{_iconsdir}/%{name}.png
install -m644 media/openttd.128.png -D $RPM_BUILD_ROOT%{_liconsdir}/%{name}.png
# menu entry
mkdir -p $RPM_BUILD_ROOT/%{_menudir}
cat << EOF > $RPM_BUILD_ROOT/%{_menudir}/%{name}
?package(%{name}):command="%{_gamesbindir}/openttd" icon="%{name}.png" \
needs="X11" section="Amusement/Strategy" title="OpenTTD" \
longtitle="%{Summary}"
EOF
%clean
rm -rf $RPM_BUILD_ROOT
%post
%{update_menus}
%postun
%{clean_menus}
#------------------------------------------------------------------------------
# Files listing.
#------------------------------------------------------------------------------
%files
%defattr(-,root,root,0755)
%{_gamesbindir}/openttd
%{_gamesdatadir}/openttd/lang/american.lng
%{_gamesdatadir}/openttd/lang/catalan.lng
%{_gamesdatadir}/openttd/lang/czech.lng
%{_gamesdatadir}/openttd/lang/danish.lng
%{_gamesdatadir}/openttd/lang/dutch.lng
%{_gamesdatadir}/openttd/lang/english.lng
%{_gamesdatadir}/openttd/lang/finnish.lng
%{_gamesdatadir}/openttd/lang/french.lng
%{_gamesdatadir}/openttd/lang/galician.lng
%{_gamesdatadir}/openttd/lang/german.lng
%{_gamesdatadir}/openttd/lang/hungarian.lng
%{_gamesdatadir}/openttd/lang/icelandic.lng
%{_gamesdatadir}/openttd/lang/italian.lng
%{_gamesdatadir}/openttd/lang/norwegian.lng
%{_gamesdatadir}/openttd/lang/origveh.lng
%{_gamesdatadir}/openttd/lang/polish.lng
%{_gamesdatadir}/openttd/lang/portuguese.lng
%{_gamesdatadir}/openttd/lang/romanian.lng
%{_gamesdatadir}/openttd/lang/slovak.lng
%{_gamesdatadir}/openttd/lang/spanish.lng
%{_gamesdatadir}/openttd/lang/swedish.lng
%{_gamesdatadir}/openttd/data/autorail.grf
%{_gamesdatadir}/openttd/data/canalsw.grf
%{_gamesdatadir}/openttd/data/openttd.grf
%{_gamesdatadir}/openttd/data/opntitle.dat
%{_gamesdatadir}/openttd/data/signalsw.grf
%{_gamesdatadir}/openttd/data/trkfoundw.grf
"%{_gamesdatadir}/openttd/scenario/Linkgame Islands 2004.scn"
"%{_gamesdatadir}/openttd/scenario/Mountain Pass.scn"
"%{_gamesdatadir}/openttd/scenario/Volcano City.scn"
%{_menudir}/%{name}
%{_iconsdir}/*.png
%{_miconsdir}/*.png
%{_liconsdir}/*.png
%doc changelog.txt readme.txt COPYING os/linux/README.urpmi
#------------------------------------------------------------------------------
# Change Log
#------------------------------------------------------------------------------
%changelog
* Sun Jan 23 2005 Dominik Scherer <dominik@openttd.com> 0.3.6-1mdk
- Upgraded to 0.3.6
- Structured and commented the spec file a bit (inspired by ScummVM)
* Fri Dec 24 2004 Dominik Scherer <dominik@openttd.com> 0.3.5-1mdk
- Upgraded to 0.3.5
- Added a warning message about the additional required files (only displayed when installing via urpmi)
* Wed Sep 15 2004 Dominik Scherer <> 0.3.4-1mdk
- Upgraded to 0.3.4
* Wed Jul 31 2004 Dominik Scherer <> 0.3.3-1mdk
- Initial release
+75
View File
@@ -0,0 +1,75 @@
#
# spec file for package openttd (trunk)
#
# Copyright (c) 2007 The OpenTTD team.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself
#
Name: openttd
Version: svn
Release: head
Group: Applications/Games
Source: %{name}-%{version}-%{release}.tar.gz
License: GPL
URL: http://www.openttd.org
Packager: Denis Burlaka <burlaka@yandex.ru>
Summary: OpenTTD is an Open Source clone of Chris Sawyer's Transport Tycoon Deluxe
Requires: SDL zlib libpng freetype2 fontconfig
BuildRequires: gcc SDL-devel zlib-devel libpng-devel fontconfig-devel
%if %{_vendor}=="suse"
BuildRequires: freetype2-devel
%endif
%if %{_vendor}=="fedora"
BuildRequires: freetype-devel
%endif
%if %{_vendor}=="mandriva"
BuildRequires: libfreetype6-devel
%endif
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
Prefix: /usr
%description
OpenTTD is a clone of the Microprose game "Transport Tycoon Deluxe", a popular game originally 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. For more information, see the file 'COPYING' included with every release and source download of the game.
%prep
%setup
%build
./configure --prefix-dir=%{prefix} --binary-dir=bin --install-dir="$RPM_BUILD_ROOT"
make
%install
make ROOT="$RPM_BUILD_ROOT" install
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications
cat << EOF > $RPM_BUILD_ROOT/%{_datadir}/applications/%{name}.desktop
[Desktop Entry]
Categories=Games;
Encoding=UTF-8
Exec=/usr/bin/openttd
Name=OpenTTD
Icon=openttd.32
Terminal=false
Type=Application
EOF
%clean
rm -Rf "$RPM_BUILD_ROOT"
%files
%dir %{_datadir}/games/%{name}
%dir %{_datadir}/games/%{name}/lang
%dir %{_datadir}/games/%{name}/data
%dir %{_datadir}/games/%{name}/gm
%dir %{_datadir}/games/%{name}/docs
%dir %{_datadir}/pixmaps
%defattr(644, root, games, 755)
%attr(755, root, games) %{_bindir}/%{name}
%{_datadir}/games/%{name}/lang/*
%{_datadir}/games/%{name}/data/*
%{_datadir}/games/%{name}/docs/*
%{_datadir}/pixmaps/*
%{_datadir}/applications/%{name}.desktop
Binary file not shown.
+3 -3
View File
@@ -1,9 +1,9 @@
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "0.6.0" ; Define application version
!define INSTALLERVERSION 43 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!define APPVERSION "0.6.1" ; Define application version
!define INSTALLERVERSION 46 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!define APPURLLINK "http://www.openttd.org"
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta5"
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}"
!define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X
!define MUI_ICON "..\..\..\media\openttd.ico"
+1 -1
View File
@@ -239,7 +239,7 @@ Function IsCachedVersion(version)
End Function
Dim version
version = DetermineSVNVersion
version = "0.6.1-RC1"
If Not (IsCachedVersion(version) And FSO.FileExists("../src/rev.cpp") And FSO.FileExists("../src/ottdres.rc")) Then
UpdateFiles version
End If
+2 -10
View File
@@ -61,7 +61,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -272,7 +272,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -2075,14 +2075,6 @@
RelativePath=".\..\src\misc\array.hpp"
>
</File>
<File
RelativePath=".\..\src\misc\autocopyptr.hpp"
>
</File>
<File
RelativePath=".\..\src\misc\autoptr.hpp"
>
</File>
<File
RelativePath=".\..\src\misc\binaryheap.hpp"
>
+2 -2
View File
@@ -61,7 +61,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -272,7 +272,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -10
View File
@@ -62,7 +62,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -270,7 +270,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -2072,14 +2072,6 @@
RelativePath=".\..\src\misc\array.hpp"
>
</File>
<File
RelativePath=".\..\src\misc\autocopyptr.hpp"
>
</File>
<File
RelativePath=".\..\src\misc\autoptr.hpp"
>
</File>
<File
RelativePath=".\..\src\misc\binaryheap.hpp"
>
+2 -2
View File
@@ -62,7 +62,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -270,7 +270,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -2
View File
@@ -1,6 +1,6 @@
OpenTTD README
Last updated: 2008-03-04
Release version: 0.6.0-beta5
Last updated: 2008-04-01
Release version: 0.6.0
------------------------------------------------------------------------
-2
View File
@@ -439,8 +439,6 @@ water_map.h
# Misc
misc/array.hpp
misc/autocopyptr.hpp
misc/autoptr.hpp
misc/binaryheap.hpp
misc/blob.hpp
misc/countedptr.hpp
+8 -5
View File
@@ -190,15 +190,17 @@ void DrawAircraftEngine(int x, int y, EngineID engine, SpriteID pal)
{
const AircraftVehicleInfo* avi = AircraftVehInfo(engine);
int spritenum = avi->image_index;
SpriteID sprite = (6 + _aircraft_sprite[spritenum]);
SpriteID sprite = 0;
if (is_custom_sprite(spritenum)) {
sprite = GetCustomVehicleIcon(engine, DIR_W);
if (sprite == 0) {
spritenum = _orig_aircraft_vehicle_info[engine - AIRCRAFT_ENGINES_INDEX].image_index;
sprite = (6 + _aircraft_sprite[spritenum]);
}
}
if (sprite == 0) {
sprite = 6 + _aircraft_sprite[spritenum];
}
DrawSprite(sprite, pal, x, y);
@@ -527,7 +529,7 @@ CommandCost CmdStartStopAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32
/* Check if this aircraft can be started/stopped. The callback will fail or
* return 0xFF if it can. */
uint16 callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v);
if (callback != CALLBACK_FAILED && callback != 0xFF) {
if (callback != CALLBACK_FAILED && GB(callback, 0, 8) != 0xFF) {
StringID error = GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + callback);
return_cmd_error(error);
}
@@ -2135,7 +2137,6 @@ static bool AirportFindFreeHelipad(Vehicle *v, const AirportFTAClass *apc)
static void AircraftEventHandler(Vehicle *v, int loop)
{
v->tick_counter++;
v->current_order_time++;
if (v->vehstatus & VS_CRASHED) {
HandleCrashedAircraft(v);
@@ -2149,7 +2150,7 @@ static void AircraftEventHandler(Vehicle *v, int loop)
if (v->breakdown_ctr <= 2) {
HandleBrokenAircraft(v);
} else {
v->breakdown_ctr--;
if (v->current_order.type != OT_LOADING) v->breakdown_ctr--;
}
}
@@ -2172,6 +2173,8 @@ void Aircraft::Tick()
AgeAircraftCargo(this);
this->current_order_time++;
for (uint i = 0; i != 2; i++) {
AircraftEventHandler(this, i);
if (this->type != VEH_AIRCRAFT) // In case it was deleted
+3 -3
View File
@@ -26,7 +26,7 @@ uint CountArticulatedParts(EngineID engine_type, bool purchase_window)
uint i;
for (i = 1; i < MAX_UVALUE(EngineID); i++) {
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine_type, v);
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
if (callback == CALLBACK_FAILED || GB(callback, 0, 8) == 0xFF) break;
}
delete v;
@@ -53,7 +53,7 @@ uint16 *GetCapacityOfArticulatedParts(EngineID engine, VehicleType type)
for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine, NULL);
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
if (callback == CALLBACK_FAILED || GB(callback, 0, 8) == 0xFF) break;
EngineID artic_engine = GetFirstEngineOfType(type) + GB(callback, 0, 7);
@@ -79,7 +79,7 @@ void AddArticulatedParts(Vehicle **vl, VehicleType type)
for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, v->engine_type, v);
if (callback == CALLBACK_FAILED || callback == 0xFF) return;
if (callback == CALLBACK_FAILED || GB(callback, 0, 8) == 0xFF) return;
/* Attempt to use pre-allocated vehicles until they run out. This can happen
* if the callback returns different values depending on the cargo type. */
+1 -1
View File
@@ -177,7 +177,7 @@ static inline int32 ClampToI32(const int64 a)
*/
static inline uint16 ClampToU16(const uint64 a)
{
return min(a, 0xFFFF);
return (uint16)(a <= 0xFFFFU ? a : 0xFFFFU);
}
/**
+15 -1
View File
@@ -45,6 +45,7 @@
#include "rail_map.h"
#include "signal_func.h"
#include "gfx_func.h"
#include "autoreplace_func.h"
#include "table/strings.h"
#include "table/sprites.h"
@@ -455,6 +456,19 @@ void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player)
UpdateSignalsInBuffer();
}
/* In all cases clear replace engine rules.
* Even if it was copied, it could interfere with new owner's rules */
RemoveAllEngineReplacementForPlayer(GetPlayer(old_player));
if (new_player == PLAYER_SPECTATOR) {
RemoveAllGroupsForPlayer(old_player);
} else {
Group *g;
FOR_ALL_GROUPS(g) {
if (g->owner == old_player) g->owner = new_player;
}
}
/* Change color of existing windows */
if (new_player != PLAYER_SPECTATOR) ChangeWindowOwner(old_player, new_player);
@@ -1597,7 +1611,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
byte load_amount = EngInfo(v->engine_type)->load_amount;
if (_patches.gradual_loading && HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_LOAD_AMOUNT)) {
uint16 cb_load_amount = GetVehicleCallback(CBID_VEHICLE_LOAD_AMOUNT, 0, 0, v->engine_type, v);
if (cb_load_amount != CALLBACK_FAILED && cb_load_amount != 0) load_amount = cb_load_amount & 0xFF;
if (cb_load_amount != CALLBACK_FAILED && GB(cb_load_amount, 0, 8) != 0) load_amount = GB(cb_load_amount, 0, 8);
}
GoodsEntry *ge = &st->goods[v->cargo_type];
+2 -7
View File
@@ -16,7 +16,6 @@
#include "aircraft.h"
#include "newgrf_cargo.h"
#include "group.h"
#include "misc/autoptr.hpp"
#include "strings_func.h"
#include "gfx_func.h"
#include "functions.h"
@@ -516,19 +515,15 @@ CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, Engi
return CommandCost();
}
er = new EngineRenew(old_engine, new_engine);
if (er == NULL) return CMD_ERROR;
AutoPtrT<EngineRenew> er_auto_delete = er;
if (!EngineRenew::CanAllocateItem()) return CMD_ERROR;
if (flags & DC_EXEC) {
er = new EngineRenew(old_engine, new_engine);
er->group_id = group;
/* Insert before the first element */
er->next = (EngineRenew *)(*erl);
*erl = (EngineRenewList)er;
er_auto_delete.Detach();
}
return CommandCost();
+2 -9
View File
@@ -12,7 +12,6 @@
#include "train.h"
#include "aircraft.h"
#include "vehicle_gui.h"
#include "misc/autoptr.hpp"
#include "strings_func.h"
#include "functions.h"
#include "window_func.h"
@@ -92,20 +91,14 @@ CommandCost CmdCreateGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
VehicleType vt = (VehicleType)p1;
if (!IsPlayerBuildableVehicleType(vt)) return CMD_ERROR;
AutoPtrT<Group> g_auto_delete;
Group *g = new Group(_current_player);
if (g == NULL) return CMD_ERROR;
g_auto_delete = g;
if (!Group::CanAllocateItem()) return CMD_ERROR;
if (flags & DC_EXEC) {
Group *g = new Group(_current_player);
g->replace_protection = false;
g->vehicle_type = vt;
InvalidateWindowData(GetWCForVT(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
g_auto_delete.Detach();
}
return CommandCost();
+10 -8
View File
@@ -25,7 +25,6 @@
#include "newgrf_industries.h"
#include "newgrf_industrytiles.h"
#include "newgrf_callbacks.h"
#include "misc/autoptr.hpp"
#include "autoslope.h"
#include "transparency.h"
#include "water.h"
@@ -1025,6 +1024,9 @@ static void ProduceIndustryGoods(Industry *i)
if (cut) ChopLumberMillTrees(i);
}
TriggerIndustry(i, INDUSTRY_TRIGGER_INDUSTRY_TICK);
StartStopIndustryTileAnimation(i, IAT_INDUSTRY_TICK);
}
}
@@ -1046,8 +1048,6 @@ void OnTick_Industry()
if (_game_mode == GM_EDITOR) return;
FOR_ALL_INDUSTRIES(i) {
TriggerIndustry(i, INDUSTRY_TRIGGER_INDUSTRY_TICK);
StartStopIndustryTileAnimation(i, IAT_INDUSTRY_TICK);
ProduceIndustryGoods(i);
}
}
@@ -1583,17 +1583,19 @@ static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint
if (!CheckIfIndustryIsAllowed(tile, type, t)) return NULL;
if (!CheckSuitableIndustryPos(tile)) return NULL;
Industry *i = new Industry(tile);
if (i == NULL) return NULL;
AutoPtrT<Industry> i_auto_delete = i;
if (!Industry::CanAllocateItem()) return NULL;
if (flags & DC_EXEC) {
Industry *i = new Industry(tile);
if (!custom_shape_check) CheckIfCanLevelIndustryPlatform(tile, DC_EXEC, it, type);
DoCreateNewIndustry(i, tile, type, it, itspec_index, t, OWNER_NONE);
i_auto_delete.Detach();
return i;
}
return i;
/* We need to return a non-NULL pointer to tell we have created an industry.
* However, we haven't created a real one (no DC_EXEC), so return a fake one. */
return GetIndustry(0);
}
/** Build/Fund an industry
+3 -4
View File
@@ -1165,7 +1165,7 @@ STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Termina
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Ativar economia regular (alterações menores)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar ações de outras empresas
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ao arrastar colocar sinais a cada: {ORANGE}{STRING} quadrado(s)
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Automaticamente constroi semáforos anteriores: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Construir sinaleiros até: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Ativar interface de sinais: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}O layout de cidade "sem mais estradas" não é válido no editor
@@ -1717,6 +1717,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}O edifício deve ser demolido primeiro
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Cidade)
STR_2006_POPULATION :{BLACK}População: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Renomear Cidade
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Impossível renomear cidade...
@@ -1808,8 +1809,6 @@ STR_205C_PIGGY_BANK :Mealheiro
STR_INDUSTRY :{INDUSTRY}
STR_TOWN :{TOWN}
STR_INDUSTRY_FORMAT :{1:STRING} de {0:TOWN}
STR_INDUSTRY_FORMAT.f :{G=f}{1:STRING} de {0:TOWN}
STR_INDUSTRY_FORMAT.m :{G=m}{1:STRING} de {0:TOWN}
STR_STATION :{STATION}
##id 0x2800
@@ -3475,7 +3474,7 @@ STR_FACE_TIE_EARRING_TIP :{BLACK}Alterar
############ signal GUI
STR_SIGNAL_SELECTION :{WHITE}Seleção de Sinais
STR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Impossível converter sinais aqui...
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TIP :{BLACK}Sinais padrão (semáforos){}Sinais são necessários para manter trens de colidirem nas malhas ferroviárias com mais de um trem.
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TIP :{BLACK}Sinais padrão (semáforos){}Sinais são necessários para impedir trens de colidirem nas malhas ferroviárias com mais de um trem.
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TIP :{BLACK}Sinal de Entrada (semáforo){}Verde contanto que haja um ou mais sinais de saída verdes na atual seção dos trilhos. Do contrário, fica vermelho.
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TIP :{BLACK}Sinal de saída (semáforo){}Funciona como um sinal normal, porém é necessário para o funcionamento correto do sistema de sinais combo ou de entrada.
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TIP :{BLACK}Sinal combo (semáforo){}O sinal combo funciona tanto como um sinal de entrada quanto de saída. Permite construir várias ramificações.
+1
View File
@@ -1717,6 +1717,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Сградата първо трябва да бъде разрушена
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Град)
STR_2006_POPULATION :{BLACK}Население: {ORANGE}{COMMA}{BLACK} Жилища: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Преименуване на град
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Градът не може да бъде преименуван
+1
View File
@@ -1715,6 +1715,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}L'edifici s'ha d'enderrocar primer
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Ciutat)
STR_2006_POPULATION :{BLACK}Població: {ORANGE}{COMMA}{BLACK} Cases: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Reanomena Població
STR_2008_CAN_T_RENAME_TOWN :{WHITE}No es pot reanomenar la població...
+43 -42
View File
@@ -231,7 +231,7 @@ STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
STR_00CE_4 :{BLACK}4
STR_00CF_5 :{BLACK}5
STR_00D0_NOTHING :Nic
STR_00D0_NOTHING :nic
STR_00D1_DARK_BLUE :Tmavomodrá
STR_00D2_PALE_GREEN :Světlezelená
STR_00D3_PINK :Růžová
@@ -976,7 +976,7 @@ STR_CURR_ISK :Islandská koru
STR_CURR_ITL :Italská lira (ITL)
STR_CURR_NLG :Holandský gulden (NLG)
STR_CURR_NOK :Norská koruna (NOK)
STR_CURR_PLN :Polský złotý (PLN)
STR_CURR_PLN :Polský zlotý (PLN)
STR_CURR_ROL :Rumunský lei (ROL)
STR_CURR_RUR :Ruský rubl (RUR)
STR_CURR_SIT :Slovinský tolar (SIT)
@@ -1019,8 +1019,8 @@ STR_MONTH_OCT :Říjen
STR_MONTH_NOV :Listopad
STR_MONTH_DEC :Prosinec
STR_HEADING_FOR_STATION :{LTBLUE}Mířím do {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Mířím do {STATION}, {VELOCITY}
STR_HEADING_FOR_STATION :{LTBLUE}Míří do {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Míří do {STATION}, {VELOCITY}
STR_NO_ORDERS :{LTBLUE}Bez příkazů
STR_NO_ORDERS_VEL :{LTBLUE}Bez příkazů, {VELOCITY}
@@ -1294,8 +1294,8 @@ STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Změnit
STR_CHEAT_CHANGE_DATE :{LTBLUE}Změnit datum: {ORANGE}{DATE_SHORT}
STR_CHEAT_SETUP_PROD :{LTBLUE}Povolit změnu produkce průmyslu: {ORANGE}{STRING}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Mířím do {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Mířím do {WAYPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Míří do {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Míří do {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Jet přes {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Jet bez zastávky přes {WAYPOINT}
@@ -1480,35 +1480,35 @@ STR_NETWORK_LOAD_GAME :{BLACK}Nahrát
STR_NETWORK_LOAD_GAME_TIP :{BLACK}Pokračovat ve dříve uložené hře pro více hráčů (ujisti se, že se připojuješ na správného hráče)
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Jakýkoli
STR_NETWORK_LANG_ENGLISH :Angličtina
STR_NETWORK_LANG_GERMAN :Němčina
STR_NETWORK_LANG_FRENCH :Francouzština
STR_NETWORK_LANG_BRAZILIAN :Brazilská portugalština
STR_NETWORK_LANG_BULGARIAN :Bulharština
STR_NETWORK_LANG_CHINESE :Čínština
STR_NETWORK_LANG_CZECH :Čeština
STR_NETWORK_LANG_DANISH :Dánština
STR_NETWORK_LANG_DUTCH :Nizozemština
STR_NETWORK_LANG_ESPERANTO :Esperanto
STR_NETWORK_LANG_FINNISH :Finština
STR_NETWORK_LANG_HUNGARIAN :Maďarština
STR_NETWORK_LANG_ICELANDIC :Islandština
STR_NETWORK_LANG_ITALIAN :Italština
STR_NETWORK_LANG_JAPANESE :Japonština
STR_NETWORK_LANG_KOREAN :Korejština
STR_NETWORK_LANG_LITHUANIAN :Litevština
STR_NETWORK_LANG_NORWEGIAN :Norština
STR_NETWORK_LANG_POLISH :Polština
STR_NETWORK_LANG_PORTUGUESE :Portugalština
STR_NETWORK_LANG_ROMANIAN :Rumunština
STR_NETWORK_LANG_RUSSIAN :Ruština
STR_NETWORK_LANG_SLOVAK :Slovenština
STR_NETWORK_LANG_SLOVENIAN :Slovinština
STR_NETWORK_LANG_SPANISH :Španělština
STR_NETWORK_LANG_SWEDISH :Švédština
STR_NETWORK_LANG_TURKISH :Turečtina
STR_NETWORK_LANG_UKRAINIAN :Ukrajinština
STR_NETWORK_LANG_ANY :jakýkoli
STR_NETWORK_LANG_ENGLISH :angličtina
STR_NETWORK_LANG_GERMAN :němčina
STR_NETWORK_LANG_FRENCH :francouzština
STR_NETWORK_LANG_BRAZILIAN :brazilská portugalština
STR_NETWORK_LANG_BULGARIAN :bulharština
STR_NETWORK_LANG_CHINESE :čínština
STR_NETWORK_LANG_CZECH :čeština
STR_NETWORK_LANG_DANISH :dánština
STR_NETWORK_LANG_DUTCH :nizozemština
STR_NETWORK_LANG_ESPERANTO :esperanto
STR_NETWORK_LANG_FINNISH :finština
STR_NETWORK_LANG_HUNGARIAN :maďarština
STR_NETWORK_LANG_ICELANDIC :islandština
STR_NETWORK_LANG_ITALIAN :italština
STR_NETWORK_LANG_JAPANESE :japonština
STR_NETWORK_LANG_KOREAN :korejština
STR_NETWORK_LANG_LITHUANIAN :litevština
STR_NETWORK_LANG_NORWEGIAN :norština
STR_NETWORK_LANG_POLISH :polština
STR_NETWORK_LANG_PORTUGUESE :portugalština
STR_NETWORK_LANG_ROMANIAN :rumunština
STR_NETWORK_LANG_RUSSIAN :ruština
STR_NETWORK_LANG_SLOVAK :slovenština
STR_NETWORK_LANG_SLOVENIAN :slovinština
STR_NETWORK_LANG_SPANISH :španělština
STR_NETWORK_LANG_SWEDISH :švédština
STR_NETWORK_LANG_TURKISH :turečtina
STR_NETWORK_LANG_UKRAINIAN :ukrajinština
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Vstupní místnost do multiplayerové hry
@@ -1748,7 +1748,7 @@ STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Postavit
STR_BUILD_TRAMWAY_BRIDGE :{BLACK}Postavit tramvajový most
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Postavit silniční tunel
STR_BUILD_TRAMWAY_TUNNEL :{BLACK}Postavit tramvajový tunel
STR_TOGGLE_ONE_WAY_ROAD :{BLACK}Povolit / zakázat jednosměrné silnice
STR_TOGGLE_ONE_WAY_ROAD :{BLACK}Stavět / nestavět jednosměrné silnice
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Přepnout stavba / odstranění silnice
STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Přepínání mezi výstavbou a bouráním tramvajové tratě
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Výběr orientace garáže
@@ -1773,6 +1773,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Budova musí být nejprve zničena
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (velkoměsto)
STR_2006_POPULATION :{BLACK}Populace: {ORANGE}{COMMA}{BLACK} Domů: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Přejmenovat město
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Nemohu přejmenovat město:
@@ -2323,8 +2324,8 @@ STR_AIRCRAFT :{WHITE}{COMMA}
STR_SHIPS :{WHITE}{COMMA} lo{P ď dě dí}
STR_7042_NONE :{WHITE}Nic
STR_7043_FACE_SELECTION :{WHITE}Volba tváře
STR_7044_MALE :{BLACK}Mužské
STR_7045_FEMALE :{BLACK}Ženské
STR_7044_MALE :{BLACK}Mužská
STR_7045_FEMALE :{BLACK}Ženská
STR_7046_NEW_FACE :{BLACK}Nový obličej
STR_7047_CANCEL_NEW_FACE_SELECTION :{BLACK}Zrušit volbu nového obličeje
STR_7048_ACCEPT_NEW_FACE_SELECTION :{BLACK}Potvrdit výběr obličeje
@@ -2894,7 +2895,7 @@ STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Nemohu k
STR_900C_DETAILS :{WHITE}{VEHICLE} (Detaily)
STR_900D_AGE_RUNNING_COST_YR :{BLACK}Stáří: {LTBLUE}{STRING}{BLACK} Cena provozu: {LTBLUE}{CURRENCY} ročně
STR_900E_MAX_SPEED :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY}
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Příjem tento rok: {LTBLUE}{CURRENCY} (minulý rok): {CURRENCY})
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Příjem tento rok: {LTBLUE}{CURRENCY} (minulý rok: {CURRENCY})
STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Spolehlivost: {LTBLUE}{COMMA}% {BLACK}Poruch od posledního servisu: {LTBLUE}{COMMA}
STR_9011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Koupen: {LTBLUE}{NUM}{BLACK} Cena: {LTBLUE}{CURRENCY}
STR_9012_CAPACITY :{BLACK}Kapacita: {LTBLUE}{CARGO}
@@ -2902,8 +2903,8 @@ STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}... mus
STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Nemohu prodat silniční vozidlo...
STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nemohu zastavit/rozjet silniční vozidlo...
STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Silniční vozidlo {COMMA} čeká v garáži
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Mířím do garáže {TOWN}
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Mířím do garáže {TOWN}, {VELOCITY}
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Míří do garáže {TOWN}
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Míří do garáže {TOWN}, {VELOCITY}
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Údržba v silničním depu {TOWN}
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Údržba v silničním depu {TOWN}, {VELOCITY}
STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Nemohu poslat silniční vozidlo do garáže...
@@ -2978,7 +2979,7 @@ STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Nelze ro
STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Nelze poslat loď do depa...
STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nemohu najít místní depo
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Jedu do depa {TOWN}
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Mířím do depa {TOWN}, {VELOCITY}
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Míří do depa {TOWN}, {VELOCITY}
STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Údržba v lodním depu {TOWN}
STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Údržba v lodním depu {TOWN}, {VELOCITY}
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Loď {COMMA} čeká v depu
+1
View File
@@ -1715,6 +1715,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Det er nødvendigt at nedrive bygningen først
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (by)
STR_2006_POPULATION :{BLACK}Indbyggere: {ORANGE}{COMMA}{BLACK} Huse: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Omdøb byen
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Kan ikke omdøbe byen...
+1
View File
@@ -1715,6 +1715,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Gebouw moet eerst gesloopt worden
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Stad)
STR_2006_POPULATION :{BLACK}Bevolking: {ORANGE}{COMMA}{BLACK} Huizen: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Hernoem stad
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Kan stad niet hernoemen...
+3 -1
View File
@@ -1064,7 +1064,7 @@ STR_CONFIG_PATCHES_ORDER_REVIEW_ON :of all vehicles
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Warn if a train's income is negative: {ORANGE}{STRING1}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Vehicles never expire: {ORANGE}{STRING1}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenew vehicle when it gets old
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenew when vehice is {ORANGE}{STRING1}{LTBLUE} months before/after max age
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenew when vehicle is {ORANGE}{STRING1}{LTBLUE} months before/after max age
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autorenew minimum needed money for renew: {ORANGE}{STRING1}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duration of error message: {ORANGE}{STRING1}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Show town population in the town name label: {ORANGE}{STRING1}
@@ -3129,6 +3129,8 @@ STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Missing
STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Missing GRF file(s)
STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Unpausing can crash OpenTTD. Do not file bug reports for subsequent crashes.{}Do you really want to unpause?
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Game was saved in version without tram support. All trams have been removed.
STR_CURRENCY_WINDOW :{WHITE}Custom currency
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Exchange rate: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separator:
+3 -3
View File
@@ -770,6 +770,7 @@ STR_02C4_GAME_OPTIONS :Ludaj opcioj
STR_02C6_DIFFICULTY_SETTINGS :Malfacilec-agordoj
STR_MENU_CONFIG_PATCHES :Agordu flikojn
STR_NEWGRF_SETTINGS :Agordoj de NewGRF
STR_TRANSPARENCY_OPTIONS :Ebloj por travidebleco
STR_GAMEOPTMENU_0A :
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Urbonomoj montriĝas
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Staciaj nomoj montriĝas
@@ -797,7 +798,6 @@ STR_02DD_SUBSIDIES :Subvencioj
STR_02DE_MAP_OF_WORLD :Mondomapo
STR_EXTRA_VIEW_PORT :Plia videjo
STR_SIGN_LIST :Afiŝa listo
STR_TRANSPARENCY_OPTIONS :Ebloj por travidebleco
STR_02DF_TOWN_DIRECTORY :Urbaro
STR_TOWN_POPULATION :{BLACK}Monda enloĝantaro: {COMMA}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Videjo {COMMA}
@@ -1343,12 +1343,12 @@ STR_NETWORK_SET_PASSWORD :{BLACK}Agordu p
STR_NETWORK_PASSWORD_TIP :{BLACK}Protektu vian ludon per pasvorto por ne publike atingebligi ĝin
STR_NETWORK_SELECT_MAP :{BLACK}Elektu mapon:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Kiun mapon vi volas ludi?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Klienta maksimumo:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Elektu klientan maksimumon. Ne ĉiuj lokoj estas plenigendaj
STR_NETWORK_LAN :Loka reto
STR_NETWORK_INTERNET :Interreto
STR_NETWORK_LAN_INTERNET :Loka reto / Interreto
STR_NETWORK_INTERNET_ADVERTISE :Interreto (reklamu)
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Klienta maksimumo:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Elektu klientan maksimumon. Ne ĉiuj lokoj estas plenigendaj
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Kompania maksimumo:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limu la servilon al certa kvanto da kompanioj
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Spektanta maksimumo:
+34 -33
View File
@@ -369,7 +369,7 @@ STR_012C_MESSAGE :{WHITE}Teade
STR_012D :{WHITE}{STRING}
STR_012E_CANCEL :{BLACK}Loobu
STR_012F_OK :{BLACK}OK
STR_0130_RENAME :{BLACK}Nime muutmine
STR_0130_RENAME :{BLACK}Nimevahetus
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Liiga palju määratletud nimesid
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Valitud nimi on juba kasutusel
@@ -442,7 +442,7 @@ STR_UNITS_FORCE_SI :{COMMA} kN
############ range for menu starts
STR_0154_OPERATING_PROFIT_GRAPH :Opereerimiskasumi graafik
STR_0155_INCOME_GRAPH :Tulugraafik
STR_0156_DELIVERED_CARGO_GRAPH :Kohaleviidud kauba graafik
STR_0156_DELIVERED_CARGO_GRAPH :Kaubavoo graafik
STR_0157_PERFORMANCE_HISTORY_GRAPH :Tegevustulemuste graafik
STR_0158_COMPANY_VALUE_GRAPH :Firmaväärtuse graafik
STR_0159_CARGO_PAYMENT_RATES :Veotasude määrad
@@ -549,7 +549,7 @@ STR_0188 :{BLACK}{SMALLUP
STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Hooldusperioodi ei saa muuta...
STR_018B_CLOSE_WINDOW :{BLACK}Sulge aken
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Akna pealkiri - lohista akna liigutamiseks
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Akna pealkiri. Liigutamiseks lohista seda hiirega.
STR_STICKY_BUTTON :{BLACK}Keela selle akna sulgemine 'Sulge kõik aknad' nupu klõpsamisel
STR_RESIZE_BUTTON :{BLACK}Kliki ja venita, et akna suurust muuta
STR_SAVELOAD_HOME_BUTTON :{BLACK}Vajuta siia, et minna praegusesse vaikimisi valitud salvestamise/laadimise kausta
@@ -817,7 +817,7 @@ STR_0285_CAN_T_BUILD_HERE :{WHITE}{STRING}
STR_0286_MUST_BUILD_TOWN_FIRST :{WHITE}...enne pead linna ehitama
STR_0287_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...iga linna kohta lubatud ainult üks
STR_0288_PLANT_TREES :{BLACK}Istuta puid
STR_0289_PLACE_SIGN :{BLACK}Paigalda silt
STR_0289_PLACE_SIGN :{BLACK}Sildi paigaldamine
STR_028A_RANDOM_TREES :{BLACK}Suvalised puud
STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}Istutab puid suvaliselt üle kogu maa
STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Loo maastikule kivised alad
@@ -952,10 +952,10 @@ STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Rahasta
############ range for menu starts
STR_INDUSTRY_DIR :Tööstuste nimistu
STR_0313_FUND_NEW_INDUSTRY :Rahasta uue tööstuse ehitamist
STR_0313_FUND_NEW_INDUSTRY :Uue tööstuse rahastamine
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Rahasta uue tööstuse ehitamist
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Uue tööstuse rahastamine
STR_JUST_STRING :{STRING}
STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...saab ehitada ainult linnadesse
@@ -1401,7 +1401,7 @@ STR_STATION_DRAG_DROP :{BLACK}Ehita ja
STR_SELECT_STATION_CLASS_TIP :{BLACK}Vali jaama klass mida tahad näidata
STR_SELECT_STATION_TYPE_TIP :{BLACK}Vali ehitatava jaama tüüp
STR_FAST_FORWARD :{BLACK}Mängu aja kiiresti edasi kerimine
STR_FAST_FORWARD :{BLACK}Mängu aja kiirendamine
STR_MESSAGE_HISTORY :{WHITE}Sõnumite ajalugu
STR_MESSAGE_HISTORY_TIP :{BLACK}Nimekiri hiljutistest uudistest
STR_MESSAGES_DISABLE_ALL :{BLACK}Lülita kõik välja
@@ -1815,9 +1815,10 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Ehitis tuleb eelnevalt hävitada
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Linn)
STR_2006_POPULATION :{BLACK}Rahvaarv: {ORANGE}{COMMA}{BLACK} Ehitisi: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Linnanime muutmine
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Linnanime ei saa muuta...
STR_2007_RENAME_TOWN :Linna nime vahetamine
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Linna nime ei saa vahetada...
STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} kohalik omavalitsus keeldub seda lubamast
STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Linnanimed - vajuta linnanimele, et viia vaade linnale
STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Vaate viimine linnale
@@ -1911,7 +1912,7 @@ STR_STATION :{STATION}
##id 0x2800
STR_LANDSCAPING :Maapinna kujundamine
STR_2800_PLANT_TREES :Puude istutamine
STR_2801_PLACE_SIGN :Paigalda silt
STR_2801_PLACE_SIGN :Sildi paigaldamine
STR_2802_TREES :{WHITE}Puud
STR_2803_TREE_ALREADY_HERE :{WHITE}...siin on juba puu olemas
STR_2804_SITE_UNSUITABLE :{WHITE}...ebasobiv koht
@@ -1945,8 +1946,8 @@ STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Raudteej
STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Liiga lähedal teisele lennuväljale
STR_300E_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Lennuväli tuleb eelnevalt lammutada
STR_3030_RENAME_STATION_LOADING :Jaama nime muutmine
STR_3031_CAN_T_RENAME_STATION :{WHITE}Jaama nime ei saa muuta...
STR_3030_RENAME_STATION_LOADING :Jaama nime vahetamine
STR_3031_CAN_T_RENAME_STATION :{WHITE}Jaama nime ei saa vahetada...
STR_3032_RATINGS :{BLACK}Hinnangud
STR_3033_ACCEPTS :{BLACK}Võtab vastu
STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}Kohaliku veoteenuse hinnang:
@@ -2004,7 +2005,7 @@ STR_3062_BUS_STATION :Bussijaam
STR_3063_SHIP_DOCK :Laevasadam
STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}Lülita sisse jaama mõjupiirkonna näitamine
STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}Lülita välja jaama mõjupiirkonna näitamine
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Näita mõjupiirkonda
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Mõjupiirkonna näitamine
STR_3068_DOCK :{WHITE}Sadam
STR_3069_BUOY :Poi
STR_306A_BUOY_IN_THE_WAY :{WHITE}...poi on ees
@@ -2797,7 +2798,7 @@ STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}See palj
STR_CLONE_TRAIN :{BLACK}Klooni rong
STR_CLONE_TRAIN_INFO :{BLACK}See ehitab koopia rongist koos kõikide vagunitega. CTRL-klikk jagab sihtpunkte
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}See ehitab koopia rongist koos kõikide vagunitega. Vajuta sellele nuppule, ning seejärel rongile depoo sees või väljas. CTRL-klikk jagab sihtpunkte
STR_8820_RENAME :{BLACK}Nime muutmine
STR_8820_RENAME :{BLACK}Nimevahetus
STR_8823_SKIP :{BLACK}Jäta vahele
STR_8824_DELETE :{BLACK}Kustuta
STR_8825_NON_STOP :{BLACK}Peatusteta
@@ -2844,7 +2845,7 @@ STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Tiri ron
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Keskenda põhivaade rongidepoo kohale
STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Nimekiri raudteesõidukitest - andmete saamiseks klõpsa raudteesõidukile
STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Ehita valitud raudteesõiduk
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Muuda raudteesõiduki tüübinime
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Vaheta raudteesõiduki tüübinime
STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Praegune rongi tegevus - vajuta siia et peatada/käivitada rong
STR_8847_SHOW_TRAIN_S_ORDERS :{BLACK}Näita rongi sihtpunkte
STR_8848_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Vaate viimine rongi asukohale
@@ -2858,7 +2859,7 @@ STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Näita d
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Näita täpsemat infot rongivagunite kohta
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Näita iga rongivaguni kandevõimet
STR_SHOW_TOTAL_CARGO :{BLACK}Näita kogu rongi mahtu, jagatud kauba tüübi järgi
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Sihtpunktide nimekiri - vajuta käsul et see valida. CTRL + klik kerib jaama juurde
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Sihtpunktide nimekiri. Valimiseks klõpsa sihtpunktil. CTRL + klikk keskendab vaateakna jaama peale.
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Jäta praegune järjestus vahele ja alusta järgmisega. CTRL + klõps jätab vahele kuni valitud järjestuseni
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Kustuta valitud käsk
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Muuda valitud käsk peatuseta sihtpunktiks
@@ -2886,8 +2887,8 @@ STR_8866_CAN_T_NAME_TRAIN :{WHITE}Ei saa n
STR_8867_NAME_TRAIN :{BLACK}Rongi nimi
STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}RONGIKOKKUPÕRGE!{}{COMMA} surid tules peale kokkusõitmist
STR_8869_CAN_T_REVERSE_DIRECTION :{WHITE}Ei saa rongi ümber pöörata.
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Muuda rongivaguni tüübinime
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Raudteesõiduki tüübinime ei saa muuta...
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Vaheta rongivaguni tüübinime
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Raudteesõiduki tüübinime ei saa vahetada...
STR_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Käsi valitud sihtpunktis sõiduki laadung kõrvaldada
STR_TRANSFER :{BLACK}Laadi ümber
STR_CLEAR_TIME :{BLACK}Tühista aeg
@@ -2973,10 +2974,10 @@ STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Mootorsõiduki kokkupõrge rongiga!{}{COMMA} inimest suri õnnetuses
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Transpordivahendit ei saa ümber pöörata...
STR_ONLY_TURN_SINGLE_UNIT :{WHITE}Mitmest osast koosnevaid veovahendeid ei saa ümber pöörata
STR_9034_RENAME :{BLACK}Nime muutmine
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Muuda mootorsõiduki tüübinime
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Muuda mootorsõiduki tüübinime
STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Mootorsõiduki tüübinime ei saa muuta...
STR_9034_RENAME :{BLACK}Nimevahetus
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Vaheta mootorsõiduki tüübinime
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Vaheta mootorsõiduki tüübinime
STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Mootorsõiduki tüübinime ei saa vahetada...
STR_GO_TO_ROADVEH_DEPOT :Mine linna {TOWN} garaaži
STR_SERVICE_AT_ROADVEH_DEPOT :Hoolda linna {TOWN} mootorsõidukidepoos
@@ -3041,10 +3042,10 @@ STR_9832_CAN_T_NAME_SHIP :{WHITE}Ei saa l
STR_9833_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} terminali saabus esimene laev!
STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}Raja teemärgisena kasutatav poi
STR_9835_CAN_T_POSITION_BUOY_HERE :{WHITE}Poid ei saa siia asetada...
STR_9836_RENAME :{BLACK}Nime muutmine
STR_9837_RENAME_SHIP_TYPE :{BLACK}Nimeta laeva tüüp ümber
STR_9838_RENAME_SHIP_TYPE :{WHITE}Nimeta laeva tüüp ümber
STR_9839_CAN_T_RENAME_SHIP_TYPE :{WHITE}Ei saa laeva tüüpi ümber nimetada...
STR_9836_RENAME :{BLACK}Nimevahetus
STR_9837_RENAME_SHIP_TYPE :{BLACK}Laeva tüübinime vahetamine
STR_9838_RENAME_SHIP_TYPE :{WHITE}Laeva tüübinime vahetamine
STR_9839_CAN_T_RENAME_SHIP_TYPE :{WHITE}Laeva tüübinime ei saa vahetada...
STR_983A_REFIT_CARGO_SHIP_TO_CARRY :{BLACK}Seadista laev ümber teise kaubatüübi jaoks
STR_983B_REFIT :{WHITE}{VEHICLE} (Seadista ümber)
STR_983C_REFIT_SHIP :{BLACK}Seadista laev ümber
@@ -3114,10 +3115,10 @@ STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Lennuõnnetus!{}{COMMA} surid tules {STATION}s
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Lennuõnnetus!{}Lennukil lõppes kütus, {COMMA} surid tules!
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Nime muutmine
STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Nimeta lennuki tüüp ümber
STR_A039_RENAME_AIRCRAFT_TYPE :{WHITE}Nimeta lennuki tüüp ümber
STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Ei saa lennuki tüüpi ümber nimetada...
STR_A037_RENAME :{BLACK}Nimevahetus
STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Lennuki tüübinime vahetamine
STR_A039_RENAME_AIRCRAFT_TYPE :{WHITE}Lennuki tüübinime vahetamine
STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Lennuki tüübinime ei saa vahetada...
STR_A03B_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Seadista lennuk teistsuguse kauba kandmiseks ümber
STR_A03C_REFIT :{WHITE}{VEHICLE} (Seadista ümber)
STR_A03D_REFIT_AIRCRAFT :{BLACK}Seadista lennuk ümber
@@ -3484,12 +3485,12 @@ STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP}
STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Mootorsõiduk{P "" id}
STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Laev{P "" ad}
STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Lennuk{P "" id}
STR_GROUP_RENAME_CAPTION :{BLACK}Muuda grupi nime
STR_GROUP_RENAME_CAPTION :{BLACK}Grupi nime vahetamine
STR_GROUP_REPLACE_CAPTION :{WHITE}Vaheta kõik grupi "{GROUP}" sõidukid
STR_GROUP_CAN_T_CREATE :{WHITE}Ei saa üksust luua...
STR_GROUP_CAN_T_DELETE :{WHITE}Ei saa seda üksust eemaldada...
STR_GROUP_CAN_T_RENAME :{WHITE}Ei saa seda üksust ümber nimetada...
STR_GROUP_CAN_T_RENAME :{WHITE}Grupi nime ei saa vahetada...
STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Ei saa kõiki sõidukeid sellest grupist eemaldada...
STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Ei saa sõidukit siia üksusesse lisada...
STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ei saa jagatud sõidukeid siia üksusesse lisada...
@@ -3497,7 +3498,7 @@ STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ei saa j
STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Grupid - Klõpsa grupil et kõiki seal olevaid sõidukeid järjestada
STR_GROUP_CREATE_TIP :{BLACK}Klõpsa grupi loomiseks
STR_GROUP_DELETE_TIP :{BLACK}Eemalda valitud üksus
STR_GROUP_RENAME_TIP :{BLACK}Nimeta valitud üksus ümber
STR_GROUP_RENAME_TIP :{BLACK}Valitud grupi nime vahetamine
STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Klõpsa, et seda üksust üldise iseväljavahetuse eest kaitsta
STR_COMPANY_NAME :{COMPANY}
+3 -2
View File
@@ -1240,8 +1240,8 @@ STR_CHEAT_SETUP_PROD :{LTBLUE}Permett
STR_HEADING_FOR_WAYPOINT :{LTBLUE}En route pour {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}En route pour {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Passant par {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Aller sans-arrêt via {WAYPOINT}
STR_GO_TO_WAYPOINT :Passer par {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Passer sans arrêt par {WAYPOINT}
STR_WAYPOINTNAME_CITY :Point de contrôle {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Point de contrôle {TOWN} #{COMMA}
@@ -1716,6 +1716,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}L'édifice doit d'abord être démolit
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Métropole)
STR_2006_POPULATION :{BLACK}Population: {ORANGE}{COMMA}{BLACK} Maisons: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Renommer Ville
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Impossible de renommer la ville...
+3
View File
@@ -1115,6 +1115,7 @@ STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Lehesse
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Lehessen más vállalatoknak pénzt küldeni: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Különböző vágánytípusok engedélyezése egy állomáson: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Tömegszorzó tehervonatoknak (szimulációs célból): {ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Repülőgép sebességszorzó: {ORANGE}1 / {STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Áthajtható állomások engedélyezése városi utakra: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Érintkező állomások építésének engedélyezése: {ORANGE}{STRING}
@@ -1676,6 +1677,7 @@ STR_1004_TOO_HIGH :{WHITE}Túl mag
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Nincs megfelelő sín
STR_1007_ALREADY_BUILT :{WHITE}...már van itt
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Előbb le kell rombolnod a sínt
STR_ERR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Az út egy irányú vagy blokkolt
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Vasútépítés
STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}Elektromos-vasút építés
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Egysínű vasút építése
@@ -1778,6 +1780,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Előbb le kell rombolnod az épületet
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Város)
STR_2006_POPULATION :{BLACK}Lakosság: {ORANGE}{COMMA}{BLACK} Házak: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Város átnevezése
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Nem nevezheted át a várost...
+22 -4
View File
@@ -1,7 +1,7 @@
##name Icelandic
##ownname Íslenska
##isocode is_IS
##plural 0
##plural 9
##gender karlkyn kvenkyn hvorugkyn
#
@@ -16,6 +16,7 @@ STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Sléttlendi nauðsynlegt
STR_0008_WAITING :{BLACK}Bíður: {WHITE}{STRING}
STR_0009 :{WHITE}{CARGO}
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} frá {STATION})
STR_000C_ACCEPTS :{BLACK}Tekur við: {WHITE}
STR_000D_ACCEPTS :{BLACK}Tekur við: {GOLD}
STR_000E :
@@ -585,7 +586,11 @@ STR_0206_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Aðkoma
STR_0207_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Aðkoma fyrsta farartækis á stöð andstæðings
STR_0208_ACCIDENTS_DISASTERS :{YELLOW}Slys / hamfarir
STR_0209_COMPANY_INFORMATION :{YELLOW}Fyrirtækisupplýsingar
STR_NEWS_OPEN_CLOSE :{YELLOW}Opnun / lokun iðnaða
STR_020A_ECONOMY_CHANGES :{YELLOW}Efnahagsbreytingar
STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER :{YELLOW}Framleiðslubreytingar fyrirtækja þjónustuð af leikmanni
STR_INDUSTRY_CHANGES_SERVED_BY_OTHER :{YELLOW}Framleiðslubreytingar fyrirtækja þjónustuð af mótherjum
STR_OTHER_INDUSTRY_PRODUCTION_CHANGES :{YELLOW}Aðrar framleiðslubreytingar
STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}Ráð / upplýsingar um farartæki leikmanns
STR_020C_NEW_VEHICLES :{YELLOW}Ný farartæki
STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Breyting á viðtöku farms
@@ -721,6 +726,7 @@ STR_028D_PLACE_LIGHTHOUSE :{BLACK}Setja vi
STR_028E_PLACE_TRANSMITTER :{BLACK}Setja sendi
STR_028F_DEFINE_DESERT_AREA :{BLACK}Afmarkaðu eyðimörk.{}Smelltu og haltu CTRL til að fjarlægja hana
STR_CREATE_LAKE :{BLACK}Skilgreina vantssvæði.{}Grafa skipaskurð, nema CTRL sé haldið niðri við sjávarmál, þá flæðir það umhverfið í staðin.
STR_CREATE_RIVER :{BLACK}Búa til fljót.
STR_0290_DELETE :{BLACK}Eyða
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Eyða þessum bæ algjörlega
STR_0292_SAVE_SCENARIO :Vista kort
@@ -930,6 +936,7 @@ STR_OPTIONS_LANG_TIP :{BLACK}Tungumá
STR_OPTIONS_FULLSCREEN :{BLACK}Fylla út í skjá
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Smelltu hér til að OpenTTD fylli út í skjáinn
STR_FULLSCREEN_FAILED :{WHITE}Skjáfyllihamur brást
STR_OPTIONS_RES :{BLACK}Skjáupplausn
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1027,6 +1034,10 @@ STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Verðb
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Aðeins afhlaða farmi á stöðvum þar sem er eftirspurn: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Leyfa byggingu mjög langra brúa: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Skýli má vera á áætlun lesta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Fjármögnun nýrra hráefnisiðnaða: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :engin
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :eins og annarra iðnaða
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :með jarðefnisleit
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Leyfa marga svipaða iðnaði í sama bæ: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Má byggja iðnaði af sömu gerð nálægt hvor öðrum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Sýna alltaf fulla dagsetningu á upplýsingaslá: {ORANGE}{STRING}
@@ -1040,6 +1051,7 @@ STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Heimila
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Heimila peningagreiðslur til annarra fyrirtækja: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Órétthyrndar lestarstöðvar leyfðar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Margfalda þyngd farms til að líkja eftir þyngri lestum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Hraðastuðull flugvéla: {ORANGE}1 / {STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Leyfa strætóstöðvar á gangstéttum bæja: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Heimila sambyggingu stöðva: {ORANGE}{STRING}
@@ -1095,6 +1107,9 @@ STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL :Skruna á korti
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Engin
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Hraði skrunhjóls á korti: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU :{LTBLUE}Hægrismellshermun: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-smella
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-smella
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Af
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Setja leik á bið þegar nýr leikur er hafinn: {ORANGE}{STRING}
@@ -1117,6 +1132,7 @@ STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Fyrsta möguleg
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Síðasta mögulega
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Mest notuð
STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Sýna byggingarvalmynd þegar engin viðeigandi farartæki eru fáanleg: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Lestir á leikmann mest: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Bifreiðir á leikmann mest: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Flugvélar á leikmann mest: {ORANGE}{STRING}
@@ -1289,8 +1305,8 @@ STR_SELECT_STATION_TYPE_TIP :{BLACK}Veldu te
STR_FAST_FORWARD :{BLACK}Spóla leikinn áfram
STR_MESSAGE_HISTORY :{WHITE}Saga skilaboða
STR_MESSAGE_HISTORY_TIP :{BLACK}Listi yfir nýlegar fréttir
STR_MESSAGES_DISABLE_ALL :{BLACK}Óvirkja allt
STR_MESSAGES_ENABLE_ALL :{BLACK}Virkja allt
STR_MESSAGES_DISABLE_ALL :{BLACK}Fela allt
STR_MESSAGES_ENABLE_ALL :{BLACK}Sýna allt
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Grafa Kolanámu
STR_CONSTRUCT_FOREST_TIP :{BLACK}Gróðursetja Skóg
@@ -1700,6 +1716,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Verður að eyða byggingu fyrst
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Borg)
STR_2006_POPULATION :{BLACK}Íbúafjöldi: {ORANGE}{COMMA}{BLACK} Hús: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Endurskíra bæ
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Get ekki endurskírt bæ...
@@ -2054,7 +2071,7 @@ STR_5028_TUBULAR_ROAD_BRIDGE :Rörabrú, vegu
##id 0x5800
STR_5800_OBJECT_IN_THE_WAY :{WHITE}Hluturinn er fyrir
STR_5801_TRANSMITTER :Sendir
STR_5801_TRANSMITTER :Mastur
STR_5802_LIGHTHOUSE :Viti
STR_5803_COMPANY_HEADQUARTERS :Höfuðstöðvar fyritækis
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...höfuðstöðvar fyrirtækis eru fyrir
@@ -3328,6 +3345,7 @@ STR_DATE_LONG :{STRING} {STRIN
########
STR_FEEDER_CARGO_VALUE :{BLACK}Millifæra gjaldeyri: {LTBLUE}{CURRENCY}
STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}...vegurinn er í eigu bæjar
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...vegurinn snýr í ranga átt
+3 -2
View File
@@ -1044,7 +1044,7 @@ STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Consent
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Mostra sempre la data lunga nella barra di stato: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Mostra i segnali sul lato di guida: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Mostra la finestra delle finanze alla fine dell'anno: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}Gestisci la funzione 'non-stop' come in TTDPatch: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}Gestisci la funzione 'no-stop' come in TTDPatch: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Accodamento automezzi fuori da una stazione occupata: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Scorri la visuale quando il mouse è su un bordo: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Consenti la corruzione dell'autorità locale: {ORANGE}{STRING}
@@ -1242,7 +1242,7 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Diretto
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Diretto a {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Procedi attraverso {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Procedi non-stop attraverso {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Procedi no-stop attraverso {WAYPOINT}
STR_WAYPOINTNAME_CITY :Waypoint di {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Waypoint di {TOWN} #{COMMA}
@@ -1717,6 +1717,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}L'edificio deve essere demolito prima
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Metropoli)
STR_2006_POPULATION :{BLACK}Popolazione: {ORANGE}{COMMA}{BLACK} Case: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Rinomina città
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Impossibile rinominare la città...
+4 -3
View File
@@ -1302,7 +1302,7 @@ STR_STATION_DRAG_DROP :{BLACK}드래
STR_SELECT_STATION_CLASS_TIP :{BLACK}표시할 역의 종류를 선택합니다
STR_SELECT_STATION_TYPE_TIP :{BLACK}건설할 역의 종류를 선택합니다
STR_FAST_FORWARD :{BLACK}게임 빨리감기
STR_FAST_FORWARD :{BLACK}게임 고속 진행
STR_MESSAGE_HISTORY :{WHITE}메시지 기록
STR_MESSAGE_HISTORY_TIP :{BLACK}최근 뉴스 메시지의 기록입니다
STR_MESSAGES_DISABLE_ALL :{BLACK}모두 사용 안함
@@ -1716,6 +1716,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}건물을 먼저 제거하십시오!
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (도시)
STR_2006_POPULATION :{BLACK}인구: {ORANGE}{COMMA}{BLACK} 가구수: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :도시 이름 변경
STR_2008_CAN_T_RENAME_TOWN :{WHITE}도시 이름을 바꿀 수 없습니다...
@@ -2940,7 +2941,7 @@ STR_982F_NAME_SHIP :{BLACK}선박
STR_9831_NAME_SHIP :{WHITE}선박 이름 지정
STR_9832_CAN_T_NAME_SHIP :{WHITE}선박의 이름을 바꿀 수 없습니다...
STR_9833_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}첫 선박이 {STATION}에 도착했습니다!{}시민들이 환호하고 있습니다!
STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}웨이포인트로 사용할 부이를 which can be used as a waypoint
STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}웨이포인트로 사용할 부이를 설치합니다.
STR_9835_CAN_T_POSITION_BUOY_HERE :{WHITE}여기에 부이를 설치할 수 없습니다...
STR_9836_RENAME :{BLACK}이름 지정
STR_9837_RENAME_SHIP_TYPE :{BLACK}선박 타입의 이름 지정
@@ -3395,7 +3396,7 @@ STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}이 구
STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}이 그룹에 차량을 추가할 수 없습니다.
STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}이 구릅에 공유된 차량을 추가할 수 없습니다.
STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}그룹 - 땅을 클릭하면 이 그룹의 모든 차량을 나열
STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}그룹 - 클릭하신 그룹에 속한 차량을 모두 나열합니다
STR_GROUP_CREATE_TIP :{BLACK}그룹 만들기
STR_GROUP_DELETE_TIP :{BLACK}선택한 그룹 삭제
STR_GROUP_RENAME_TIP :{BLACK}선택한 그룹 이름 바꾸기
+1
View File
@@ -1717,6 +1717,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Сначала надо уничтожить здания
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Город)
STR_2006_POPULATION :{BLACK}Население: {ORANGE}{COMMA}{BLACK} Зданий: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Переименовать город
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Не могу переименовать город...
+2 -2
View File
@@ -1333,12 +1333,12 @@ STR_NETWORK_SET_PASSWORD :{BLACK}设置
STR_NETWORK_PASSWORD_TIP :{BLACK}如果不希望你的游戏被外人加入,请设置一个密码
STR_NETWORK_SELECT_MAP :{BLACK}选择地图:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}选择你要玩的地图
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}玩家数目:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}选择可以参加的玩家上限(达不到此数量仍然可以开始游戏)
STR_NETWORK_LAN :局域网
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :局域网 / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (advertise)
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}玩家数目:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}选择可以参加的玩家上限(达不到此数量仍然可以开始游戏)
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}公司数量:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}限制服务器上可以创建的公司数量
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}旁观数量:
+1
View File
@@ -1779,6 +1779,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Budova sa musi zburat
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Mesto)
STR_2006_POPULATION :{BLACK}Obyvatelstvo: {ORANGE}{COMMA}{BLACK} Domov: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Premenovat mesto
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Mesto nemoze byt odstranene ...
+1
View File
@@ -1757,6 +1757,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Najprej mora biti stavba porušena
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Mesto)
STR_2006_POPULATION :{BLACK}Prebivalstvo: {ORANGE}{COMMA}{BLACK} Število stavb: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Preimenuj mesto
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Ne moreš preimenovati mesta ...
+3 -2
View File
@@ -1020,7 +1020,7 @@ STR_CONFIG_PATCHES_OFF :No
STR_CONFIG_PATCHES_ON :Sí
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Mostrar velocidad del vehículo en la barra de estado: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Permitir la construcción en cuestas y orillas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Permitir pendientes bajo construcciones, carreteras, etc. (autopendiente): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Permitir pendientes bajo carreteras, etc. (autopendiente): {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Permitir tamaño del área de captación más realista: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Permitir demoler más propiedades de poblaciones: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Permitir la construcción de trenes muy largos: {ORANGE}{STRING}
@@ -1190,7 +1190,7 @@ STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST :Muy rápida
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Proporción de ciudades que crecerán el doble de rápido: {ORANGE}1 de {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Proporción de ciudades que crecerán el doble de rápido: {ORANGE}Ninguna
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Multiplicador inicial tamaño de ciudad: {ORANGE}{STRING}
STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Quitar elementos absurdos de la carretera durante su construcción
STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Quitar absurdos de la carretera durante su construcción
STR_CONFIG_PATCHES_GUI :{BLACK}Interfaz
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construcción
@@ -1716,6 +1716,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}El edificio debe demolerse primero
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (City)
STR_2006_POPULATION :{BLACK}Habitantes: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Renombrar población
STR_2008_CAN_T_RENAME_TOWN :{WHITE}No se puede renombrar población...
+16
View File
@@ -1050,6 +1050,7 @@ STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Tillåt
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Tillåt skicka pengar till andra företag: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Icke-rektangulära stationer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Godsfaktor för att simulera tunga tåg: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Hastighetsfaktor för flygplan: {ORANGE}1 / {STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Tillåt genomfarts-stop på stadsägda vägar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Tillåt byggande av närliggande stationer: {ORANGE}{STRING}
@@ -1204,6 +1205,18 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Ändra inställningsvärde
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Några eller alla av standard serviceintervalls-inställningarna är felaktiga! (5-90% och 30-800 dagar är giltiga inställningar)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Vägfinnare för tåg: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Ej rekommenderad)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Rekommenderad)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Vägfinnare för vägfordon: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Ej rekommenderad)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Rekommenderad)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Vägfinnare för skepp: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Rekommenderad)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Ej rekommenderad)
STR_TEMPERATE_LANDSCAPE :Tempererat landskap
STR_SUB_ARCTIC_LANDSCAPE :Sub-arktiskt landskap
@@ -1599,6 +1612,7 @@ STR_1004_TOO_HIGH :{WHITE}För hö
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Inget passande järnvägsspår
STR_1007_ALREADY_BUILT :{WHITE}...redan byggd
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Måste ta bort järnväg först
STR_ERR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Vägen är enkelriktad eller blockerad
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Bygg järnväg
STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}Elektrifierad järnvägskonstruktion
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Bygg monorail
@@ -1701,6 +1715,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Byggnad måste rivas först
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Stad)
STR_2006_POPULATION :{BLACK}Invånare: {ORANGE}{COMMA}{BLACK} Hus: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Byt namn på stad
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Kan inte byta namn på stad...
@@ -3341,6 +3356,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Växla g
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Växla genomskinlighet för byggnader såsom stationer, depåer, riktmärken eller kedjelinje
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Växla genomskinlighet för industrier
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Växla genomskinlighet för byggnader såsom fyrar och antenner, kanske i framtiden även ögongodis
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Växla genomskinlighet för kedjebro. CTRL+klick för att låsa.
STR_TRANSPARENT_LOADING_DESC :{BLACK}Växla genomskinlighet för lastningsindikatörer
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
+26 -4
View File
@@ -344,7 +344,7 @@ STR_0155_INCOME_GRAPH :收入圖表
STR_0156_DELIVERED_CARGO_GRAPH :運載報表
STR_0157_PERFORMANCE_HISTORY_GRAPH :業績歷史圖表
STR_0158_COMPANY_VALUE_GRAPH :公司市值圖表
STR_0159_CARGO_PAYMENT_RATES :貨物收費圖
STR_0159_CARGO_PAYMENT_RATES :公定運費報
STR_015A_COMPANY_LEAGUE_TABLE :公司排行榜
STR_PERFORMANCE_DETAIL_MENU :詳細營運評比
############ range for menu ends
@@ -435,8 +435,8 @@ STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}顯示
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}顯示公司擁有的公車/貨車
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}顯示公司擁有的船隻
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}顯示公司擁有的飛機
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}拉近視域
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}拉遠視域
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}拉近場景
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}拉遠場景
STR_0181_BUILD_RAILROAD_TRACK :{BLACK}興建路軌設施
STR_0182_BUILD_ROADS :{BLACK}興建道路設施
STR_0183_BUILD_SHIP_DOCKS :{BLACK}興建碼頭設施
@@ -471,7 +471,7 @@ STR_AGE :{COMMA} 年 ({C
STR_AGE_RED :{RED}{COMMA} 年 ({COMMA})
############ range for service numbers ends
STR_019C_ROAD_VEHICLE :車
STR_019C_ROAD_VEHICLE :公車/貨
STR_019D_AIRCRAFT :飛機
STR_019E_SHIP :船隻
STR_019F_TRAIN :列車
@@ -586,6 +586,9 @@ STR_0208_ACCIDENTS_DISASTERS :{YELLOW}意外
STR_0209_COMPANY_INFORMATION :{YELLOW}公司資訊
STR_NEWS_OPEN_CLOSE :{YELLOW}工業開張/倒閉消息
STR_020A_ECONOMY_CHANGES :{YELLOW}經濟氣候變化
STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER :{YELLOW}工業提供給玩家的產量變更
STR_INDUSTRY_CHANGES_SERVED_BY_OTHER :{YELLOW}工業提供給競爭者的產量變更
STR_OTHER_INDUSTRY_PRODUCTION_CHANGES :{YELLOW}其他工業產量變更
STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}給玩家的載具的建議或資訊
STR_020C_NEW_VEHICLES :{YELLOW}新載具
STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}接收貨物的改動
@@ -721,6 +724,7 @@ STR_028D_PLACE_LIGHTHOUSE :{BLACK}建立
STR_028E_PLACE_TRANSMITTER :{BLACK}建立發射站
STR_028F_DEFINE_DESERT_AREA :{BLACK}定義沙漠區。{}請按住 CTRL 移除
STR_CREATE_LAKE :{BLACK}劃出湖泊範圍。{}開鑿運河。在海平面上按 CTRL 鍵則會淹沒週遭土地
STR_CREATE_RIVER :{BLACK}劃出河流範圍
STR_0290_DELETE :{BLACK}刪除
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}完全移除這個市鎮
STR_0292_SAVE_SCENARIO :儲存場景
@@ -930,6 +934,7 @@ STR_OPTIONS_LANG_TIP :{BLACK}介面
STR_OPTIONS_FULLSCREEN :{BLACK}全螢幕
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}勾選即可以全螢幕玩 OpenTTD
STR_FULLSCREEN_FAILED :{WHITE}無法切換全螢幕模式
STR_OPTIONS_RES :{BLACK}螢幕解析度
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1044,6 +1049,7 @@ STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}允許
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}允許資金流通給其他公司:{ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}不規則形狀車站:{ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}貨物重量系數,以模擬較重列車:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}飛機速度比例:{ORANGE}{STRING} 分之一
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}可在鎮內興建路邊車站:{ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}容許興建相鄰車站: {ORANGE}{STRING}
@@ -1198,6 +1204,18 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}改變設定值
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}以下預設檢修期與揀選項目不相容! 合法設定為 5-90% 或 30-800 日
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}列車的路徑搜尋方式:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(不建議)
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(建議)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}車輛的路徑搜尋方式:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :預設 {RED}(不建議)
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(建議)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}船隻的路徑搜尋方式:{ORANGE}{STRING}
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :預設 {BLUE}(建議)
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(不建議)
STR_TEMPERATE_LANDSCAPE :溫帶
STR_SUB_ARCTIC_LANDSCAPE :亞北極帶
STR_SUB_TROPICAL_LANDSCAPE :亞熱帶
@@ -1592,6 +1610,7 @@ STR_1004_TOO_HIGH :{WHITE}太高
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}沒有適合的鐵路軌道
STR_1007_ALREADY_BUILT :{WHITE}...已經建了
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}必須先移除鐵道
STR_ERR_CROSSING_ON_ONEWAY_ROAD :{WHITE}道路是單行道或被阻擋
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}鋪設鐵道
STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}建造電氣化鐵道
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}鋪設單軌
@@ -1694,6 +1713,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}必須先摧毀建物
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (城市)
STR_2006_POPULATION :{BLACK}人口:{ORANGE}{COMMA}{BLACK} 房屋:{ORANGE}{COMMA}
STR_2007_RENAME_TOWN :修改城鎮名稱
STR_2008_CAN_T_RENAME_TOWN :{WHITE}無法修改城鎮名稱...
@@ -2326,6 +2346,8 @@ STR_LIVERY_EMU :電聯車
STR_LIVERY_PASSENGER_WAGON_STEAM :乘客車廂 (蒸氣)
STR_LIVERY_PASSENGER_WAGON_DIESEL :乘客車廂 (柴油)
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :乘客車廂 (電力)
STR_LIVERY_PASSENGER_WAGON_MONORAIL :客車廂 (單軌)
STR_LIVERY_PASSENGER_WAGON_MAGLEV :客車廂 (磁浮)
STR_LIVERY_FREIGHT_WAGON :貨車廂
STR_LIVERY_BUS :公車
STR_LIVERY_TRUCK :貨卡車
+6
View File
@@ -1035,6 +1035,7 @@ STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Garaja
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Üretim fabrikalarının yapım yöntemi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :hiçbiri
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :diğer fabrikalar gibi
STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :tetkik aramayla
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Bir şehirde birden fazla aynı fabrika olması izinli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Aynı tür fabrikalar yan yana yapılabilir: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Durum çubuğunda uzun tarih göster: {ORANGE}{STRING}
@@ -1048,6 +1049,7 @@ STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Şehrin
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Diğer şirketlere para gönderme izinli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Özel istasyonlar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Ağır yük trenleri için ağırlık çarpanı: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Uçak hızı çarpanı: {ORANGE}1 / {STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Şehiriçi yollara durak yapmak izinli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Bitişik istasyonlar izinli: {ORANGE}{STRING}
@@ -1609,6 +1611,7 @@ STR_1004_TOO_HIGH :{WHITE}Çok yü
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Uygun ray yok
STR_1007_ALREADY_BUILT :{WHITE}...zaten yapıldı
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Önce ray kaldırılmalı
STR_ERR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Yol tek yönlü veya kapalı
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Demiryolu Yapımı
STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}Elektrikli Ray Yapımı
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Monoray Yapımı
@@ -1711,6 +1714,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Önce bina yıkılmalı
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (Şehir)
STR_2006_POPULATION :{BLACK}Nüfus: {ORANGE}{COMMA}{BLACK} Ev: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :İsim değiştir
STR_2008_CAN_T_RENAME_TOWN :{WHITE}İsim değiştirilemiyor...
@@ -3091,6 +3095,7 @@ STR_NEWGRF_ERROR_INVALID_PARAMETER :{STRING} için
STR_NEWGRF_ERROR_LOAD_BEFORE :{STRING} önce, {STRING} ondan sonra yüklenmeli.
STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} sonra, {STRING} ondan önce yüklenmeli.
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} OpenTTD {STRING} veya daha yüksek bir sürüm gerektirir.
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF dosyası çeviri için yapılmış
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Çok fazla NewGRF yüklendi.
STR_NEWGRF_ADD :{BLACK}Ekle
@@ -3276,6 +3281,7 @@ STR_SNOW_LINE_QUERY_CAPT :{WHITE}Kar yük
STR_START_DATE_QUERY_CAPT :{WHITE}Başlangıç yılını değiştir
STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Ölcek uyarısı
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Kaynak haritanin boyutunu değiştirmek önerilmez. Harita oluşturmaya devam edilsin mi?
STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Şehir planlama uyarısı
STR_HEIGHTMAP_NAME :{BLACK}Yükseklik haritası adı:
STR_HEIGHTMAP_SIZE :{BLACK}Boyut: {ORANGE}{NUM} x {NUM}
STR_GENERATION_WORLD :{WHITE}Harita oluşturuluyor...
+37 -36
View File
@@ -1070,7 +1070,7 @@ STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Форм
STR_OPTIONS_SCREENSHOT_FORMAT_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Виберіть формат для створення копій екрану
STR_AUTOSAVE_1_MONTH :Щомісяця
STR_AUTOSAVE_1_MONTH :щомісяця
STR_AUTOSAVE_FAILED :{WHITE}Помилка автозбереження
STR_MONTH_JAN :Січень
@@ -1127,7 +1127,7 @@ STR_SHIP_HAS_INVALID_ENTRY :{WHITE}Кора
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Літак {COMMA} не має завдань
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}Літак {COMMA} має пустий наказ
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}Літак {COMMA} має подвійні накази
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Літак {COMMA} має в наказі невірну станцію
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Літак {COMMA} має в маршруті невірну станцію
# end of order system
STR_TRAIN_AUTORENEW_FAILED :{WHITE}Помилка автооновлення поїзда {COMMA} (бракує коштів)
@@ -1840,6 +1840,7 @@ STR_2002 :{TINYFONT}{BLAC
STR_2002_WHITE :{TINYFONT}{WHITE}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Спочатку зруйнуйте споруду
STR_2005 :{WHITE}{TOWN}
STR_CITY :{WHITE}{TOWN} (місто)
STR_2006_POPULATION :{BLACK}Населення: {ORANGE}{COMMA}{BLACK} Будинки: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Перейменувати
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Неможливо перейменувати...
@@ -1847,8 +1848,8 @@ STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}Влад
STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Назви міст - вкажіть на місто і воно з'явиться в центрі екрану
STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Показати в центрі екрану
STR_200C_CHANGE_TOWN_NAME :{BLACK}Змінити назву міста
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пасажирів за місяць: {ORANGE}{COMMA}{BLACK} Найбільше: {ORANGE}{COMMA}
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Пошти за місяць: {ORANGE}{COMMA}{BLACK} Найбільше: {ORANGE}{COMMA}
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пасажирів за місяць: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA}
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Пошти за місяць: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA}
STR_200F_TALL_OFFICE_BLOCK :Великий офіс
STR_2010_OFFICE_BLOCK :Офісний район
STR_2011_SMALL_BLOCK_OF_FLATS :Будинки
@@ -1868,15 +1869,15 @@ STR_201E_STADIUM :Стадіон
STR_201F_OLD_HOUSES :Старі будинки
STR_2020_LOCAL_AUTHORITY :{BLACK}Місцева влада
STR_2021_SHOW_INFORMATION_ON_LOCAL :{BLACK}Інформація про місцеву владу
STR_2022_LOCAL_AUTHORITY :{WHITE}{TOWN} місцева влада
STR_2022_LOCAL_AUTHORITY :{WHITE}{TOWN} - місцева влада
STR_2023_TRANSPORT_COMPANY_RATINGS :{BLACK}Рейтинги компаній:
STR_2024 :{YELLOW}{COMPANY} {COMPANYNUM}: {ORANGE}{STRING}
STR_2025_SUBSIDIES :{WHITE}Субсидії
STR_2026_SUBSIDIES_ON_OFFER_FOR :{BLACK}Пропонуються субсидії:-
STR_2026_SUBSIDIES_ON_OFFER_FOR :{BLACK}Пропонуються субсидії:
STR_2027_FROM_TO :{ORANGE}Перевезення {STRING.r} з {STRING} до {STRING}
STR_2028_BY :{YELLOW} ({DATE_SHORT})
STR_202A_NONE :{ORANGE}немає
STR_202B_SERVICES_ALREADY_SUBSIDISED :{BLACK}Призначені субсидії:-
STR_202B_SERVICES_ALREADY_SUBSIDISED :{BLACK}Призначені субсидії:
STR_202C_FROM_TO :{ORANGE}Перевезення {STRING.r} з {STATION} до {STATION}{YELLOW} ({COMPANY}
STR_202D_UNTIL :{YELLOW}, по {DATE_SHORT})
STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Субсидію відмінено:{}{}Перевезення {STRING.r} з {STRING} до {STRING}.
@@ -2303,8 +2304,8 @@ STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Кіл
STR_6806_COMPETITOR_START_TIME :{LTBLUE}Конкуренти починають через: {ORANGE}{STRING}
STR_6807_NO_OF_TOWNS :{LTBLUE}Кількість міст: {ORANGE}{STRING}
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Кількість підприємств: {ORANGE}{STRING}
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Початковий кредит: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Відсотки за кредит: {ORANGE}{COMMA}%
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Початкова позика: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Відсоткова ставка: {ORANGE}{COMMA}%
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Транспортні витрати: {ORANGE}{STRING}
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Швидкість будівництва конкурентів: {ORANGE}{STRING}
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Досвідченість конкурентів: {ORANGE}{STRING}
@@ -2365,7 +2366,7 @@ STR_HOSTILE :Вороже
STR_7000 :
STR_7001 :{WHITE}{COMPANY} {BLACK}{COMPANYNUM}
STR_7002_PLAYER :(Гравець {COMMA})
STR_7004_NEW_FACE :{BLACK}Нове лице
STR_7004_NEW_FACE :{BLACK}Нове обличчя
STR_7005_COLOR_SCHEME :{BLACK}Колір
STR_7006_COLOR_SCHEME :{GOLD}Колір:
STR_7007_NEW_COLOR_SCHEME :{WHITE}Новий колір
@@ -2389,35 +2390,35 @@ STR_7018_TRAIN_INCOME :{GOLD}Дохі
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Дохід, автомобілі
STR_701A_AIRCRAFT_INCOME :{GOLD}Дохід, літаки
STR_701B_SHIP_INCOME :{GOLD}Дохід, кораблі
STR_701C_LOAN_INTEREST :{GOLD}Відсотки за кредит
STR_701C_LOAN_INTEREST :{GOLD}Відсотки за позикою
STR_701D_OTHER :{GOLD}Інше
STR_701E :{BLACK}-{CURRENCY}
STR_701F :{BLACK}+{CURRENCY}
STR_7020_TOTAL :{WHITE}Всього:
STR_7020_TOTAL :{WHITE}Підсумок:
STR_7021 :{COMPANY} {COMPANYNUM}
STR_7022_INCOME_GRAPH :{WHITE}Графік доходів
STR_CURRCOMPACT :{CURRCOMPACT}
STR_7024 :{COMMA}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Графік прибутку від виробництва
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Графік операційного прибутку
STR_7026_BANK_BALANCE :{WHITE}Рахунок
STR_7027_LOAN :{WHITE}Взято в кредит
STR_MAX_LOAN :{WHITE}Макс. кредит: {BLACK}{CURRENCY}
STR_7027_LOAN :{WHITE}Позика
STR_MAX_LOAN :{WHITE}Макс. позика: {BLACK}{CURRENCY}
STR_7028 :{BLACK}{CURRENCY}
STR_7029_BORROW :{BLACK}Позичити {SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :{BLACK}Повернути {SKIP}{SKIP}{CURRENCY}
STR_702B_MAXIMUM_PERMITTED_LOAN :{WHITE}...найбільший дозволений розмір кредиту {CURRENCY}
STR_702C_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Неможливо взяти кредит...
STR_702D_LOAN_ALREADY_REPAYED :{WHITE}...кредит вже оплачено
STR_702B_MAXIMUM_PERMITTED_LOAN :{WHITE}...найбільший дозволений розмір позики {CURRENCY}
STR_702C_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Неможливо взяти ще позику...
STR_702D_LOAN_ALREADY_REPAYED :{WHITE}...позика вже повернута
STR_702E_REQUIRED :{WHITE}...потрібно {CURRENCY}
STR_702F_CAN_T_REPAY_LOAN :{WHITE}Неможливо виплатити кредит...
STR_INSUFFICIENT_FUNDS :{WHITE}Неможливо передати гроші, які взяли в кредит з банку...
STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT :{BLACK}Вибір нового лиця керівника
STR_702F_CAN_T_REPAY_LOAN :{WHITE}Неможливо повернути позику...
STR_INSUFFICIENT_FUNDS :{WHITE}Неможливо передати гроші, позичені у банку...
STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT :{BLACK}Вибрати нове обличчя керівника
STR_7031_CHANGE_THE_COMPANY_VEHICLE :{BLACK}Зміна кольору транспорту компанії
STR_7032_CHANGE_THE_PRESIDENT_S :{BLACK}Зміна імені керівника
STR_7033_CHANGE_THE_COMPANY_NAME :{BLACK}Зміна назви компанії
STR_7034_CLICK_ON_SELECTED_NEW_COLOR :{BLACK}Натисніть на колір, який вам до вподоби
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Взяти кредит
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Виплатити частину кредиту
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Збільшити розмір позики
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Повернути частину позики
STR_7037_PRESIDENT :{WHITE}{PLAYERNAME}{}{GOLD}(Керівник)
STR_7038_INAUGURATED :{GOLD}Засновано у: {WHITE}{NUM} році
STR_7039_VEHICLES :{GOLD}Транспорт:
@@ -2426,19 +2427,19 @@ STR_ROAD_VEHICLES :{WHITE}{COMMA}
STR_AIRCRAFT :{WHITE}{COMMA} літак{P "" и ів}
STR_SHIPS :{WHITE}{COMMA} кораб{P ель лі ів}
STR_7042_NONE :{WHITE}Нема
STR_7043_FACE_SELECTION :{WHITE}Вибір лиця
STR_7043_FACE_SELECTION :{WHITE}Вибір обличчя
STR_7044_MALE :{BLACK}Чоловік
STR_7045_FEMALE :{BLACK}Жінка
STR_7046_NEW_FACE :{BLACK}Нове лице
STR_7047_CANCEL_NEW_FACE_SELECTION :{BLACK}Відмінити вибір нового лиця
STR_7048_ACCEPT_NEW_FACE_SELECTION :{BLACK}Підтвердити вибір нового лиця
STR_7049_SELECT_MALE_FACES :{BLACK}Вибір чоловічого лиця
STR_704A_SELECT_FEMALE_FACES :{BLACK}Вибір жіночого лиця
STR_704B_GENERATE_RANDOM_NEW_FACE :{BLACK}Генерувати випадкове нове лице
STR_7046_NEW_FACE :{BLACK}Нове обличчя
STR_7047_CANCEL_NEW_FACE_SELECTION :{BLACK}Відмінити вибір нового обличчя
STR_7048_ACCEPT_NEW_FACE_SELECTION :{BLACK}Підтвердити вибір нового обличчя
STR_7049_SELECT_MALE_FACES :{BLACK}Вибрати чоловіче обличчя
STR_704A_SELECT_FEMALE_FACES :{BLACK}Вибрати жіноче обличчя
STR_704B_GENERATE_RANDOM_NEW_FACE :{BLACK}Генерувати нове випадкове обличчя
STR_704C_KEY :{BLACK}Ключ
STR_704D_SHOW_KEY_TO_GRAPHS :{BLACK}Показ ключа до графіків
STR_704E_KEY_TO_COMPANY_GRAPHS :{WHITE}Ключ до графіків компанії
STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY :{BLACK}Натисніть для вкл/викл окремого графіку компанії
STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY :{BLACK}Натисніть тут для вкл.ідкл. графіку окремої компанії
STR_7050_UNITS_OF_CARGO_DELIVERED :{WHITE}Доставка одиниці вантажу
STR_7051_COMPANY_PERFORMANCE_RATINGS :{WHITE}Рейтинг продуктивності компанії (найбільший рейтинг=1000)
STR_7052_COMPANY_VALUES :{WHITE}Вартість компанії
@@ -3222,7 +3223,7 @@ STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Дост
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Вантаж:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Кошти:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Кредит:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Всього:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Підсумок:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Загальна кількість транспорту
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Загальна кількість станцій.
@@ -3232,7 +3233,7 @@ STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Найб
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Кількість одиниць вантажу, доставлених за останні 4 квартали
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Кількість видів вантажу, доставлених за останній квартал
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Сума коштів на рахунку компанії
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Сума кредиту, що надано компанії
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Сума позики, наданої компанії
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Загальна кількість балів
STR_NEWGRF_SETTINGS_BUTTON :{BLACK}Налаштування NewGRF
@@ -3494,7 +3495,7 @@ STR_HELIPORTS :{BLACK}Гелі
############ Tooltip measurment
STR_MEASURE_LENGTH :{BLACK}Довжина: {NUM}
STR_MEASURE_AREA :{BLACK}Область: {NUM} x {NUM}
STR_MEASURE_AREA :{BLACK}Ділянка: {NUM} x {NUM}
STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Довжина: {NUM}{}Різниця висот: {NUM} м
STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Ділянка: {NUM} x {NUM}{}Різниця висот: {NUM} м
@@ -3621,8 +3622,8 @@ STR_FACE_MOUSTACHE :Вуса:
STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Змінити губи або вуса
STR_FACE_CHIN :Підборіддя:
STR_FACE_CHIN_TIP :{BLACK}Змінити підборіддя
STR_FACE_JACKET :Жакет:
STR_FACE_JACKET_TIP :{BLACK}Змінити жакет
STR_FACE_JACKET :Піджак:
STR_FACE_JACKET_TIP :{BLACK}Змінити піджак
STR_FACE_COLLAR :Комір
STR_FACE_COLLAR_TIP :{BLACK}Змінити комір
STR_FACE_TIE :Краватка:
-1
View File
@@ -1863,7 +1863,6 @@ STR_707A_SELL_25_SHARE_IN_THIS_COMPANY :{BLACK}Πώλη
STR_707B_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Αδύνατη η αγορά μεριδίου 25% της εταιρείας...
STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Αδύνατη η πώληση μεριδίου 25% της εταιρείας...
STR_707D_OWNED_BY :{WHITE}({COMMA}% είναι ιδιοκτησία της {COMPANY})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA}% είναι ιδιοκτησία της εταιρείας {COMPANY}{} {COMMA}% ιδιοκτησία της {COMPANY})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}Η {COMPANY} εξαγοράστηκε από την {COMPANY}!
STR_PROTECTED :{WHITE}Αυτή η εταιρεία δεν είναι αρκετά ώριμη για συναλλαγή μετοχών ακόμα...
+63 -39
View File
@@ -11,11 +11,11 @@
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Ārpus kartes robežām
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Pārāk tuvu kartes malai
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nepietiek naudas - nepieciešami {CURRENCY}
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nepietiek naudas - nepieciešams {CURRENCY}
STR_0004 :{WHITE}{CURRENCY}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zemei jābūt plakanai
STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING.a}
STR_0008_WAITING :{BLACK}Gaida: {WHITE}{STRING.a}
STR_0009 :{WHITE}{CARGO}
STR_000C_ACCEPTS :{BLACK}Pieņem: {WHITE}
STR_000D_ACCEPTS :{BLACK}Pieņem: {GOLD}
@@ -24,58 +24,58 @@ STR_000F_PASSENGERS :Pasažieri
STR_0010_COAL :Ogles
STR_0011_MAIL :Pasts
STR_0012_OIL :Nafta
STR_0013_LIVESTOCK :Liellopus
STR_0013_LIVESTOCK :Mājlopi
STR_0014_GOODS :Preces
STR_0015_GRAIN :Graudus
STR_0016_WOOD :Kokmateria'lus
STR_0017_IRON_ORE :Dzelzs ru'du
STR_0018_STEEL :Te'raudu
STR_0019_VALUABLES :Ve'rtspapi'ri
STR_001A_COPPER_ORE :Vara ru'da
STR_001B_MAIZE :Kukuru'za
STR_001C_FRUIT :Augl'i
STR_0015_GRAIN :Graudi
STR_0016_WOOD :Koksne
STR_0017_IRON_ORE :Dzelzsrūda
STR_0018_STEEL :Tērauds
STR_0019_VALUABLES :Vērtslietas
STR_001A_COPPER_ORE :Vara rūda
STR_001B_MAIZE :Kukurūza
STR_001C_FRUIT :Augļi
STR_001D_DIAMONDS :Dimanti
STR_001E_FOOD :Pa'rtika
STR_001F_PAPER :Papi'rs
STR_001E_FOOD :Pārtika
STR_001F_PAPER :Papīrs
STR_0020_GOLD :Zelts
STR_0021_WATER :U'dens
STR_0022_WHEAT :Kvies'i
STR_0023_RUBBER :Gumija
STR_0021_WATER :Ūdens
STR_0022_WHEAT :Kvieši
STR_0023_RUBBER :Kaučuks
STR_0024_SUGAR :Cukurs
STR_0025_TOYS :Rotal'lietas
STR_0025_TOYS :Rotaļlietas
STR_0026_CANDY :Saldumi
STR_0027_COLA :Kola
STR_0028_COTTON_CANDY :Cukurvate
STR_0029_BUBBLES :Burbul'i
STR_002A_TOFFEE :Cukurpla'ksnes
STR_0029_BUBBLES :Burbuļi
STR_002A_TOFFEE :Īriss
STR_002B_BATTERIES :Baterijas
STR_002C_PLASTIC :Plastmasa
STR_002D_FIZZY_DRINKS :Burbul'u'den'i
STR_002D_FIZZY_DRINKS :Limonāde
STR_002E :
STR_002F_PASSENGER :Pasaz'ieris
STR_0030_COAL :Ogle
STR_002F_PASSENGER :Pasažieris
STR_0030_COAL :Ogles
STR_0031_MAIL :Pasts
STR_0032_OIL :Nafta
STR_0033_LIVESTOCK :Liellopi
STR_0033_LIVESTOCK :Mājlopi
STR_0034_GOODS :Preces
STR_0035_GRAIN :Graudi
STR_0036_WOOD :Kokmaterea'li
STR_0037_IRON_ORE :Dzelzs ru'da
STR_0038_STEEL :Te'rauds
STR_0039_VALUABLES :Ve'rtspapi'ri
STR_003A_COPPER_ORE :Vara ru'da
STR_003B_MAIZE :Kukuru'za
STR_003C_FRUIT :Augl'i
STR_003D_DIAMOND :Dimanti
STR_003E_FOOD :Pa'rtika
STR_003F_PAPER :papi'rs
STR_0036_WOOD :Koksne
STR_0037_IRON_ORE :Dzelzsda
STR_0038_STEEL :Tērauds
STR_0039_VALUABLES :Vērtslietas
STR_003A_COPPER_ORE :Vara rūda
STR_003B_MAIZE :Kukurūza
STR_003C_FRUIT :Augļi
STR_003D_DIAMOND :Dimants
STR_003E_FOOD :Pārtika
STR_003F_PAPER :Papīrs
STR_0040_GOLD :Zelts
STR_0041_WATER :U'dens
STR_0042_WHEAT :Kvies'i
STR_0043_RUBBER :Gumija
STR_0041_WATER :Ūdens
STR_0042_WHEAT :Kvieši
STR_0043_RUBBER :Kaučuks
STR_0044_SUGAR :Cukurs
STR_0045_TOY :Rotal'lieta
STR_0046_CANDY :Saldumi
STR_0045_TOY :Rotaļlieta
STR_0046_CANDY :Saldums
STR_0047_COLA :Kola
STR_0048_COTTON_CANDY :Cukurvate
STR_0049_BUBBLE :Burbulis
@@ -1707,8 +1707,23 @@ STR_801A_ASIASTAR_ELECTRIC :'AsiaStar' (Ele
STR_8036_X2001_ELECTRIC :'X2001' (Electric)
STR_8037_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Electric)
STR_8038_WIZZOWOW_Z99 :Wizzowow Z99
STR_8039_PASSENGER_CAR :Pasažieru Vagons
STR_803A_MAIL_VAN :Pasta Vagons
STR_8048_FRUIT_TRUCK :Fruktu Vagons
STR_803B_COAL_CAR :Ogļu Platforma
STR_803C_OIL_TANKER :Naftas Cisterna
STR_803D_LIVESTOCK_VAN :Mājlopu Vagons
STR_803E_GOODS_VAN :Preču Vagons
STR_803F_GRAIN_HOPPER :Graudu Vagons
STR_8040_WOOD_TRUCK :Kokmateriālu Platforma
STR_8041_IRON_ORE_HOPPER :Dzelzsrūdas Vagons
STR_8042_STEEL_TRUCK :Tērauda Platforma
STR_8043_ARMORED_VAN :Bruņots Vagons
STR_8044_FOOD_VAN :Pārtikas Vagons
STR_8045_PAPER_TRUCK :Papīra Platforma
STR_8046_COPPER_ORE_HOPPER :Vara Rūdas Vagonete
STR_8047_WATER_TANKER :Ūdens Cisterna
STR_8048_FRUIT_TRUCK :Augļu Platforma
STR_8049_RUBBER_TRUCK :Gumijas Platforma
STR_8054_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electric)
STR_8055_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Electric)
STR_8056_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Electric)
@@ -1794,8 +1809,17 @@ STR_GO_TO_TRAIN_DEPOT :Uz {TOWN} Vilci
STR_8812_EMPTY :{LTBLUE}Tukšs
STR_8816 :{BLACK}-
STR_8819_TRAIN_TOO_LONG :{WHITE}Vilciens ir pārāk garš
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Vilcienus ir iespējams pārveidot tikai tad, kad tie ir apstādināti depo
STR_881C_NEW_RAIL_VEHICLES :{WHITE}Jauni Dzelzceļa Satiksmes Līdzekļi
STR_NEW_ELRAIL_VEHICLES :{WHITE}Jauni Elektriskā Dzelzceļa Satiksmes Līdzekļi
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Jauni Viensliežu Dzelzeļa Satiksmes Līdzekļi
STR_881E_NEW_MAGLEV_VEHICLES :{WHITE}Jauni Magnētiskā Dzelzceļa Satiksmes Līdzekļi
STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Dzelzceļa Satiksmes Līdzekļi
STR_881F_BUILD_VEHICLE :{BLACK}Būvēt Satiksmes Līdzekli
STR_CLONE_ROAD_VEHICLE :{BLACK}Klonēt Satiksmes Līdzekli
STR_FULLLOAD_OR_SERVICE :{SKIP}{SKIP}{STRING}
STR_SERVICE :{BLACK}Serviss
STR_882E :{WHITE}{VEHICLE}
-85
View File
@@ -1,85 +0,0 @@
/* $Id$ */
/** @file autocopyptr.hpp */
#ifndef AUTOCOPYPTR_HPP
#define AUTOCOPYPTR_HPP
#if 0 // reenable when needed
/** CAutoCopyPtrT - kind of CoW (Copy on Write) pointer.
* It is non-invasive smart pointer (reference counter is held outside
* of Tdata).
* When copied, its new copy shares the same underlaying structure Tdata.
* When dereferenced, its behaviour depends on 2 factors:
* - whether the data is shared (used by more than one pointer)
* - type of access (read/write)
* When shared pointer is dereferenced for write, new clone of Tdata
* is made first.
* Can't be used for polymorphic data types (interfaces).
*/
template <class Tdata_>
class CAutoCopyPtrT {
protected:
typedef Tdata_ Tdata;
struct CItem {
int m_ref_cnt; ///< reference counter
Tdata m_data; ///< custom data itself
FORCEINLINE CItem() : m_ref_cnt(1) {};
FORCEINLINE CItem(const Tdata& data) : m_ref_cnt(1), m_data(data) {};
FORCEINLINE CItem(const CItem& src) : m_ref_cnt(1), m_data(src.m_data) {};
};
mutable CItem* m_pI; ///< points to the ref-counted data
public:
FORCEINLINE CAutoCopyPtrT() : m_pI(NULL) {};
FORCEINLINE CAutoCopyPtrT(const Tdata& data) : m_pI(new CItem(data)) {};
FORCEINLINE CAutoCopyPtrT(const CAutoCopyPtrT& src) : m_pI(src.m_pI) {if (m_pI != NULL) m_pI->m_ref_cnt++;}
FORCEINLINE ~CAutoCopyPtrT() {if (m_pI == NULL || (--m_pI->m_ref_cnt) > 0) return; delete m_pI; m_pI = NULL;}
/** data accessor (read only) */
FORCEINLINE const Tdata& GetDataRO() const {if (m_pI == NULL) m_pI = new CItem(); return m_pI->m_data;}
/** data accessor (read / write) */
FORCEINLINE Tdata& GetDataRW() {CloneIfShared(); if (m_pI == NULL) m_pI = new CItem(); return m_pI->m_data;}
/** clone data if it is shared */
FORCEINLINE void CloneIfShared()
{
if (m_pI != NULL && m_pI->m_ref_cnt > 1) {
// we share data item with somebody, clone it to become an exclusive owner
CItem* pNewI = new CItem(*m_pI);
m_pI->m_ref_cnt--;
m_pI = pNewI;
}
}
/** assign pointer from the other one (maintaining ref counts) */
FORCEINLINE void Assign(const CAutoCopyPtrT& src)
{
if (m_pI == src.m_pI) return;
if (m_pI != NULL && (--m_pI->m_ref_cnt) <= 0) delete m_pI;
m_pI = src.m_pI;
if (m_pI != NULL) m_pI->m_ref_cnt++;
}
/** dereference operator (read only) */
FORCEINLINE const Tdata* operator -> () const {return &GetDataRO();}
/** dereference operator (read / write) */
FORCEINLINE Tdata* operator -> () {return &GetDataRW();}
/** assignment operator */
FORCEINLINE CAutoCopyPtrT& operator = (const CAutoCopyPtrT& src) {Assign(src); return *this;}
/** forwarding 'lower then' operator to the underlaying items */
FORCEINLINE bool operator < (const CAutoCopyPtrT& other) const
{
assert(m_pI != NULL);
assert(other.m_pI != NULL);
return (m_pI->m_data) < (other.m_pI->m_data);
}
};
#endif /* 0 */
#endif /* AUTOCOPYPTR_HPP */
-106
View File
@@ -1,106 +0,0 @@
/* $Id$ */
/** @file autoptr.hpp */
#ifndef AUTOPTR_HPP
#define AUTOPTR_HPP
/** AutoPtrT - kind of smart pointer that ensures the owned object gets
* deleted when its pointer goes out of scope.
* It is non-invasive smart pointer (no reference counter).
* When copied, the copy takes ownership of underlying object
* and original becomes NULL!
* Can be used also for polymorphic data types (interfaces).
*/
template <class T>
class AutoPtrT {
public:
typedef T obj_t;
protected:
mutable T* m_p; ///< points to the data
public:
FORCEINLINE AutoPtrT()
: m_p(NULL)
{};
FORCEINLINE AutoPtrT(const AutoPtrT<T>& src)
: m_p(src.m_p)
{
if (m_p != NULL) src.m_p = NULL;
};
FORCEINLINE AutoPtrT(T *p)
: m_p(p)
{}
FORCEINLINE ~AutoPtrT()
{
if (m_p != NULL) {
T *p = m_p;
m_p = NULL;
delete p;
}
}
/** give-up ownership and NULLify the raw pointer */
FORCEINLINE T* Detach()
{
T* p = m_p;
m_p = NULL;
return p;
}
/** raw-pointer cast operator (read only) */
FORCEINLINE operator const T* () const
{
return m_p;
}
/** raw-pointer cast operator */
FORCEINLINE operator T* ()
{
return m_p;
}
/** dereference operator (read only) */
FORCEINLINE const T* operator -> () const
{
assert(m_p != NULL);
return m_p;
}
/** dereference operator (read / write) */
FORCEINLINE T* operator -> ()
{
assert(m_p != NULL);
return m_p;
}
/** assignment operator */
FORCEINLINE AutoPtrT& operator = (const AutoPtrT& src)
{
/* Save original pointer and replace it with the given one to avoid recursive calls. */
T* p = m_p;
m_p = src.m_p;
if (m_p != NULL) src.m_p = NULL;
if (p != NULL) {
/* Now we can safely delete the old one. */
delete p;
}
return *this;
}
/** forwarding 'lower than' operator to the underlaying items */
FORCEINLINE bool operator < (const AutoPtrT& other) const
{
assert(m_p != NULL);
assert(other.m_p != NULL);
return (*m_p) < (*other.m_p);
}
};
#endif /* AUTOPTR_HPP */
+2 -7
View File
@@ -38,14 +38,9 @@ enum {
/**
* Maximum number of GRFs that can be sent.
* This value is related to number of handles (files) OpenTTD can open.
* This is currently 64 and about 10 are currently used when OpenTTD loads
* without any NewGRFs. Therefore one can only load about 55 NewGRFs, so
* this is not a limit, but rather a way to easily check whether the limit
* imposed by the handle count is reached. Secondly it isn't possible to
* send much more GRF IDs + MD5sums in the PACKET_UDP_SERVER_RESPONSE, due
* to the limited size of UDP packets.
* This is currently 64. Two are used for configuration and sound.
*/
NETWORK_MAX_GRF_COUNT = 55,
NETWORK_MAX_GRF_COUNT = 62,
NETWORK_NUM_LANGUAGES = 29, ///< Number of known languages (to the network protocol) + 1 for 'any'.
/**
+3
View File
@@ -221,6 +221,9 @@ void NetworkUDPSocketHandler::Recv_NetworkGameInfo(Packet *p, NetworkGameInfo *i
uint i;
uint num_grfs = p->Recv_uint8();
/* Broken/bad data. It cannot have that many NewGRFs. */
if (num_grfs > NETWORK_MAX_GRF_COUNT) return;
for (i = 0; i < num_grfs; i++) {
GRFConfig *c = CallocT<GRFConfig>(1);
this->Recv_GRFIdentifier(p, c);
+2 -2
View File
@@ -519,7 +519,7 @@ void NetworkUDPRemoveAdvertise()
/* check for socket */
if (!_udp_master_socket->IsConnected()) {
if (!_udp_master_socket->Listen(0, 0, false)) return;
if (!_udp_master_socket->Listen(_network_server_bind_ip, 0, false)) return;
}
DEBUG(net, 1, "[udp] removing advertise from master server");
@@ -549,7 +549,7 @@ void NetworkUDPAdvertise()
/* check for socket */
if (!_udp_master_socket->IsConnected()) {
if (!_udp_master_socket->Listen(0, 0, false)) return;
if (!_udp_master_socket->Listen(_network_server_bind_ip, 0, false)) return;
}
if (_network_need_advertise) {
+3 -1
View File
@@ -175,5 +175,7 @@ uint16 GetAiPurchaseCallbackResult(uint8 feature, CargoID cargo_type, uint8 defa
object.u.generic.count = count;
object.u.generic.station_size = station_size;
return GetGenericCallbackResult(feature, &object, file);
uint16 callback = GetGenericCallbackResult(feature, &object, file);
if (callback != CALLBACK_FAILED) callback = GB(callback, 0, 8);
return callback;
}
+3 -1
View File
@@ -521,7 +521,7 @@ bool NewHouseTileLoop(TileIndex tile)
/* Check callback 21, which determines if a house should be destroyed. */
if (HasBit(hs->callback_mask, CBM_HOUSE_DESTRUCTION)) {
uint16 callback_res = GetHouseCallback(CBID_HOUSE_DESTRUCTION, 0, 0, GetHouseType(tile), GetTownByTile(tile), tile);
if (callback_res != CALLBACK_FAILED && callback_res > 0) {
if (callback_res != CALLBACK_FAILED && GB(callback_res, 0, 8) > 0) {
ClearTownHouse(GetTownByTile(tile), tile);
return false;
}
@@ -541,6 +541,8 @@ static void DoTriggerHouse(TileIndex tile, HouseTrigger trigger, byte base_rando
HouseID hid = GetHouseType(tile);
HouseSpec *hs = GetHouseSpecs(hid);
if (hs->spritegroup == NULL) return;
NewHouseResolver(&object, hid, tile, GetTownByTile(tile));
object.callback = CBID_RANDOM_TRIGGER;
+3 -1
View File
@@ -275,7 +275,7 @@ bool PerformIndustryTileSlopeCheck(TileIndex ind_base_tile, TileIndex ind_tile,
return !IsSlopeRefused(GetTileSlope(ind_tile, NULL), its->slopes_refused);
}
if (its->grf_prop.grffile->grf_version < 7) {
return (callback_res & 0xFF) != 0; // mask to 8 bit callback result
return callback_res != 0;
}
/* Copy some parameters from the registers to the error message text ref. stack */
@@ -403,6 +403,8 @@ static void DoTriggerIndustryTile(TileIndex tile, IndustryTileTrigger trigger, I
IndustryGfx gfx = GetIndustryGfx(tile);
const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
if (itspec->grf_prop.spritegroup == NULL) return;
NewIndustryTileResolver(&object, gfx, tile, ind);
object.callback = CBID_RANDOM_TRIGGER;
+1 -40
View File
@@ -80,37 +80,6 @@ void InitializeSpriteGroupPool()
TemporaryStorageArray<uint32, 0x110> _temp_store;
static inline bool Is8BitCallback(const ResolverObject *object)
{
/* Var 0x7E procedure results are always 15 bit */
if (object == NULL || object->procedure_call) return false;
switch (object->callback) {
/* All these functions are 15 bit callbacks */
case CBID_STATION_SPRITE_LAYOUT:
case CBID_VEHICLE_REFIT_CAPACITY:
case CBID_HOUSE_COLOUR:
case CBID_HOUSE_CARGO_ACCEPTANCE:
case CBID_INDUSTRY_LOCATION:
case CBID_HOUSE_ACCEPT_CARGO:
case CBID_INDTILE_CARGO_ACCEPTANCE:
case CBID_INDTILE_ACCEPT_CARGO:
case CBID_VEHICLE_COLOUR_MAPPING:
case CBID_HOUSE_PRODUCE_CARGO:
case CBID_INDTILE_SHAPE_CHECK: // depends on grf version, masked to 8 bit in PerformIndustryTileSlopeCheck() if needed
case CBID_VEHICLE_SOUND_EFFECT:
case CBID_VEHICLE_MODIFY_PROPERTY: // depends on queried property
case CBID_CARGO_PROFIT_CALC:
case CBID_SOUNDS_AMBIENT_EFFECT:
case CBID_CARGO_STATION_RATING_CALC:
return false;
/* The rest is a 8 bit callback, which should be truncated properly */
default:
return true;
}
}
static inline uint32 GetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
{
/* First handle variables common with Action7/9/D */
@@ -236,7 +205,7 @@ static inline const SpriteGroup *ResolveVariable(const SpriteGroup *group, Resol
if (group->g.determ.num_ranges == 0) {
/* nvar == 0 is a special case -- we turn our value into a callback result */
nvarzero.type = SGT_CALLBACK;
nvarzero.g.callback.result = GB(value, 0, Is8BitCallback(object) ? 8 : 15);
nvarzero.g.callback.result = value;
return &nvarzero;
}
@@ -294,14 +263,6 @@ const SpriteGroup *Resolve(const SpriteGroup *group, ResolverObject *object)
case SGT_REAL: return object->ResolveReal(object, group);
case SGT_DETERMINISTIC: return ResolveVariable(group, object);
case SGT_RANDOMIZED: return ResolveRandom(group, object);
case SGT_CALLBACK: {
if (!Is8BitCallback(object)) return group;
static SpriteGroup result8bit;
result8bit.type = SGT_CALLBACK;
result8bit.g.callback.result = GB(group->g.callback.result, 0, 8);
return &result8bit;
}
default: return group;
}
}
+13 -2
View File
@@ -665,7 +665,7 @@ int AllocateSpecToStation(const StationSpec *statspec, Station *st, bool exec)
{
uint i;
if (statspec == NULL) return 0;
if (statspec == NULL || st == NULL) return 0;
/* Check if this spec has already been allocated */
for (i = 1; i < st->num_specs && i < MAX_SPECLIST; i++) {
@@ -753,7 +753,7 @@ bool DrawStationTile(int x, int y, RailType railtype, Axis axis, StationClassID
const RailtypeInfo *rti = GetRailTypeInfo(railtype);
SpriteID relocation;
SpriteID image;
SpriteID pal = PLAYER_SPRITE_COLOR(_local_player);
SpriteID palette = PLAYER_SPRITE_COLOR(_local_player);
uint tile = 2;
statspec = GetCustomStationSpec(sclass, station);
@@ -791,6 +791,17 @@ bool DrawStationTile(int x, int y, RailType railtype, Axis axis, StationClassID
image += relocation;
}
SpriteID pal;
if (HasBit(image, PALETTE_MODIFIER_TRANSPARENT) || HasBit(image, PALETTE_MODIFIER_COLOR)) {
if (seq->image.pal > 0) {
pal = seq->image.pal;
} else {
pal = palette;
}
} else {
pal = PAL_NONE;
}
if ((byte)seq->delta_z != 0x80) {
pt = RemapCoords(seq->delta_x, seq->delta_y, seq->delta_z);
DrawSprite(image, pal, x + pt.x, y + pt.y);
+1 -1
View File
@@ -642,7 +642,7 @@ uint RemapNewGRFStringControlCode(uint scc, char **buff, const char **str, int64
case SCC_NEWGRF_PRINT_SIGNED_WORD:
case SCC_NEWGRF_PRINT_SIGNED_BYTE:
case SCC_NEWGRF_PRINT_UNSIGNED_WORD:
return SCC_NUM;
return SCC_COMMA;
case SCC_NEWGRF_PRINT_DWORD_CURRENCY:
case SCC_NEWGRF_PRINT_QWORD_CURRENCY:
+1
View File
@@ -1022,6 +1022,7 @@ void DeleteVehicleNews(VehicleID vid, StringID news)
if (_total_news == 0) {
assert(_latest_news == _oldest_news);
_latest_news = INVALID_NEWS;
_current_news = INVALID_NEWS;
}
/* Since we only imitate a FIFO removing an arbitrary element does need
+43 -12
View File
@@ -339,6 +339,18 @@ static void FixOldVehicles()
ClrBit(v->u.road.state, RVS_IS_STOPPING);
}
/* The subtype should be 0, but it sometimes isn't :( */
if (v->type == VEH_ROAD) v->subtype = 0;
/* Sometimes primary vehicles would have a nothing (invalid) order
* or vehicles that could not have an order would still have a
* (loading) order which causes assertions and the like later on.
*/
if (!IsPlayerBuildableVehicleType(v) ||
(v->IsPrimaryVehicle() && v->current_order.type == OT_NOTHING)) {
v->current_order.type = OT_DUMMY;
}
FOR_ALL_VEHICLES_FROM(u, v->index + 1) {
/* If a vehicle has the same orders, add the link to eachother
* in both vehicles */
@@ -1099,17 +1111,15 @@ static bool LoadOldVehicleUnion(LoadgameState *ls, int num)
uint temp = ls->total_read;
bool res;
/* We changed the offset of the vehicle types, so fix it
* Basically v->type -= 0x10; would suffice, but play safely */
switch (v->type) {
default: NOT_REACHED();
case 0x00 /*VEH_INVALID */: v = new (v) InvalidVehicle(); res = LoadChunk(ls, NULL, vehicle_empty_chunk); break;
case 0x10 /*VEH_TRAIN */: v = new (v) Train(); res = LoadChunk(ls, &v->u.rail, vehicle_train_chunk); break;
case 0x11 /*VEH_ROAD */: v = new (v) RoadVehicle(); res = LoadChunk(ls, &v->u.road, vehicle_road_chunk); break;
case 0x12 /*VEH_SHIP */: v = new (v) Ship(); res = LoadChunk(ls, &v->u.ship, vehicle_ship_chunk); break;
case 0x13 /*VEH_AIRCRAFT*/: v = new (v) Aircraft(); res = LoadChunk(ls, &v->u.air, vehicle_air_chunk); break;
case 0x14 /*VEH_SPECIAL */: v = new (v) SpecialVehicle(); res = LoadChunk(ls, &v->u.special, vehicle_special_chunk); break;
case 0x15 /*VEH_DISASTER*/: v = new (v) DisasterVehicle(); res = LoadChunk(ls, &v->u.disaster, vehicle_disaster_chunk); break;
case VEH_INVALID : res = LoadChunk(ls, NULL, vehicle_empty_chunk); break;
case VEH_TRAIN : res = LoadChunk(ls, &v->u.rail, vehicle_train_chunk); break;
case VEH_ROAD : res = LoadChunk(ls, &v->u.road, vehicle_road_chunk); break;
case VEH_SHIP : res = LoadChunk(ls, &v->u.ship, vehicle_ship_chunk); break;
case VEH_AIRCRAFT: res = LoadChunk(ls, &v->u.air, vehicle_air_chunk); break;
case VEH_SPECIAL : res = LoadChunk(ls, &v->u.special, vehicle_special_chunk); break;
case VEH_DISASTER: res = LoadChunk(ls, &v->u.disaster, vehicle_disaster_chunk); break;
}
/* This chunk size should always be 10 bytes */
@@ -1124,7 +1134,6 @@ static bool LoadOldVehicleUnion(LoadgameState *ls, int num)
static uint16 _cargo_count;
static const OldChunks vehicle_chunk[] = {
OCL_SVAR( OC_UINT8, Vehicle, type ),
OCL_SVAR( OC_UINT8, Vehicle, subtype ),
OCL_NULL( 2 ), ///< Hash, calculated automatically
@@ -1213,7 +1222,18 @@ bool LoadOldVehicle(LoadgameState *ls, int num)
for (i = 0; i < _old_vehicle_multiplier; i++) {
_current_vehicle_id = num * _old_vehicle_multiplier + i;
Vehicle *v = new (_current_vehicle_id) InvalidVehicle();
/* Read the vehicle type and allocate the right vehicle */
Vehicle *v;
switch (ReadByte(ls)) {
default: NOT_REACHED();
case 0x00 /*VEH_INVALID */: v = new (_current_vehicle_id) InvalidVehicle(); break;
case 0x10 /*VEH_TRAIN */: v = new (_current_vehicle_id) Train(); break;
case 0x11 /*VEH_ROAD */: v = new (_current_vehicle_id) RoadVehicle(); break;
case 0x12 /*VEH_SHIP */: v = new (_current_vehicle_id) Ship(); break;
case 0x13 /*VEH_AIRCRAFT*/: v = new (_current_vehicle_id) Aircraft(); break;
case 0x14 /*VEH_SPECIAL */: v = new (_current_vehicle_id) SpecialVehicle(); break;
case 0x15 /*VEH_DISASTER*/: v = new (_current_vehicle_id) DisasterVehicle(); break;
}
if (!LoadChunk(ls, v, vehicle_chunk)) return false;
/* This should be consistent, else we have a big problem... */
@@ -1223,7 +1243,12 @@ bool LoadOldVehicle(LoadgameState *ls, int num)
}
if (_old_order_ptr != 0 && _old_order_ptr != 0xFFFFFFFF) {
v->orders = GetOrder(REMAP_ORDER_IDX(_old_order_ptr));
uint old_id = REMAP_ORDER_IDX(_old_order_ptr);
/* There is a maximum of 5000 orders in old savegames, so *if*
* we go over that limit something is very wrong. In that case
* we just assume there are no orders for the vehicle.
*/
if (old_id < 5000) v->orders = GetOrder(old_id);
}
AssignOrder(&v->current_order, UnpackOldOrder(_old_order));
@@ -1669,6 +1694,12 @@ bool LoadOldSaveGame(const char *file)
fclose(ls.file);
/* Some old TTDP savegames could have buoys at tile 0
* (without assigned station struct)
* MakeWater() can be used as long as sea has the same
* format as old savegames (eg. everything is zeroed) */
MakeWater(0);
_pause_game = 2;
return true;
+22
View File
@@ -317,6 +317,28 @@ protected:
{
return Tpool->CleaningPool();
}
public:
/**
* Check whether we can allocate an item in this pool. This to prevent the
* need to actually construct the object and then destructing it again,
* which could be *very* costly.
* @return true if and only if at least ONE item can be allocated.
*/
static inline bool CanAllocateItem()
{
uint last_minus_one = Tpool->GetSize() - 1;
for (T *t = Tpool->Get(Tpool->first_free_index); t != NULL; t = (t->index < last_minus_one) ? Tpool->Get(t->index + 1U) : NULL) {
if (!t->IsValid()) return true;
Tpool->first_free_index = t->index;
}
/* Check if we can add a block to the pool */
if (Tpool->AddBlockToPool()) return CanAllocateItem();
return false;
}
};
+17 -2
View File
@@ -2402,13 +2402,13 @@ bool AfterLoadGame()
}
/* Convert old PF settings to new */
if (_patches.yapf.rail_use_yapf) {
if (_patches.yapf.rail_use_yapf || CheckSavegameVersion(28)) {
_patches.pathfinder_for_trains = VPF_YAPF;
} else {
_patches.pathfinder_for_trains = (_patches.new_pathfinding_all ? VPF_NPF : VPF_NTP);
}
if (_patches.yapf.road_use_yapf) {
if (_patches.yapf.road_use_yapf || CheckSavegameVersion(28)) {
_patches.pathfinder_for_roadvehs = VPF_YAPF;
} else {
_patches.pathfinder_for_roadvehs = (_patches.new_pathfinding_all ? VPF_NPF : VPF_OPF);
@@ -2440,6 +2440,21 @@ bool AfterLoadGame()
}
}
if (CheckSavegameVersion(62)) {
/* Remove all trams from savegames without tram support.
* There would be trams without tram track under causing crashes sooner or later. */
Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_ROAD && v->First() == v &&
HasBit(EngInfo(v->engine_type)->misc_flags, EF_ROAD_TRAM)) {
if (_switch_mode_errorstr == INVALID_STRING_ID || _switch_mode_errorstr == STR_NEWGRF_COMPATIBLE_LOAD_WARNING) {
_switch_mode_errorstr = STR_LOADGAME_REMOVED_TRAMS;
}
delete v;
}
}
}
return InitializeWindowsAndCaches();
}
+5 -5
View File
@@ -66,8 +66,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,6,0,@@REVISION@@
PRODUCTVERSION 0,6,0,@@REVISION@@
FILEVERSION 0,6,1,12908
PRODUCTVERSION 0,6,1,12908
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -85,14 +85,14 @@ BEGIN
VALUE "Comments", "This program is licensed under the GNU General Public License.\0"
VALUE "CompanyName", "OpenTTD Development Team\0"
VALUE "FileDescription", "OpenTTD\0"
VALUE "FileVersion", "Development @@VERSION@@\0"
VALUE "FileVersion", "0.6.1-RC1\0"
VALUE "InternalName", "openttd\0"
VALUE "LegalCopyright", "Copyright © OpenTTD Developers 2002-2007. All Rights Reserved.\0"
VALUE "LegalCopyright", "Copyright © OpenTTD Developers 2002-2008. All Rights Reserved.\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "openttd.exe\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "OpenTTD\0"
VALUE "ProductVersion", "Development @@VERSION@@\0"
VALUE "ProductVersion", "0.6.1-RC1\0"
VALUE "SpecialBuild", "-\0"
END
END
+6 -3
View File
@@ -453,6 +453,8 @@ static Player *AllocatePlayer()
/* Find a free slot */
FOR_ALL_PLAYERS(p) {
if (!p->is_active) {
free(p->name);
free(p->president_name);
PlayerID i = p->index;
memset(p, 0, sizeof(Player));
memset(&_players_ai[i], 0, sizeof(PlayerAI));
@@ -670,6 +672,7 @@ CommandCost CmdSetAutoReplace(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
}
break;
case 1:
if (Clamp((int16)p2, -12, 12) != (int16)p2) return CMD_ERROR;
if (p->engine_renew_months == (int16)p2)
return CMD_ERROR;
@@ -682,6 +685,7 @@ CommandCost CmdSetAutoReplace(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
}
break;
case 2:
if (ClampU(p2, 0, 2000000) != p2) return CMD_ERROR;
if (p->engine_renew_money == (uint32)p2)
return CMD_ERROR;
@@ -730,6 +734,8 @@ CommandCost CmdSetAutoReplace(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
}
case 4:
if (Clamp((int16)GB(p1, 16, 16), -12, 12) != (int16)GB(p1, 16, 16)) return CMD_ERROR;
if (ClampU(p2, 0, 2000000) != p2) return CMD_ERROR;
if (flags & DC_EXEC) {
p->engine_renew = HasBit(p1, 15);
p->engine_renew_months = (int16)GB(p1, 16, 16);
@@ -908,9 +914,6 @@ CommandCost CmdPlayerCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
ChangeOwnershipOfPlayerItems(p->index, PLAYER_SPECTATOR);
p->is_active = false;
}
RemoveAllEngineReplacementForPlayer(p);
RemoveAllGroupsForPlayer(p->index);
} break;
case 3: { /* Merge a company (#1) into another company (#2), elimination company #1 */
+2 -6
View File
@@ -30,7 +30,6 @@
#include "newgrf_callbacks.h"
#include "newgrf_station.h"
#include "train.h"
#include "misc/autoptr.hpp"
#include "variables.h"
#include "autoslope.h"
#include "transparency.h"
@@ -763,12 +762,10 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p
if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
Depot *d = new Depot(tile);
if (d == NULL) return CMD_ERROR;
AutoPtrT<Depot> d_auto_delete = d;
if (!Depot::CanAllocateItem()) return CMD_ERROR;
if (flags & DC_EXEC) {
Depot *d = new Depot(tile);
MakeRailDepot(tile, _current_player, dir, (RailType)p1);
MarkTileDirtyByTile(tile);
@@ -776,7 +773,6 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p
AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_player);
YapfNotifyTrackLayoutChange(tile, TrackdirToTrack(DiagdirToDiagTrackdir(dir)));
d_auto_delete.Detach();
}
return cost.AddCost(_price.build_train_depot);
+15 -7
View File
@@ -583,7 +583,7 @@ static void BuildRailToolbWndProc(Window *w, WindowEvent *e)
case WE_PLACE_DRAG: {
/* no dragging if you have pressed the convert button */
if (_convert_signal_button && w->IsWidgetLowered(RTW_BUILD_SIGNALS)) return;
if (FindWindowById(WC_BUILD_SIGNAL, 0) != NULL && _convert_signal_button && w->IsWidgetLowered(RTW_BUILD_SIGNALS)) return;
VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);
return;
@@ -932,7 +932,7 @@ static void StationBuildWndProc(Window *w, WindowEvent *e)
const StationSpec *statspec = GetCustomStationSpec(_railstation.station_class, i);
if (statspec != NULL && statspec->name != 0) {
if (HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) {
if (HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) {
GfxFillRect(8, y - 2, 127, y + 10, (1 << PALETTE_MODIFIER_GREYOUT));
}
@@ -1077,7 +1077,7 @@ static void StationBuildWndProc(Window *w, WindowEvent *e)
statspec = GetCustomStationSpec(_railstation.station_class, y);
if (statspec != NULL &&
HasBit(statspec->callbackmask, CBM_STATION_AVAIL) &&
GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) return;
GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) return;
_railstation.station_type = y;
@@ -1310,11 +1310,19 @@ static void SignalBuildWndProc(Window *w, WindowEvent *e)
break;
case BSW_DRAG_SIGNALS_DENSITY_DECREASE:
if (_patches.drag_signals_density > 1) _patches.drag_signals_density--;
if (_patches.drag_signals_density > 1) {
_patches.drag_signals_density--;
const Window *w = FindWindowById(WC_GAME_OPTIONS, 0);
if (w != NULL) SetWindowDirty(w);
}
break;
case BSW_DRAG_SIGNALS_DENSITY_INCREASE:
if (_patches.drag_signals_density < 20) _patches.drag_signals_density++;
if (_patches.drag_signals_density < 20) {
_patches.drag_signals_density++;
const Window *w = FindWindowById(WC_GAME_OPTIONS, 0);
if (w != NULL) SetWindowDirty(w);
}
break;
default: break;
@@ -1487,7 +1495,7 @@ static void BuildWaypointWndProc(Window *w, WindowEvent *e)
if (statspec != NULL &&
HasBit(statspec->callbackmask, CBM_STATION_AVAIL) &&
GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) {
GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) {
GfxFillRect(4 + i * 68, 18, 67 + i * 68, 75, (1 << PALETTE_MODIFIER_GREYOUT));
}
}
@@ -1507,7 +1515,7 @@ static void BuildWaypointWndProc(Window *w, WindowEvent *e)
const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, type);
if (statspec != NULL &&
HasBit(statspec->callbackmask, CBM_STATION_AVAIL) &&
GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) return;
GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) return;
_cur_waypoint_type = type;
SndPlayFx(SND_15_BEEP);
+3 -3
View File
@@ -19,7 +19,7 @@
* norev000 is for non-releases that are made on systems without
* subversion or sources that are not a checkout of subversion.
*/
extern const char _openttd_revision[] = "@@VERSION@@";
extern const char _openttd_revision[] = "0.6.1-RC1";
/**
* The NewGRF revision of OTTD:
@@ -34,11 +34,11 @@ extern const char _openttd_revision[] = "@@VERSION@@";
* final release will always have a lower version number than the released
* version, thus making comparisions on specific revisions easy.
*/
uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 0 << 20 | 0 << 19 | (@@REVISION@@ & ((1 << 19) - 1));
uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 1 << 20 | 0 << 19 | (12907 & ((1 << 19) - 1));
#ifdef __MORPHOS__
/**
* Variable used by MorphOS to show the version.
*/
extern const char morphos_versions_tag[] = "\\0$VER: OpenTTD @@VERSION@@ (@@DATE@@) OpenTTD Team [MorphOS, PowerPC]";
extern const char morphos_versions_tag[] = "\\0$VER: OpenTTD 0.6.1-RC1 (@@DATE@@) OpenTTD Team [MorphOS, PowerPC]";
#endif
+10 -12
View File
@@ -22,7 +22,6 @@
#include "newgrf.h"
#include "station_map.h"
#include "tunnel_map.h"
#include "misc/autoptr.hpp"
#include "variables.h"
#include "autoslope.h"
#include "transparency.h"
@@ -104,7 +103,7 @@ static bool CheckAllowRemoveRoad(TileIndex tile, RoadBits remove, bool *edge_roa
* @param rt roadtype to remove
* @param crossing_check should we check if there is a tram track when we are removing road from crossing?
*/
static CommandCost RemoveRoad(TileIndex tile, uint32 flags, RoadBits pieces, RoadType rt, bool crossing_check)
static CommandCost RemoveRoad(TileIndex tile, uint32 flags, RoadBits pieces, RoadType rt, bool crossing_check, bool town_check = true)
{
/* cost for removing inner/edge -roads */
static const uint16 road_remove_cost[2] = {50, 18};
@@ -142,7 +141,7 @@ static CommandCost RemoveRoad(TileIndex tile, uint32 flags, RoadBits pieces, Roa
/* check if you're allowed to remove the street owned by a town
* removal allowance depends on difficulty setting */
if (!CheckforTownRating(flags, t, ROAD_REMOVE)) return CMD_ERROR;
if (town_check && !CheckforTownRating(flags, t, ROAD_REMOVE)) return CMD_ERROR;
if (!IsTileType(tile, MP_ROAD)) {
/* If it's the last roadtype, just clear the whole tile */
@@ -193,7 +192,7 @@ static CommandCost RemoveRoad(TileIndex tile, uint32 flags, RoadBits pieces, Roa
c &= present;
if (c == ROAD_NONE) return CMD_ERROR;
ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
if (town_check) ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
if (flags & DC_EXEC) {
present ^= c;
if (present == ROAD_NONE) {
@@ -228,7 +227,7 @@ static CommandCost RemoveRoad(TileIndex tile, uint32 flags, RoadBits pieces, Roa
if (rt == ROADTYPE_ROAD && HasTileRoadType(tile, ROADTYPE_TRAM) && (flags & DC_EXEC || crossing_check)) return CMD_ERROR;
if (rt == ROADTYPE_ROAD) {
ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
if (town_check) ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
}
if (flags & DC_EXEC) {
@@ -757,7 +756,7 @@ CommandCost CmdRemoveLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint3
_additional_cash_required = DoCommand(end_tile, start_tile, p2, flags & ~DC_EXEC, CMD_REMOVE_LONG_ROAD).GetCost();
return cost;
}
RemoveRoad(tile, flags, bits, rt, true);
RemoveRoad(tile, flags, bits, rt, true, false);
}
cost.AddCost(ret);
}
@@ -805,16 +804,14 @@ CommandCost CmdBuildRoadDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
Depot *dep = new Depot(tile);
if (dep == NULL) return CMD_ERROR;
AutoPtrT<Depot> d_auto_delete = dep;
if (!Depot::CanAllocateItem()) return CMD_ERROR;
if (flags & DC_EXEC) {
Depot *dep = new Depot(tile);
dep->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
MakeRoadDepot(tile, _current_player, dir, rt);
MarkTileDirtyByTile(tile);
d_auto_delete.Detach();
}
return cost.AddCost(_price.build_road_depot);
}
@@ -868,13 +865,14 @@ static CommandCost ClearTile_Road(TileIndex tile, byte flags)
/* Must iterate over the roadtypes in a reverse manner because
* tram tracks must be removed before the road bits. */
for (RoadType rt = ROADTYPE_HWAY; rt >= ROADTYPE_ROAD; rt--) {
RoadType rt = ROADTYPE_HWAY;
do {
if (HasBit(rts, rt)) {
CommandCost tmp_ret = RemoveRoad(tile, flags, GetCrossingRoadBits(tile), rt, false);
if (CmdFailed(tmp_ret)) return tmp_ret;
ret.AddCost(tmp_ret);
}
}
} while (rt-- != ROADTYPE_ROAD);
if (flags & DC_EXEC) {
DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
+6 -8
View File
@@ -292,19 +292,16 @@ CommandCost CmdBuildRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
*/
CommandCost CmdStartStopRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v;
uint16 callback;
if (!IsValidVehicleID(p1)) return CMD_ERROR;
v = GetVehicle(p1);
Vehicle *v = GetVehicle(p1);
if (v->type != VEH_ROAD || !CheckOwnership(v->owner)) return CMD_ERROR;
/* Check if this road veh can be started/stopped. The callback will fail or
* return 0xFF if it can. */
callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v);
if (callback != CALLBACK_FAILED && callback != 0xFF) {
uint16 callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v);
if (callback != CALLBACK_FAILED && GB(callback, 0, 8) != 0xFF) {
StringID error = GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + callback);
return_cmd_error(error);
}
@@ -790,7 +787,8 @@ static void ProcessRoadVehOrder(Vehicle *v)
if (order->type == v->current_order.type &&
order->flags == v->current_order.flags &&
order->dest == v->current_order.dest) {
order->dest == v->current_order.dest &&
v->dest_tile != 0) {
return;
}
@@ -1940,7 +1938,7 @@ static void RoadVehController(Vehicle *v)
HandleBrokenRoadVeh(v);
return;
}
v->breakdown_ctr--;
if (v->current_order.type != OT_LOADING) v->breakdown_ctr--;
}
if (v->vehstatus & VS_STOPPED) return;
+14 -14
View File
@@ -76,13 +76,24 @@ static struct {
enum NeedLengthValues {NL_NONE = 0, NL_WANTLENGTH = 1, NL_CALCLENGTH = 2};
/** Error handler, calls longjmp to simulate an exception.
* @todo this was used to have a central place to handle errors, but it is
* pretty ugly, and seriously interferes with any multithreaded approaches */
static void NORETURN SlError(StringID string, const char *extra_msg = NULL)
{
_sl.error_str = string;
free(_sl.extra_msg);
_sl.extra_msg = (extra_msg == NULL) ? NULL : strdup(extra_msg);
throw std::exception();
}
/**
* Fill the input buffer by reading from the file with the given reader
*/
static void SlReadFill()
{
uint len = _sl.read_bytes();
assert(len != 0);
if (len == 0) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Unexpected end of chunk");
_sl.bufp = _sl.buf;
_sl.bufe = _sl.buf + len;
@@ -137,17 +148,6 @@ static void SlWriteFill()
_sl.bufe = _sl.buf + _sl.bufsize;
}
/** Error handler, calls longjmp to simulate an exception.
* @todo this was used to have a central place to handle errors, but it is
* pretty ugly, and seriously interferes with any multithreaded approaches */
static void NORETURN SlError(StringID string, const char *extra_msg = NULL)
{
_sl.error_str = string;
free(_sl.extra_msg);
_sl.extra_msg = (extra_msg == NULL) ? NULL : strdup(extra_msg);
throw std::exception();
}
/** Read in a single byte from file. If the temporary buffer is full,
* flush it to its final destination
* @return return the read byte from file
@@ -1524,7 +1524,7 @@ static SaveOrLoadResult SaveFileToDisk(bool threaded)
uint i;
uint count = 1 << Savegame_POOL_BLOCK_SIZE_BITS;
assert(_ts.count == _sl.offs_base);
if (_ts.count != _sl.offs_base) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Unexpected size of chunk");
for (i = 0; i != _Savegame_pool.GetBlockCount() - 1; i++) {
_sl.buf = _Savegame_pool.blocks[i];
fmt->writer(count);
@@ -1537,7 +1537,7 @@ static SaveOrLoadResult SaveFileToDisk(bool threaded)
}
fmt->uninit_write();
assert(_ts.count == _sl.offs_base);
if (_ts.count != _sl.offs_base) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Unexpected size of chunk");
GetSavegameFormat("memory")->uninit_write(); // clean the memorypool
fclose(_sl.fh);
+41 -1
View File
@@ -1206,6 +1206,15 @@ static int32 RealisticAccelerationChanged(int32 p1)
return 0;
}
static int32 DragSignalsDensityChanged(int32)
{
const Window *w = FindWindowById(WC_BUILD_SIGNAL, 0);
if (w != NULL) SetWindowDirty(w);
return 0;
}
/**
* Check for right TownLayout usage in editor mode.
* The No Road mode is not desirable since towns have to be
@@ -1400,7 +1409,7 @@ const SettingDesc _patch_settings[] = {
SDT_BOOL(Patches, signal_side, N,NN, true, STR_CONFIG_PATCHES_SIGNALSIDE, RedrawScreen),
SDT_BOOL(Patches, always_small_airport, 0,NN, false, STR_CONFIG_PATCHES_SMALL_AIRPORTS, NULL),
SDT_BOOL(Patches, enable_signal_gui, S, 0, false, STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI, NULL),
SDT_VAR(Patches, drag_signals_density,SLE_UINT8,S, 0, 4, 1, 20, 0, STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY,NULL),
SDT_VAR(Patches, drag_signals_density,SLE_UINT8,S, 0, 4, 1, 20, 0, STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY,DragSignalsDensityChanged),
SDT_VAR(Patches, semaphore_build_before,SLE_INT32, S, NC, 1975, MIN_YEAR, MAX_YEAR, 1, STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE, NULL),
SDT_CONDVAR(Patches, town_layout, SLE_UINT8, 59, SL_MAX_VERSION, 0, MS, TL_ORIGINAL, TL_NO_ROADS, NUM_TLS - 1, 1, STR_CONFIG_PATCHES_TOWN_LAYOUT, CheckTownLayout),
@@ -1750,6 +1759,36 @@ static void NewsDisplaySaveConfig(IniFile *ini, const char *grpname, uint news_d
}
}
/**
* Save the version of OpenTTD to the ini file.
* @param ini the ini to write to
*/
static void SaveVersionInConfig(IniFile *ini)
{
extern const char _openttd_revision[];
extern uint32 _openttd_newgrf_version;
IniGroup *group = ini_getgroup(ini, "version", -1);
if (group == NULL) return;
group->item = NULL;
IniItem **item = &group->item;
char version[9];
snprintf(version, lengthof(version), "%08X", _openttd_newgrf_version);
const char *versions[][2] = {
{ "version_string", _openttd_revision },
{ "version_number", version }
};
for (uint i = 0; i < lengthof(versions); i++) {
*item = ini_item_alloc(group, versions[i][0], strlen(versions[i][0]));
(*item)->value = (char*)pool_strdup(&ini->pool, versions[i][1], strlen(versions[i][1]));
item = &(*item)->next;
}
}
/* Save a GRF configuration to the given group name */
static void GRFSaveConfig(IniFile *ini, const char *grpname, const GRFConfig *list)
{
@@ -1814,6 +1853,7 @@ void SaveToConfig()
GRFSaveConfig(ini, "newgrf", _grfconfig_newgame);
GRFSaveConfig(ini, "newgrf-static", _grfconfig_static);
NewsDisplaySaveConfig(ini, "news_display", _news_display_opt);
SaveVersionInConfig(ini);
ini_save(_config_file, ini);
ini_free(ini);
}
+4 -8
View File
@@ -27,7 +27,6 @@
#include "newgrf_text.h"
#include "newgrf_sound.h"
#include "spritecache.h"
#include "misc/autoptr.hpp"
#include "strings_func.h"
#include "functions.h"
#include "window_func.h"
@@ -647,7 +646,7 @@ static void ShipController(Vehicle *v)
HandleBrokenShip(v);
return;
}
v->breakdown_ctr--;
if (v->current_order.type != OT_LOADING) v->breakdown_ctr--;
}
if (v->vehstatus & VS_STOPPED) return;
@@ -936,19 +935,16 @@ CommandCost CmdSellShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
*/
CommandCost CmdStartStopShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v;
uint16 callback;
if (!IsValidVehicleID(p1)) return CMD_ERROR;
v = GetVehicle(p1);
Vehicle *v = GetVehicle(p1);
if (v->type != VEH_SHIP || !CheckOwnership(v->owner)) return CMD_ERROR;
/* Check if this ship can be started/stopped. The callback will fail or
* return 0xFF if it can. */
callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v);
if (callback != CALLBACK_FAILED && callback != 0xFF) {
uint16 callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v);
if (callback != CALLBACK_FAILED && GB(callback, 0, 8) != 0xFF) {
StringID error = GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + callback);
return_cmd_error(error);
}
+2 -5
View File
@@ -10,7 +10,6 @@
#include "saveload.h"
#include "command_func.h"
#include "variables.h"
#include "misc/autoptr.hpp"
#include "strings_func.h"
#include "viewport_func.h"
#include "zoom_func.h"
@@ -97,12 +96,11 @@ static void MarkSignDirty(Sign *si)
CommandCost CmdPlaceSign(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
/* Try to locate a new sign */
Sign *si = new Sign(_current_player);
if (si == NULL) return_cmd_error(STR_2808_TOO_MANY_SIGNS);
AutoPtrT<Sign> s_auto_delete = si;
if (!Sign::CanAllocateItem()) return_cmd_error(STR_2808_TOO_MANY_SIGNS);
/* When we execute, really make the sign */
if (flags & DC_EXEC) {
Sign *si = new Sign(_current_player);
int x = TileX(tile) * TILE_SIZE;
int y = TileY(tile) * TILE_SIZE;
@@ -115,7 +113,6 @@ CommandCost CmdPlaceSign(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
_sign_sort_dirty = true;
_new_sign_id = si->index;
_total_signs++;
s_auto_delete.Detach();
}
return CommandCost();
+1 -1
View File
@@ -59,7 +59,7 @@ const char *SoundDriver_Win32::Start(const char* const* parm)
wfex.nBlockAlign = (wfex.nChannels * wfex.wBitsPerSample) / 8;
wfex.nAvgBytesPerSec = wfex.nSamplesPerSec * wfex.nBlockAlign;
_bufsize = GetDriverParamInt(parm, "bufsize", 1024);
_bufsize = GetDriverParamInt(parm, "bufsize", (GB(GetVersion(), 0, 8) > 5) ? 2048 : 1024);
if (waveOutOpen(&_waveout, WAVE_MAPPER, &wfex, (DWORD_PTR)&waveOutProc, 0, CALLBACK_FUNCTION) != MMSYSERR_NOERROR)
return "waveOutOpen failed";
+4 -15
View File
@@ -9,7 +9,6 @@
#include "../fileio.h"
#include "../debug.h"
#include "../core/alloc_func.hpp"
#include "../core/endian_func.hpp"
#include "png.hpp"
#include <png.h>
@@ -126,18 +125,8 @@ static bool LoadPNG(SpriteLoader::Sprite *sprite, const char *filename, uint32 i
color_type = PNG_COLOR_TYPE_RGB;
}
#ifdef TTD_LITTLE_ENDIAN
png_set_bgr(png_ptr);
#else
if (color_type == PNG_COLOR_TYPE_RGB_ALPHA) png_set_swap_alpha(png_ptr);
#endif
if (color_type == PNG_COLOR_TYPE_RGB) {
#ifdef TTD_LITTLE_ENDIAN
png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
#else
png_set_filler(png_ptr, 0xff, PNG_FILLER_BEFORE);
#endif
}
pixelsize = sizeof(uint32);
@@ -159,16 +148,16 @@ static bool LoadPNG(SpriteLoader::Sprite *sprite, const char *filename, uint32 i
for (uint x = 0; x < info_ptr->width; x++) {
if (mask) {
if (row_pointer[x * sizeof(uint8)] != 0) {
dst[x].b = 0;
dst[x].g = 0;
dst[x].r = 0;
dst[x].g = 0;
dst[x].b = 0;
/* Alpha channel is used from the original image (to allow transparency in remap colors) */
dst[x].m = row_pointer[x * sizeof(uint8)];
}
} else {
dst[x].b = row_pointer[x * sizeof(uint32) + 0];
dst[x].r = row_pointer[x * sizeof(uint32) + 0];
dst[x].g = row_pointer[x * sizeof(uint32) + 1];
dst[x].r = row_pointer[x * sizeof(uint32) + 2];
dst[x].b = row_pointer[x * sizeof(uint32) + 2];
dst[x].a = row_pointer[x * sizeof(uint32) + 3];
dst[x].m = 0;
}
+57 -101
View File
@@ -27,7 +27,6 @@
#include "newgrf_callbacks.h"
#include "newgrf_station.h"
#include "yapf/yapf.h"
#include "misc/autoptr.hpp"
#include "road_type.h"
#include "road_internal.h" /* For drawing catenary/checking road removal */
#include "cargotype.h"
@@ -239,7 +238,7 @@ enum StationNaming {
STATIONNAMING_HELIPORT,
};
static bool GenerateStationName(Station *st, TileIndex tile, int flag)
static void GenerateStationName(Station *st, TileIndex tile, int flag)
{
static const uint32 _gen_station_name_bits[] = {
0, /* 0 */
@@ -344,7 +343,6 @@ static bool GenerateStationName(Station *st, TileIndex tile, int flag)
done:
st->string_id = found + STR_SV_STNAME;
return true;
}
#undef M
@@ -966,10 +964,6 @@ CommandCost CmdBuildRailroadStation(TileIndex tile_org, uint32 flags, uint32 p1,
/* See if there is a deleted station close to us. */
if (st == NULL) st = GetClosestStationFromTile(tile_org);
/* In case of new station if DC_EXEC is NOT set we still need to create the station
* to test if everything is OK. In this case we need to delete it before return. */
AutoPtrT<Station> st_auto_delete;
if (st != NULL) {
/* Reuse an existing station. */
if (st->owner != _current_player)
@@ -987,17 +981,17 @@ CommandCost CmdBuildRailroadStation(TileIndex tile_org, uint32 flags, uint32 p1,
if (!st->rect.BeforeAddRect(tile_org, w_org, h_org, StationRect::ADD_TEST)) return CMD_ERROR;
} else {
/* allocate and initialize new station */
st = new Station(tile_org);
if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
/* ensure that in case of error (or no DC_EXEC) the station gets deleted upon return */
st_auto_delete = st;
if (flags & DC_EXEC) {
st = new Station();
st->town = ClosestTownFromTile(tile_org, (uint)-1);
if (!GenerateStationName(st, tile_org, STATIONNAMING_RAIL)) return CMD_ERROR;
st->town = ClosestTownFromTile(tile_org, (uint)-1);
GenerateStationName(st, tile_org, STATIONNAMING_RAIL);
if (IsValidPlayer(_current_player) && (flags & DC_EXEC) != 0) {
SetBit(st->town->have_ratings, _current_player);
if (IsValidPlayer(_current_player)) {
SetBit(st->town->have_ratings, _current_player);
}
}
}
@@ -1018,7 +1012,7 @@ CommandCost CmdBuildRailroadStation(TileIndex tile_org, uint32 flags, uint32 p1,
}
/* Check if the station is buildable */
if (HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) {
if (HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) {
return CMD_ERROR;
}
}
@@ -1082,8 +1076,6 @@ CommandCost CmdBuildRailroadStation(TileIndex tile_org, uint32 flags, uint32 p1,
RebuildStationLists();
InvalidateWindow(WC_STATION_LIST, st->owner);
InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_TRAINS);
/* success, so don't delete the new station */
st_auto_delete.Detach();
}
return cost;
@@ -1388,23 +1380,13 @@ CommandCost CmdBuildRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (st == NULL) st = GetClosestStationFromTile(tile);
/* give us a road stop in the list, and check if something went wrong */
RoadStop *road_stop = new RoadStop(tile);
if (road_stop == NULL) {
return_cmd_error(type ? STR_TOO_MANY_TRUCK_STOPS : STR_TOO_MANY_BUS_STOPS);
}
/* ensure that in case of error (or no DC_EXEC) the new road stop gets deleted upon return */
AutoPtrT<RoadStop> rs_auto_delete(road_stop);
if (!RoadStop::CanAllocateItem()) return_cmd_error(type ? STR_TOO_MANY_TRUCK_STOPS : STR_TOO_MANY_BUS_STOPS);
if (st != NULL &&
GetNumRoadStopsInStation(st, RoadStop::BUS) + GetNumRoadStopsInStation(st, RoadStop::TRUCK) >= RoadStop::LIMIT) {
return_cmd_error(type ? STR_TOO_MANY_TRUCK_STOPS : STR_TOO_MANY_BUS_STOPS);
}
/* In case of new station if DC_EXEC is NOT set we still need to create the station
* to test if everything is OK. In this case we need to delete it before return. */
AutoPtrT<Station> st_auto_delete;
if (st != NULL) {
if (st->owner != _current_player) {
return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
@@ -1413,26 +1395,25 @@ CommandCost CmdBuildRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (!st->rect.BeforeAddTile(tile, StationRect::ADD_TEST)) return CMD_ERROR;
} else {
/* allocate and initialize new station */
st = new Station(tile);
if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
/* ensure that in case of error (or no DC_EXEC) the new station gets deleted upon return */
st_auto_delete = st;
if (flags & DC_EXEC) {
st = new Station();
st->town = ClosestTownFromTile(tile, (uint)-1);
GenerateStationName(st, tile, STATIONNAMING_ROAD);
Town *t = st->town = ClosestTownFromTile(tile, (uint)-1);
if (!GenerateStationName(st, tile, STATIONNAMING_ROAD)) return CMD_ERROR;
if (IsValidPlayer(_current_player) && (flags & DC_EXEC) != 0) {
SetBit(t->have_ratings, _current_player);
if (IsValidPlayer(_current_player)) {
SetBit(st->town->have_ratings, _current_player);
}
st->sign.width_1 = 0;
}
st->sign.width_1 = 0;
}
cost.AddCost((type) ? _price.build_truck_station : _price.build_bus_station);
if (flags & DC_EXEC) {
RoadStop *road_stop = new RoadStop(tile);
/* Insert into linked list of RoadStops */
RoadStop **currstop = FindRoadStopSpot(type, st);
*currstop = road_stop;
@@ -1454,9 +1435,6 @@ CommandCost CmdBuildRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
RebuildStationLists();
InvalidateWindow(WC_STATION_LIST, st->owner);
InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_ROADVEHS);
/* success, so don't delete the new station and the new road stop */
st_auto_delete.Detach();
rs_auto_delete.Detach();
}
return cost;
}
@@ -1711,10 +1689,6 @@ CommandCost CmdBuildAirport(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return CMD_ERROR;
}
/* In case of new station if DC_EXEC is NOT set we still need to create the station
* to test if everything is OK. In this case we need to delete it before return. */
AutoPtrT<Station> st_auto_delete;
if (st != NULL) {
if (st->owner != _current_player)
return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
@@ -1727,24 +1701,18 @@ CommandCost CmdBuildAirport(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
airport_upgrade = false;
/* allocate and initialize new station */
st = new Station(tile);
if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
/* ensure that in case of error (or no DC_EXEC) the station gets deleted upon return */
st_auto_delete = st;
if (flags & DC_EXEC) {
st = new Station();
st->town = t;
st->town = ClosestTownFromTile(tile, (uint)-1);
GenerateStationName(st, tile, !(afc->flags & AirportFTAClass::AIRPLANES) ? STATIONNAMING_HELIPORT : STATIONNAMING_AIRPORT);
if (IsValidPlayer(_current_player) && (flags & DC_EXEC) != 0) {
SetBit(t->have_ratings, _current_player);
}
st->sign.width_1 = 0;
/* If only helicopters may use the airport generate a helicopter related (5)
* station name, otherwise generate a normal airport name (1) */
if (!GenerateStationName(st, tile, !(afc->flags & AirportFTAClass::AIRPLANES) ? STATIONNAMING_HELIPORT : STATIONNAMING_AIRPORT)) {
return CMD_ERROR;
if (IsValidPlayer(_current_player)) {
SetBit(st->town->have_ratings, _current_player);
}
st->sign.width_1 = 0;
}
}
@@ -1781,8 +1749,6 @@ CommandCost CmdBuildAirport(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
RebuildStationLists();
InvalidateWindow(WC_STATION_LIST, st->owner);
InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_PLANES);
/* success, so don't delete the new station */
st_auto_delete.Detach();
}
return cost;
@@ -1851,18 +1817,18 @@ CommandCost CmdBuildBuoy(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (GetTileSlope(tile, NULL) != SLOPE_FLAT) return_cmd_error(STR_304B_SITE_UNSUITABLE);
/* allocate and initialize new station */
Station *st = new Station(tile);
if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
/* ensure that in case of error (or no DC_EXEC) the station gets deleted upon return */
AutoPtrT<Station> st_auto_delete(st);
st->town = ClosestTownFromTile(tile, (uint)-1);
st->sign.width_1 = 0;
if (!GenerateStationName(st, tile, STATIONNAMING_BUOY)) return CMD_ERROR;
if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
if (flags & DC_EXEC) {
Station *st = new Station();
st->town = ClosestTownFromTile(tile, (uint)-1);
GenerateStationName(st, tile, STATIONNAMING_BUOY);
if (IsValidPlayer(_current_player)) {
SetBit(st->town->have_ratings, _current_player);
}
st->sign.width_1 = 0;
st->dock_tile = tile;
st->facilities |= FACIL_DOCK;
/* Buoys are marked in the Station struct by this flag. Yes, it is this
@@ -1879,8 +1845,6 @@ CommandCost CmdBuildBuoy(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
RebuildStationLists();
InvalidateWindow(WC_STATION_LIST, st->owner);
InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_SHIPS);
/* success, so don't delete the new station */
st_auto_delete.Detach();
}
return CommandCost(EXPENSES_CONSTRUCTION, _price.build_dock);
@@ -2006,10 +1970,6 @@ CommandCost CmdBuildDock(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/* Find a station close to us */
if (st == NULL) st = GetClosestStationFromTile(tile);
/* In case of new station if DC_EXEC is NOT set we still need to create the station
* to test if everything is OK. In this case we need to delete it before return. */
AutoPtrT<Station> st_auto_delete;
if (st != NULL) {
if (st->owner != _current_player)
return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
@@ -2019,21 +1979,19 @@ CommandCost CmdBuildDock(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (st->dock_tile != 0) return_cmd_error(STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK);
} else {
/* allocate and initialize new station */
st = new Station(tile);
if (st == NULL) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
/* allocate and initialize new station */
if (!Station::CanAllocateItem()) return_cmd_error(STR_3008_TOO_MANY_STATIONS_LOADING);
/* ensure that in case of error (or no DC_EXEC) the station gets deleted upon return */
st_auto_delete = st;
if (flags & DC_EXEC) {
st = new Station();
Town *t = st->town = ClosestTownFromTile(tile, (uint)-1);
st->town = ClosestTownFromTile(tile, (uint)-1);
GenerateStationName(st, tile, STATIONNAMING_DOCK);
if (IsValidPlayer(_current_player) && (flags & DC_EXEC) != 0) {
SetBit(t->have_ratings, _current_player);
if (IsValidPlayer(_current_player)) {
SetBit(st->town->have_ratings, _current_player);
}
}
st->sign.width_1 = 0;
if (!GenerateStationName(st, tile, STATIONNAMING_DOCK)) return CMD_ERROR;
}
if (flags & DC_EXEC) {
@@ -2049,8 +2007,6 @@ CommandCost CmdBuildDock(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
RebuildStationLists();
InvalidateWindow(WC_STATION_LIST, st->owner);
InvalidateWindowWidget(WC_STATION_VIEW, st->index, SVW_SHIPS);
/* success, so don't delete the new station */
st_auto_delete.Detach();
}
return CommandCost(EXPENSES_CONSTRUCTION, _price.build_dock);
}
@@ -2195,10 +2151,14 @@ static void DrawTile_Station(TileInfo *ti)
}
SpriteID pal;
if (!(!HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(TO_BUILDINGS)) && HasBit(image, PALETTE_MODIFIER_COLOR)) {
pal = palette;
if (HasBit(image, PALETTE_MODIFIER_TRANSPARENT) || HasBit(image, PALETTE_MODIFIER_COLOR)) {
if (dtss->image.pal > 0) {
pal = dtss->image.pal;
} else {
pal = palette;
}
} else {
pal = dtss->image.pal;
pal = PAL_NONE;
}
if ((byte)dtss->delta_z != 0x80) {
@@ -2848,11 +2808,7 @@ void BuildOilRig(TileIndex tile)
st->town = ClosestTownFromTile(tile, (uint)-1);
st->sign.width_1 = 0;
if (!GenerateStationName(st, tile, STATIONNAMING_OILRIG)) {
DEBUG(misc, 0, "Can't allocate station-name for oilrig at 0x%X, reverting to oilrig only", tile);
delete st;
return;
}
GenerateStationName(st, tile, STATIONNAMING_OILRIG);
MakeOilrig(tile, st->index);
+1 -1
View File
@@ -103,7 +103,7 @@ static char _cases[MAX_NUM_CASES][16];
static int _numcases;
// for each plural value, this is the number of plural forms.
static const byte _plural_form_counts[] = { 2, 1, 2, 3, 3, 3, 3, 3, 4 };
static const byte _plural_form_counts[] = { 2, 1, 2, 3, 3, 3, 3, 3, 4, 2 };
static const char *_cur_ident;
+6
View File
@@ -462,6 +462,12 @@ static int DeterminePluralForm(int64 cnt)
* Slovenian */
case 8:
return n % 100 == 1 ? 0 : n % 100 == 2 ? 1 : n % 100 == 3 || n % 100 == 4 ? 2 : 3;
/* Two forms; singular used for everything ending in 1 but not in 11.
* Used in:
* Icelandic */
case 9:
return n % 10 == 1 && n % 100 != 11 ? 0 : 1;
}
}
+65 -35
View File
@@ -31,7 +31,6 @@
#include "newgrf_house.h"
#include "newgrf_commons.h"
#include "newgrf_townname.h"
#include "misc/autoptr.hpp"
#include "autoslope.h"
#include "waypoint.h"
#include "transparency.h"
@@ -44,6 +43,8 @@
#include "table/sprites.h"
#include "table/town_land.h"
#include <map>
uint _total_towns;
HouseSpec _house_specs[HOUSE_MAX];
@@ -766,7 +767,7 @@ static bool TerraformTownTile(TileIndex tile, int edges, int dir)
TILE_ASSERT(tile);
r = DoCommand(tile, edges, dir, DC_AUTO | DC_NO_WATER, CMD_TERRAFORM_LAND);
if (CmdFailed(r) || r.GetCost() >= 126 * 16) return false;
if (CmdFailed(r) || r.GetCost() >= (_price.terraform + 2) * 8) return false;
DoCommand(tile, edges, dir, DC_AUTO | DC_NO_WATER | DC_EXEC, CMD_TERRAFORM_LAND);
return true;
}
@@ -1508,16 +1509,14 @@ CommandCost CmdBuildTown(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return_cmd_error(STR_023A_TOO_MANY_TOWNS);
/* Allocate town struct */
Town *t = new Town(tile);
if (t == NULL) return_cmd_error(STR_023A_TOO_MANY_TOWNS);
AutoPtrT<Town> t_auto_delete = t;
if (!Town::CanAllocateItem()) return_cmd_error(STR_023A_TOO_MANY_TOWNS);
/* Create the town */
if (flags & DC_EXEC) {
Town *t = new Town(tile);
_generating_world = true;
DoCreateTown(t, tile, townnameparts, (TownSizeMode)p2, p1);
_generating_world = false;
t_auto_delete.Detach();
}
return CommandCost();
}
@@ -1906,7 +1905,7 @@ static bool BuildTownHouse(Town *t, TileIndex tile)
if (HasBit(hs->callback_mask, CBM_HOUSE_ALLOW_CONSTRUCTION)) {
uint16 callback_res = GetHouseCallback(CBID_HOUSE_ALLOW_CONSTRUCTION, 0, 0, house, t, tile);
if (callback_res != CALLBACK_FAILED && callback_res == 0) continue;
if (callback_res != CALLBACK_FAILED && GB(callback_res, 0, 8) == 0) continue;
}
}
@@ -1976,6 +1975,33 @@ static void DoClearTownHouseHelper(TileIndex tile)
DeleteAnimatedTile(tile);
}
/**
* Determines if a given HouseID is part of a multitile house.
* The given ID is set to the ID of the north tile and the TileDiff to the north tile is returned.
*
* @param house Is changed to the HouseID of the north tile of the same house
* @return TileDiff from the tile of the given HouseID to the north tile
*/
static TileIndex GetHouseNorthPart(HouseID &house)
{
if (house >= 3) { // house id 0,1,2 MUST be single tile houses, or this code breaks.
if (GetHouseSpecs(house - 1)->building_flags & TILE_SIZE_2x1) {
house--;
return TileDiffXY(-1, 0);
} else if (GetHouseSpecs(house - 1)->building_flags & BUILDING_2_TILES_Y) {
house--;
return TileDiffXY(0, -1);
} else if (GetHouseSpecs(house - 2)->building_flags & BUILDING_HAS_4_TILES) {
house -= 2;
return TileDiffXY(-1, 0);
} else if (GetHouseSpecs(house - 3)->building_flags & BUILDING_HAS_4_TILES) {
house -= 3;
return TileDiffXY(-1, -1);
}
}
return 0;
}
void ClearTownHouse(Town *t, TileIndex tile)
{
HouseID house = GetHouseType(tile);
@@ -1985,21 +2011,7 @@ void ClearTownHouse(Town *t, TileIndex tile)
assert(IsTileType(tile, MP_HOUSE));
/* need to align the tile to point to the upper left corner of the house */
if (house >= 3) { // house id 0,1,2 MUST be single tile houses, or this code breaks.
if (GetHouseSpecs(house-1)->building_flags & TILE_SIZE_2x1) {
house--;
tile += TileDiffXY(-1, 0);
} else if (GetHouseSpecs(house-1)->building_flags & BUILDING_2_TILES_Y) {
house--;
tile += TileDiffXY(0, -1);
} else if (GetHouseSpecs(house-2)->building_flags & BUILDING_HAS_4_TILES) {
house-=2;
tile += TileDiffXY(-1, 0);
} else if (GetHouseSpecs(house-3)->building_flags & BUILDING_HAS_4_TILES) {
house-=3;
tile += TileDiffXY(-1, -1);
}
}
tile += GetHouseNorthPart(house); // modifies house to the ID of the north tile
hs = GetHouseSpecs(house);
@@ -2285,15 +2297,24 @@ static void UpdateTownGrowRate(Town *t)
if (DistanceSquare(st->xy, t->xy) <= t->radius[0]) {
if (st->time_since_load <= 20 || st->time_since_unload <= 20) {
n++;
if (IsValidPlayer(st->owner) && t->ratings[st->owner] <= 1000-12)
t->ratings[st->owner] += 12;
if (IsValidPlayer(st->owner)) {
int new_rating = t->ratings[st->owner] + 12;
t->ratings[st->owner] = min(new_rating, INT16_MAX); // do not let it overflow
}
} else {
if (IsValidPlayer(st->owner) && t->ratings[st->owner] >= -1000+15)
t->ratings[st->owner] -= 15;
if (IsValidPlayer(st->owner)) {
int new_rating = t->ratings[st->owner] - 15;
t->ratings[st->owner] = max(new_rating, INT16_MIN);
}
}
}
}
/* clamp all ratings to valid values */
for (uint i = 0; i < MAX_PLAYERS; i++) {
t->ratings[i] = Clamp(t->ratings[i], -1000, 1000);
}
ClrBit(t->flags12, TOWN_IS_FUNDED);
if (_patches.town_growth_rate == 0 && t->fund_buildings_months == 0) return;
@@ -2410,14 +2431,14 @@ Town *ClosestTownFromTile(TileIndex tile, uint threshold)
}
static bool _town_rating_test = false;
std::map<const Town *, int> _town_test_ratings;
void SetTownRatingTestMode(bool mode)
{
static int ref_count = 0;
if (mode) {
if (ref_count == 0) {
Town *t;
FOR_ALL_TOWNS(t) t->test_rating = t->ratings[_current_player];
_town_test_ratings.empty();
}
ref_count++;
} else {
@@ -2427,10 +2448,19 @@ void SetTownRatingTestMode(bool mode)
_town_rating_test = !(ref_count == 0);
}
static int GetRating(const Town *t)
{
if (_town_rating_test) {
std::map<const Town *, int>::iterator it = _town_test_ratings.find(t);
if (it != _town_test_ratings.end()) {
return (*it).second;
}
}
return t->ratings[_current_player];
}
void ChangeTownRating(Town *t, int add, int max)
{
int rating;
/* if magic_bulldozer cheat is active, town doesn't penaltize for removing stuff */
if (t == NULL ||
!IsValidPlayer(_current_player) ||
@@ -2440,8 +2470,7 @@ void ChangeTownRating(Town *t, int add, int max)
SetBit(t->have_ratings, _current_player);
rating = _town_rating_test ? t->test_rating : t->ratings[_current_player];
int rating = GetRating(t);
if (add < 0) {
if (rating > max) {
rating += add;
@@ -2454,7 +2483,7 @@ void ChangeTownRating(Town *t, int add, int max)
}
}
if (_town_rating_test) {
t->test_rating = rating;
_town_test_ratings[t] = rating;
} else {
t->ratings[_current_player] = rating;
}
@@ -2482,7 +2511,7 @@ bool CheckforTownRating(uint32 flags, Town *t, byte type)
*/
modemod = _default_rating_settings[_opt.diff.town_council_tolerance][type];
if ((_town_rating_test ? t->test_rating : t->ratings[_current_player]) < 16 + modemod && !(flags & DC_NO_TOWN_RATING)) {
if (GetRating(t) < 16 + modemod && !(flags & DC_NO_TOWN_RATING)) {
SetDParam(0, t->index);
_error_message = STR_2009_LOCAL_AUTHORITY_REFUSES;
return false;
@@ -2529,7 +2558,8 @@ static CommandCost TerraformTile_Town(TileIndex tile, uint32 flags, uint z_new,
{
if (AutoslopeEnabled()) {
HouseID house = GetHouseType(tile);
HouseSpec *hs = GetHouseSpecs(house);
GetHouseNorthPart(house); // modifies house to the ID of the north tile
const HouseSpec *hs = GetHouseSpecs(house);
/* Here we differ from TTDP by checking TILE_NOT_SLOPED */
if (((hs->building_flags & TILE_NOT_SLOPED) == 0) && !IsSteepSlope(tileh_new) &&
+17 -8
View File
@@ -200,12 +200,24 @@ void TrainConsistChanged(Vehicle* v)
/* Check the v->first cache. */
assert(u->First() == v);
if (!HasBit(EngInfo(u->engine_type)->misc_flags, EF_RAIL_TILTS)) train_can_tilt = false;
/* update the 'first engine' */
u->u.rail.first_engine = v == u ? INVALID_ENGINE : first_engine;
u->u.rail.railtype = rvi_u->railtype;
/* Set user defined data to its default value */
u->u.rail.user_def_data = rvi_u->user_def_data;
}
for (Vehicle *u = v; u != NULL; u = u->Next()) {
/* Update user defined data (must be done before other properties) */
u->u.rail.user_def_data = GetVehicleProperty(u, 0x25, u->u.rail.user_def_data);
}
for (Vehicle *u = v; u != NULL; u = u->Next()) {
const RailVehicleInfo *rvi_u = RailVehInfo(u->engine_type);
if (!HasBit(EngInfo(u->engine_type)->misc_flags, EF_RAIL_TILTS)) train_can_tilt = false;
if (IsTrainEngine(u)) first_engine = u->engine_type;
/* Cache wagon override sprite group. NULL is returned if there is none */
@@ -214,9 +226,6 @@ void TrainConsistChanged(Vehicle* v)
/* Reset color map */
u->colormap = PAL_NONE;
/* Set user defined data (must be done before other properties) */
u->u.rail.user_def_data = GetVehicleProperty(u, 0x25, rvi_u->user_def_data);
if (rvi_u->visual_effect != 0) {
u->u.rail.cached_vis_effect = rvi_u->visual_effect;
} else {
@@ -237,7 +246,7 @@ void TrainConsistChanged(Vehicle* v)
if (HasBit(EngInfo(u->engine_type)->callbackmask, CBM_TRAIN_WAGON_POWER)) {
uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u);
if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = callback;
if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = GB(callback, 0, 8);
}
if (rvi_v->pow_wag_power != 0 && rvi_u->railveh_type == RAILVEH_WAGON &&
@@ -1293,7 +1302,7 @@ CommandCost CmdStartStopTrain(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
/* Check if this train can be started/stopped. The callback will fail or
* return 0xFF if it can. */
uint16 callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v);
if (callback != CALLBACK_FAILED && callback != 0xFF) {
if (callback != CALLBACK_FAILED && GB(callback, 0, 8) != 0xFF) {
StringID error = GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + callback);
return_cmd_error(error);
}
@@ -3561,7 +3570,7 @@ static void TrainLocoHandler(Vehicle *v, bool mode)
HandleBrokenTrain(v);
return;
}
v->breakdown_ctr--;
if (v->current_order.type != OT_LOADING) v->breakdown_ctr--;
}
if (HasBit(v->u.rail.flags, VRF_REVERSING) && v->cur_speed == 0) {
+1 -1
View File
@@ -583,7 +583,7 @@ void Vehicle::PreDestructor()
}
Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
if (WP(w, vp_d).follow_vehicle == this->index) {
if (w != NULL && WP(w, vp_d).follow_vehicle == this->index) {
ScrollMainWindowTo(this->x_pos, this->y_pos, true); // lock the main view on the vehicle's last position
WP(w, vp_d).follow_vehicle = INVALID_VEHICLE;
}
+2 -1
View File
@@ -175,7 +175,8 @@ static CGColorSpaceRef QZ_GetCorrectColorSpace()
CMCloseProfile(sysProfile);
}
assert(colorSpace != NULL);
if (colorSpace == NULL)
error("Could not get system colour space. You might need to recalibrate your monitor.");
}
return colorSpace;
+4 -6
View File
@@ -941,10 +941,8 @@ static void DrawAutorailSelection(const TileInfo *ti, uint autorail_type)
static void DrawTileSelection(const TileInfo *ti)
{
/* Draw a red error square? */
if (_thd.redsq != 0 && _thd.redsq == ti->tile) {
DrawTileSelectionRect(ti, PALETTE_TILE_RED_PULSATING);
return;
}
bool is_redsq = _thd.redsq != 0 && _thd.redsq == ti->tile;
if (is_redsq) DrawTileSelectionRect(ti, PALETTE_TILE_RED_PULSATING);
/* no selection active? */
if (_thd.drawstyle == 0) return;
@@ -953,7 +951,7 @@ static void DrawTileSelection(const TileInfo *ti)
if (IsInsideBS(ti->x, _thd.pos.x, _thd.size.x) &&
IsInsideBS(ti->y, _thd.pos.y, _thd.size.y)) {
if (_thd.drawstyle & HT_RECT) {
DrawTileSelectionRect(ti, _thd.make_square_red ? PALETTE_SEL_TILE_RED : PAL_NONE);
if (!is_redsq) DrawTileSelectionRect(ti, _thd.make_square_red ? PALETTE_SEL_TILE_RED : PAL_NONE);
} else if (_thd.drawstyle & HT_POINT) {
/* Figure out the Z coordinate for the single dot. */
byte z = 0;
@@ -994,7 +992,7 @@ static void DrawTileSelection(const TileInfo *ti)
}
/* Check if it's inside the outer area? */
if (_thd.outersize.x &&
if (!is_redsq && _thd.outersize.x &&
_thd.size.x < _thd.size.x + _thd.outersize.x &&
IsInsideBS(ti->x, _thd.pos.x + _thd.offs.x, _thd.size.x + _thd.outersize.x) &&
IsInsideBS(ti->y, _thd.pos.y + _thd.offs.y, _thd.size.y + _thd.outersize.y)) {
+2 -5
View File
@@ -23,7 +23,6 @@
#include "industry_map.h"
#include "newgrf.h"
#include "newgrf_canal.h"
#include "misc/autoptr.hpp"
#include "transparency.h"
#include "strings_func.h"
#include "functions.h"
@@ -196,18 +195,16 @@ CommandCost CmdBuildShipDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
ret = DoCommand(tile2, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
if (CmdFailed(ret)) return CMD_ERROR;
Depot *depot = new Depot(tile);
if (depot == NULL) return CMD_ERROR;
AutoPtrT<Depot> d_auto_delete = depot;
if (!Depot::CanAllocateItem()) return CMD_ERROR;
if (flags & DC_EXEC) {
Depot *depot = new Depot(tile);
depot->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
MakeShipDepot(tile, _current_player, DEPOT_NORTH, axis, wc1);
MakeShipDepot(tile2, _current_player, DEPOT_SOUTH, axis, wc2);
MarkTileDirtyByTile(tile);
MarkTileDirtyByTile(tile2);
d_auto_delete.Detach();
}
return CommandCost(EXPENSES_CONSTRUCTION, _price.build_ship_depot);
+26 -30
View File
@@ -18,7 +18,6 @@
#include "variables.h"
#include "yapf/yapf.h"
#include "newgrf.h"
#include "misc/autoptr.hpp"
#include "strings_func.h"
#include "gfx_func.h"
#include "functions.h"
@@ -189,7 +188,6 @@ void AfterLoadWaypoints()
CommandCost CmdBuildTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
Waypoint *wp;
AutoPtrT<Waypoint> wp_auto_delete;
Slope tileh;
Axis axis;
@@ -217,35 +215,34 @@ CommandCost CmdBuildTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint3
/* Check if there is an already existing, deleted, waypoint close to us that we can reuse. */
wp = FindDeletedWaypointCloseTo(tile);
if (wp == NULL) {
wp = new Waypoint(tile);
if (wp == NULL) return CMD_ERROR;
wp_auto_delete = wp;
wp->town_index = INVALID_TOWN;
wp->name = NULL;
wp->town_cn = 0;
} else if (flags & DC_EXEC) {
/* Move existing (recently deleted) waypoint to the new location */
/* First we update the destination for all vehicles that
* have the old waypoint in their orders. */
Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_TRAIN &&
v->First() == v &&
v->current_order.type == OT_GOTO_WAYPOINT &&
v->dest_tile == wp->xy) {
v->dest_tile = tile;
}
}
RedrawWaypointSign(wp);
wp->xy = tile;
}
if (wp == NULL && !Waypoint::CanAllocateItem()) return CMD_ERROR;
if (flags & DC_EXEC) {
if (wp == NULL) {
wp = new Waypoint(tile);
wp->town_index = INVALID_TOWN;
wp->name = NULL;
wp->town_cn = 0;
} else {
/* Move existing (recently deleted) waypoint to the new location */
/* First we update the destination for all vehicles that
* have the old waypoint in their orders. */
Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_TRAIN &&
v->First() == v &&
v->current_order.type == OT_GOTO_WAYPOINT &&
v->dest_tile == wp->xy) {
v->dest_tile = tile;
}
}
RedrawWaypointSign(wp);
wp->xy = tile;
}
const StationSpec* statspec;
MakeRailWaypoint(tile, GetTileOwner(tile), axis, GetRailType(tile), wp->index);
@@ -272,7 +269,6 @@ CommandCost CmdBuildTrainWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint3
UpdateWaypointSign(wp);
RedrawWaypointSign(wp);
YapfNotifyTrackLayoutChange(tile, AxisToTrack(axis));
wp_auto_delete.Detach();
}
return CommandCost(EXPENSES_CONSTRUCTION, _price.build_train_depot);
+1 -1
View File
@@ -2185,7 +2185,7 @@ void RelocateAllWindows(int neww, int newh)
const Window *wt = FindWindowById(WC_MAIN_TOOLBAR, 0);
if (wt != NULL) {
if (top < wt->height) top = wt->height;
if (top < wt->height && wt->left < (w->left + w->width) && (wt->left + wt->width) > w->left) top = wt->height;
if (top >= newh) top = newh - 1;
} else {
if (top < 0) top = 0;