mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2026-07-15 15:19:52 +00:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 640184e278 | |||
| 9e966f9cd0 | |||
| 942a752e2a | |||
| 9e03a7b23a | |||
| e114133d18 | |||
| 9241c4649d | |||
| f126c2e66f | |||
| c973bd87ce | |||
| 4cb6a89e81 | |||
| 7bf1737a66 | |||
| fb0afc9cca | |||
| 9f65c1b8f0 | |||
| 1a495b0b1c | |||
| 5294075ad4 | |||
| ed4ae53e8a | |||
| c53f9fc2a2 | |||
| cbd426059e | |||
| 624549464f | |||
| 1f9dce4697 | |||
| 185c30b6bf | |||
| 8df7a53652 | |||
| 9d47454105 |
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";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=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";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"
|
||||
>
|
||||
|
||||
@@ -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=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";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=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
||||
@@ -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=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";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=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";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"
|
||||
>
|
||||
|
||||
@@ -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=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";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=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
||||
+2
-2
@@ -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
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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}Градът не може да бъде преименуван
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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...
|
||||
|
||||
@@ -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...
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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
@@ -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...
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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}선택한 그룹 이름 바꾸기
|
||||
|
||||
@@ -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}Не могу переименовать город...
|
||||
|
||||
@@ -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}旁观数量:
|
||||
|
||||
@@ -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 ...
|
||||
|
||||
@@ -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 ...
|
||||
|
||||
@@ -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...
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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 :貨卡車
|
||||
|
||||
@@ -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
@@ -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 :Краватка:
|
||||
|
||||
@@ -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}Αυτή η εταιρεία δεν είναι αρκετά ώριμη για συναλλαγή μετοχών ακόμα...
|
||||
|
||||
|
||||
@@ -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 :Dzelzsrūda
|
||||
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}
|
||||
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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'.
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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:
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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();
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user