Compare commits
358 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7423777a18 | |||
| 1054ec7749 | |||
| 001fa99741 | |||
| 3482605b1a | |||
| 6a66bb2314 | |||
| 212ecff33b | |||
| ae7bdefc33 | |||
| 66166bd7f7 | |||
| 4cc23f6608 | |||
| 7150dd66cd | |||
| 5666efe66b | |||
| e006f89aa3 | |||
| ffb2c4de77 | |||
| 19c55cbb75 | |||
| 720b906a74 | |||
| e05f961eed | |||
| 6151c1044a | |||
| aad7995648 | |||
| 700862295f | |||
| b9c13283a4 | |||
| f08983a948 | |||
| 7a5ce1cb34 | |||
| 7f14b69022 | |||
| 6e2abeba5e | |||
| eae329f332 | |||
| ef3961448f | |||
| 9139f4ba84 | |||
| 6dc99f7738 | |||
| b4c4daf775 | |||
| ad6cc5a12d | |||
| a9e789fa02 | |||
| 590bbd7e21 | |||
| 29e0ded977 | |||
| 6912223444 | |||
| 6510b12203 | |||
| dd6a6fa7ec | |||
| 94dc25b45f | |||
| f1c151f157 | |||
| f31d8bb9a1 | |||
| 660f130d2b | |||
| a2619da37e | |||
| 24a34936db | |||
| 8edff76765 | |||
| 2cf65953db | |||
| 62e8c573e8 | |||
| 88c10e02ff | |||
| 1a92141896 | |||
| 53d1c3f117 | |||
| 9a96f5b64e | |||
| 52ec917125 | |||
| ae792cedde | |||
| bb276ef5a9 | |||
| 7d0468aaa4 | |||
| 44f48ce915 | |||
| 80131e1e4a | |||
| a11eddd04b | |||
| 8fe9bc6439 | |||
| 9f60324821 | |||
| fd25a53d1b | |||
| 322bd934be | |||
| 720b183017 | |||
| 7243369333 | |||
| f83828d944 | |||
| c7502c6eb3 | |||
| 8e7d88c85b | |||
| 6027e777c8 | |||
| 8313879b3c | |||
| e5cd6b6193 | |||
| e75c48ec7a | |||
| 189ca73707 | |||
| 7984a9a500 | |||
| 54e78e114c | |||
| 6fb79d5f33 | |||
| b49547b2b5 | |||
| c0a0d1bb22 | |||
| f40ff3c134 | |||
| 7c28bafba9 | |||
| 6e17ee9fe2 | |||
| 5d443a2482 | |||
| 4ce10986b5 | |||
| 0a944dc950 | |||
| 5290d5f667 | |||
| 962dd27a8c | |||
| 2f4959dcd8 | |||
| ef93fcfe48 | |||
| c245d93e7d | |||
| 2e0d576e6b | |||
| 44dae05c3d | |||
| 1af764c4d0 | |||
| f8345b3fe6 | |||
| f0e616ea2b | |||
| e9c25f8274 | |||
| aaf09ceb26 | |||
| 28df4a0e25 | |||
| 7837be0575 | |||
| 2fd3553d78 | |||
| e4a3d284b2 | |||
| 15630855dd | |||
| 941da5dc94 | |||
| a6d1544447 | |||
| 69065b53c8 | |||
| f09b0def11 | |||
| b1c4b0f07d | |||
| 31d6f87d80 | |||
| 64b08311b9 | |||
| 389a4bf44d | |||
| eaa6bf3f42 | |||
| 5bcf3d2bc0 | |||
| 4559279686 | |||
| e0471187d0 | |||
| 9fadf6cf84 | |||
| f4f705e723 | |||
| 1847b99461 | |||
| 5adad6c1b4 | |||
| fb0c3c8061 | |||
| d4beff7954 | |||
| a1e94b67d5 | |||
| 8521367373 | |||
| 022b8cea37 | |||
| 8e404a26f6 | |||
| be5a832db3 | |||
| ef923fae44 | |||
| b119b6c474 | |||
| 340a9ab6be | |||
| 8efc7866dd | |||
| 37f56fa324 | |||
| 208a9b8547 | |||
| ae796740aa | |||
| d2643dc483 | |||
| efecea001a | |||
| 1955371a71 | |||
| d41a003bcc | |||
| 6e07bad728 | |||
| 971d844266 | |||
| 633786f55e | |||
| 1b00f36520 | |||
| 24c9e6ff66 | |||
| e6d31cb89c | |||
| d275109e79 | |||
| 732c362dea | |||
| ef3b9161f8 | |||
| 559317f9d0 | |||
| 02ed8410a2 | |||
| 3279a7c9a2 | |||
| 7f7c6297f7 | |||
| f9b5f704b1 | |||
| 75474e5bf1 | |||
| c3a40dba68 | |||
| 976ed5e396 | |||
| 83b00ad861 | |||
| dd27968460 | |||
| e9a57c56b7 | |||
| 3a838447a8 | |||
| 4136f395bf | |||
| 9d1f7e7348 | |||
| 34db065631 | |||
| 314a4245a9 | |||
| febac23b25 | |||
| 9e10458209 | |||
| 352cf002b2 | |||
| 7dddb6cf7a | |||
| 237732d0a1 | |||
| 6dd2e2f06d | |||
| 61cae70fe5 | |||
| 06cc62f40d | |||
| 0074496ea4 | |||
| 131f4c50fd | |||
| 253a02e712 | |||
| f062187e47 | |||
| 45233a7e16 | |||
| fd19404b6f | |||
| 747eab12d9 | |||
| 7ec997afce | |||
| f25bec9132 | |||
| a243285af4 | |||
| ff23795f5b | |||
| 1a450b0b39 | |||
| 4873c0b1ea | |||
| 1feae2083d | |||
| 5fac6142e8 | |||
| 085563653f | |||
| 38da06301d | |||
| ae72661742 | |||
| 05a3a83b6c | |||
| 46d0e2f892 | |||
| 70f9921423 | |||
| 02e020c05e | |||
| 1fc77885c2 | |||
| 2c6e2a68b7 | |||
| 52de6766c7 | |||
| c0b82db752 | |||
| 83b2abb6d6 | |||
| 29b4ab04c3 | |||
| fae367ab31 | |||
| 1261a44cec | |||
| 49e7939a10 | |||
| 53bd40ebaf | |||
| cd4e73193d | |||
| b9fed3391b | |||
| aacb89ed53 | |||
| 52bfa90d5e | |||
| aa261049f4 | |||
| c77e9231ef | |||
| 49584082a0 | |||
| c6c86abeee | |||
| fbcc84bdcf | |||
| 97479f9613 | |||
| 55e6b4f928 | |||
| 32f480a4ae | |||
| 9853d4e0d4 | |||
| 598addff94 | |||
| 86c3bfd66d | |||
| e17a8989cf | |||
| 13dda25334 | |||
| 0f339f3a6b | |||
| 5edecb9495 | |||
| bfc670b4d9 | |||
| 4b6a846d9c | |||
| 5110ffeef4 | |||
| ead1aa8dfc | |||
| d4d4a46436 | |||
| 788f543bc3 | |||
| 3be9515d84 | |||
| 4972b3722e | |||
| dcca3cf80b | |||
| 90871eeb9e | |||
| 634c395a6f | |||
| 69a4df909c | |||
| 3f7da833d1 | |||
| db4668c057 | |||
| b11f7c7817 | |||
| 2da54df9df | |||
| 116789022c | |||
| b78b576b21 | |||
| 76c7f3b14e | |||
| 35972e68e1 | |||
| 7ca6b2b8b0 | |||
| f5c33e5073 | |||
| 9a4465f9c0 | |||
| e58739c559 | |||
| 8ed132a5b9 | |||
| a6ba0d3fbe | |||
| a3c0e81230 | |||
| 63e97754fb | |||
| a4111363c0 | |||
| deabdb666f | |||
| 57aebadb15 | |||
| 8b7c1e94e1 | |||
| 2c9cd8f68c | |||
| 8e58dd8dec | |||
| c06dd27c33 | |||
| becd9c224e | |||
| 5b7e224f46 | |||
| f8c95a1dbe | |||
| 790b03c707 | |||
| 1e99155d61 | |||
| cc465f0f35 | |||
| 5583fd89b3 | |||
| 2cdc210193 | |||
| 523a6a1cff | |||
| f1e9fdf76d | |||
| 6735135773 | |||
| 67161506ad | |||
| 2543158c8e | |||
| 61761cfab1 | |||
| 87e5984ae2 | |||
| 9294d33611 | |||
| e31da8532e | |||
| c4b682f996 | |||
| 4c5f6fe360 | |||
| 0fe19ed2ac | |||
| 2af42f48b9 | |||
| 29d2f6ed6c | |||
| 6edb21231e | |||
| 88b8a01da6 | |||
| 101ccce895 | |||
| 27df6c86fc | |||
| c5d6230c66 | |||
| 4f496b8681 | |||
| 86fa7720f9 | |||
| a9b3d8c998 | |||
| cdfb3d5113 | |||
| 3a48ab4c54 | |||
| 5a9478cdba | |||
| 39bb863024 | |||
| 2f2688b829 | |||
| 579d51b1b2 | |||
| f6c4e3eb1c | |||
| 9a49fda8e6 | |||
| d922ca68e7 | |||
| 52c87a0330 | |||
| 1ee725ef35 | |||
| ad24d6cb04 | |||
| e0c4e144b9 | |||
| 363dd7bdf0 | |||
| a94fe04a9a | |||
| 5b6be88587 | |||
| 79d29b7633 | |||
| afb6e5441d | |||
| c0702318d2 | |||
| d382463f8a | |||
| a72d993e65 | |||
| 3ee8697bbf | |||
| ca1b3a80ae | |||
| d317a93e0f | |||
| 39f8b82640 | |||
| 32bfe0dddd | |||
| 4c14afba4e | |||
| 288c52b688 | |||
| 2cb37408a3 | |||
| 60ba9c3280 | |||
| 7e89cd8643 | |||
| 6c4840fa50 | |||
| 29e71638ce | |||
| 608cdbe3f6 | |||
| 09dd8053a9 | |||
| ae336f146d | |||
| 6a6cbdd9b4 | |||
| efc2702491 | |||
| 2351271889 | |||
| 29d8c5bb50 | |||
| a11f46fed4 | |||
| 5d06584545 | |||
| a0716c39de | |||
| 461ca703ff | |||
| 36333076d5 | |||
| 2ebc5011f3 | |||
| 92ac503b74 | |||
| 1fef394fde | |||
| d76ecbba7c | |||
| 6c1e2989b1 | |||
| 4b38004a49 | |||
| 546fcfa3ec | |||
| 32c3fbd18e | |||
| 635b854c29 | |||
| bcc3b1cbb5 | |||
| 57852f6498 | |||
| 14dfb539b0 | |||
| fe08f457bc | |||
| e24c0ec9df | |||
| 37a18c858f | |||
| 6735bffd39 | |||
| e6a59be8c0 | |||
| c4d073a4de | |||
| 5b8c604f47 | |||
| c2ee8d70e4 | |||
| 41201f488c | |||
| c531739602 | |||
| a5a811f767 | |||
| 15d188d7f8 | |||
| 8dcbf2675b | |||
| 96b36ec01e | |||
| 1f4c1e8821 | |||
| f3c8f40c51 | |||
| b01382c20b | |||
| e4ee040a04 | |||
| c575939ef4 | |||
| c5cca49117 |
@@ -64,8 +64,6 @@
|
||||
# where it normally would print the revision number
|
||||
# MIDI: if set, it will use it as custom path to midi player.
|
||||
# If unset, it will use the hardcoded path in the c code
|
||||
# NOVERBOSE: supress all warnings and errors during compilation.
|
||||
# It looks nicer, but you will not know what went wrong. Use it on released (stable) sources only
|
||||
# VERBOSE: actually show the commands used for compilation.
|
||||
# WITH_NETWORK: enable networking
|
||||
# DEDICATED: allows compilation on UNIX without SDL. Useful for dedicated servers
|
||||
@@ -116,11 +114,15 @@
|
||||
# Configuration
|
||||
#
|
||||
|
||||
ifndef RELEASE
|
||||
RELEASE:=0.3.6
|
||||
endif
|
||||
|
||||
# Makefile version tag
|
||||
# it checks if the version tag in makefile.config is the same and force update outdated config files
|
||||
MAKEFILE_VERSION:=6
|
||||
|
||||
# CONFIG_WRITER have to be found even for manual configuration
|
||||
# CONFIG_WRITER has to be found even for manual configuration
|
||||
CONFIG_WRITER=makefiledir/Makefile.config_writer
|
||||
|
||||
ifndef MANUAL_CONFIG
|
||||
@@ -176,26 +178,15 @@ ENABLE_NETWORK:=1
|
||||
-include $(LIB_DETECTION)
|
||||
endif
|
||||
|
||||
# Verbose filter
|
||||
|
||||
ifdef NOVERBOSE
|
||||
VERBOSE_FILTER = >/dev/null 2>&1
|
||||
else
|
||||
VERBOSE_FILTER =
|
||||
endif
|
||||
|
||||
ifdef DISPLAY_WARNINGS
|
||||
WARNING_DISPLAY:=-fstrict-aliasing
|
||||
VERBOSE_FILTER =
|
||||
else
|
||||
WARNING_DISPLAY:=-fno-strict-aliasing
|
||||
endif
|
||||
|
||||
ifdef SUPRESS_LANG_ERRORS
|
||||
ifndef VERBOSE_FILTER
|
||||
LANG_ERRORS = >/dev/null 2>&1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef STATIC
|
||||
ifndef WIN32
|
||||
@@ -226,6 +217,10 @@ endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# remove the dependancy for sdl if DEDICALTED is used
|
||||
ifdef DEDICATED
|
||||
WITH_SDL:=
|
||||
endif
|
||||
|
||||
|
||||
##############################################################################
|
||||
@@ -290,7 +285,21 @@ endif
|
||||
# -O optimize or -O2 fully optimize (O's above 2 are not recommended)
|
||||
# -pg profile - generate profiling data. See "man gprof" to use this.
|
||||
|
||||
CFLAGS=-Wall -Wno-multichar
|
||||
CC_VERSION = $(shell $(CC) -dumpversion | cut -c 1,3)
|
||||
|
||||
# GNU make can only test for (in)equality
|
||||
# this is a workaround to test for >=
|
||||
ifeq ($(shell if test $(CC_VERSION) -ge 29; then echo true; fi), true)
|
||||
CFLAGS += -O -Wall -Wno-multichar -Wsign-compare -Wstrict-prototypes
|
||||
CFLAGS += -Wwrite-strings
|
||||
endif
|
||||
ifeq ($(shell if test $(CC_VERSION) -ge 30; then echo true; fi), true)
|
||||
CFLAGS += -W -Wno-unused-parameter
|
||||
endif
|
||||
ifeq ($(shell if test $(CC_VERSION) -ge 34; then echo true; fi), true)
|
||||
CFLAGS += -Wdeclaration-after-statement -Wold-style-definition
|
||||
endif
|
||||
|
||||
CDEFS=-DWITH_REV
|
||||
LDFLAGS=
|
||||
LIBS=
|
||||
@@ -356,7 +365,10 @@ CDEFS += -DBEOS
|
||||
LDFLAGS += -lmidi -lbe
|
||||
ifdef WITH_NETWORK
|
||||
ifdef BEOS_NET_SERVER
|
||||
CDEFS += -DBEOS_NET_SERVER
|
||||
CDEFS += -DBEOS_NET_SERVER
|
||||
else
|
||||
# Zeta needs a few more libraries than R5
|
||||
LDFLAGS += -lbind -lsocket
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
@@ -613,6 +625,7 @@ C_SOURCES += settings.c
|
||||
C_SOURCES += settings_gui.c
|
||||
C_SOURCES += ship_cmd.c
|
||||
C_SOURCES += ship_gui.c
|
||||
C_SOURCES += signs.c
|
||||
C_SOURCES += smallmap_gui.c
|
||||
C_SOURCES += sound.c
|
||||
C_SOURCES += sprite.c
|
||||
@@ -699,18 +712,18 @@ endif
|
||||
all: endian.h $(UPDATECONFIG) $(LANGS) $(TTD) $(OSX) $(endwarnings)
|
||||
|
||||
endian.h: $(ENDIAN_CHECK)
|
||||
@# Check if system is LITTLE_ENDIAN or BIG_ENDIAN
|
||||
@echo 'Running endian_check'; \
|
||||
./$(ENDIAN_CHECK) > $@
|
||||
@echo '===> Testing endianness'
|
||||
@./$(ENDIAN_CHECK) > $@
|
||||
|
||||
$(ENDIAN_CHECK): endian_check.c
|
||||
@echo 'Compiling and Linking $@'; \
|
||||
$(CC) $(BASECFLAGS) $(CDEFS) endian_check.c -o $@
|
||||
@echo '===> Compiling and Linking $@'
|
||||
@$(CC) $(BASECFLAGS) $(CDEFS) endian_check.c -o $@
|
||||
|
||||
|
||||
$(TTD): table/strings.h $(ttd_OBJS) $(MAKE_CONFIG)
|
||||
$(if $(VERBOSE),@echo '$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS)';,@echo 'Compiling and Linking $@';) \
|
||||
$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS) $(VERBOSE_FILTER)
|
||||
@echo '===> Linking $@'
|
||||
@$(if $(VERBOSE), echo '$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS)')
|
||||
@$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS)
|
||||
|
||||
$(OSX): $(TTD)
|
||||
@rm -fr "$(OSXAPP)"
|
||||
@@ -719,7 +732,7 @@ $(OSX): $(TTD)
|
||||
@mkdir -p "$(OSXAPP)"/Contents/Data
|
||||
@mkdir -p "$(OSXAPP)"/Contents/Lang
|
||||
@echo "APPL????" > "$(OSXAPP)"/Contents/PkgInfo
|
||||
@cp os/macos/ttd.icns "$(OSXAPP)"/Contents/Resources/openttd.icns
|
||||
@cp os/macos/openttd.icns "$(OSXAPP)"/Contents/Resources/openttd.icns
|
||||
@os/macos/plistgen.sh "$(OSXAPP)" "$(REV)"
|
||||
@cp os/macos/track_starter "$(OSXAPP)"/contents/macos
|
||||
@ls os/macos | grep -q "\.class" || \
|
||||
@@ -736,19 +749,20 @@ $(64_bit_warnings):
|
||||
$(warning If you see any bugs, include in your bug report that you use a 64 bit CPU)
|
||||
|
||||
$(STRGEN): strgen/strgen.c endian.h
|
||||
@echo 'Compiling and Linking $@'; \
|
||||
$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $< $(VERBOSE_FILTER)
|
||||
@echo '===> Compiling and Linking $@'
|
||||
@$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $<
|
||||
|
||||
table/strings.h: lang/english.txt $(STRGEN)
|
||||
@echo 'Generating $@'; \
|
||||
$(STRGEN)
|
||||
@echo '===> Generating $@'
|
||||
@$(STRGEN)
|
||||
|
||||
lang/%.lng: lang/%.txt $(STRGEN) lang/english.txt
|
||||
@echo 'Generating $@'; \
|
||||
$(STRGEN) $(STRGEN_FLAGS) $< $(VERBOSE_FILTER) $(LANG_ERRORS)
|
||||
@echo '===> Compiling language $(*F)'
|
||||
@$(STRGEN) $(STRGEN_FLAGS) $< $(LANG_ERRORS)
|
||||
|
||||
winres.o: ttd.rc
|
||||
windres -o $@ $<
|
||||
@echo '===> Compiling resource $<'
|
||||
@windres -o $@ $<
|
||||
|
||||
ifdef MORPHOS
|
||||
release: all
|
||||
@@ -758,13 +772,16 @@ release: all
|
||||
@mkdir -p "/t/openttd-$(RELEASE)-morphos/docs"
|
||||
@mkdir -p "/t/openttd-$(RELEASE)-morphos/data"
|
||||
@mkdir -p "/t/openttd-$(RELEASE)-morphos/lang"
|
||||
@mkdir -p "/t/openttd-$(RELEASE)-morphos/scenario"
|
||||
@cp -R $(TTD) "/t/openttd-$(RELEASE)-morphos/"
|
||||
@cp data/* "/t/openttd-$(RELEASE)-morphos/data/"
|
||||
@cp lang/*.lng "/t/openttd-$(RELEASE)-morphos/lang/"
|
||||
@cp scenario/* "/t/openttd-$(RELEASE)-morphos/scenario/"
|
||||
@cp readme.txt "/t/openttd-$(RELEASE)-morphos/docs/ReadMe"
|
||||
@cp docs/console.txt "/t/openttd-$(RELEASE)-morphos/docs/Console"
|
||||
@cp COPYING "/t/openttd-$(RELEASE)-morphos/docs/"
|
||||
@cp changelog.txt "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog"
|
||||
@cp known-bugs.txt "/t/openttd-$(RELEASE)-morphos/docs/known-bugs.txt"
|
||||
@cp os/morphos/icons/openttd.info "/t/openttd-$(RELEASE)-morphos/$(TTD).info"
|
||||
@cp os/morphos/icons/docs.info "/t/openttd-$(RELEASE)-morphos/docs.info"
|
||||
@cp os/morphos/icons/drawer.info "/t/openttd-$(RELEASE)-morphos.info"
|
||||
@@ -786,6 +803,7 @@ ifdef OSX
|
||||
release: all
|
||||
@mkdir -p "OpenTTD $(RELEASE)"
|
||||
@mkdir -p "OpenTTD $(RELEASE)"/docs
|
||||
@mkdir -p "OpenTTD $(RELEASE)"/scenario
|
||||
@cp -R $(OSXAPP) "OpenTTD $(RELEASE)"/
|
||||
@cp docs/OSX_where_did_the_package_go.txt "OpenTTD $(RELEASE)"/Where\ did\ the\ package\ go.txt
|
||||
@cp readme.txt "OpenTTD $(RELEASE)"/docs/
|
||||
@@ -795,6 +813,8 @@ release: all
|
||||
@cp changelog.txt "OpenTTD $(RELEASE)"/docs/
|
||||
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD $(RELEASE)"/docs/
|
||||
@cp os/macos/*.webloc "OpenTTD $(RELEASE)"
|
||||
@cp known-bugs.txt "OpenTTD $(RELEASE)"/known-bugs.txt
|
||||
@cp scenario/* "OpenTTD $(RELEASE)"/scenario/
|
||||
@/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD $(RELEASE)" openttd-"$(RELEASE)"-osx.dmg
|
||||
@rm -fr "OpenTTD $(RELEASE)"
|
||||
|
||||
@@ -833,11 +853,11 @@ FORCE:
|
||||
|
||||
|
||||
clean:
|
||||
@echo 'Cleaning up...'; \
|
||||
rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS) endian.h $(ENDIAN_CHECK)
|
||||
@echo '===> Cleaning up'
|
||||
@rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS) endian.h $(ENDIAN_CHECK)
|
||||
|
||||
mrproper: clean
|
||||
rm -rf $(MAKE_CONFIG)
|
||||
@rm -rf $(MAKE_CONFIG)
|
||||
|
||||
ifndef OSX
|
||||
ifndef MORPHOS
|
||||
@@ -865,11 +885,13 @@ endif
|
||||
mkdir -p $(DATA_DIR_INSTALL)/data
|
||||
mkdir -p $(DATA_DIR_INSTALL)/gm
|
||||
mkdir -p $(BINARY_DIR_INSTALL)
|
||||
mkdir -p $(PERSONAL_DIR)/scenario
|
||||
cp $(TTD) $(BINARY_DIR_INSTALL)
|
||||
cp lang/*.lng $(DATA_DIR_INSTALL)/lang
|
||||
cp data/*.grf $(DATA_DIR_INSTALL)/data
|
||||
cp data/opntitle.dat $(DATA_DIR_INSTALL)/data
|
||||
cp media/openttd.64.png $(DATA_DIR_INSTALL)
|
||||
cp scenario/* $(PERSONAL_DIR)/scenario/
|
||||
else #MorphOS
|
||||
install:
|
||||
$(error make install is not supported on MorphOS)
|
||||
@@ -893,8 +915,8 @@ love:
|
||||
# Export all variables set to subprocesses (a bit dirty)
|
||||
.EXPORT_ALL_VARIABLES:
|
||||
upgradeconf: $(MAKE_CONFIG)
|
||||
rm $(MAKE_CONFIG)
|
||||
$(MAKE) $(MAKE_CONFIG)
|
||||
@rm $(MAKE_CONFIG)
|
||||
@$(MAKE) $(MAKE_CONFIG)
|
||||
|
||||
.PHONY: upgradeconf
|
||||
|
||||
@@ -912,12 +934,11 @@ DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||
# first compilation round as we just build everything at that time anyway,
|
||||
# therefore we do not need to watch deps.
|
||||
|
||||
#@echo '$(C_BUILD) $<'; \
|
||||
|
||||
|
||||
%.o: %.c $(MAKE_CONFIG) endian.h table/strings.h
|
||||
$(if $(VERBOSE),@echo '$(C_BUILD) $<',@echo 'Compiling $(*F).o'); \
|
||||
$(C_BUILD) $< -Wp,-MD,.deps/$(*F).pp $(VERBOSE_FILTER)
|
||||
@echo '===> Compiling $<'
|
||||
@$(if $(VERBOSE), echo '$(C_BUILD) $<')
|
||||
@$(C_BUILD) $< -Wp,-MD,.deps/$(*F).pp
|
||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
@@ -926,4 +947,5 @@ DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||
|
||||
# For DirectMusic build and BeOS specific parts
|
||||
%.o: %.cpp $(MAKE_CONFIG) endian.h table/strings.h
|
||||
$(CXX_BUILD) $< -o $@
|
||||
@echo '===> Compiling $<'
|
||||
@$(CXX_BUILD) $< -o $@
|
||||
|
||||
@@ -69,10 +69,11 @@ static void AiCase1(Player *p)
|
||||
static void AiStateVehLoop(Player *p)
|
||||
{
|
||||
Vehicle *v;
|
||||
uint index;
|
||||
|
||||
v = p->ai.cur_veh == NULL ? _vehicles : p->ai.cur_veh+1;
|
||||
index = (p->ai.cur_veh == NULL) ? 0 : p->ai.cur_veh->index + 1;
|
||||
|
||||
for (;v != endof(_vehicles); v++) {
|
||||
FOR_ALL_VEHICLES_FROM(v, index) {
|
||||
if (v->type == 0 || v->owner != _current_player)
|
||||
continue;
|
||||
|
||||
@@ -266,14 +267,11 @@ static void AiHandleGotoDepot(Player *p, int cmd)
|
||||
|
||||
static void AiRestoreVehicleOrders(Vehicle *v, BackuppedOrders *bak)
|
||||
{
|
||||
const Order *os = bak->order;
|
||||
int ind = 0;
|
||||
int i;
|
||||
|
||||
while (os++->type != OT_NOTHING) {
|
||||
if (DoCommandByTile(0, v->index + (ind << 16), PackOrder(os), DC_EXEC, CMD_INSERT_ORDER) == CMD_ERROR)
|
||||
for (i = 0; bak->order[i].type != OT_NOTHING; i++)
|
||||
if (!DoCommandP(0, v->index + (i << 16), PackOrder(&bak->order[i]), NULL, CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK))
|
||||
break;
|
||||
ind++;
|
||||
}
|
||||
}
|
||||
|
||||
static void AiHandleReplaceTrain(Player *p)
|
||||
@@ -297,7 +295,7 @@ static void AiHandleReplaceTrain(Player *p)
|
||||
if (DoCommandByTile(0, v->index, 2, DC_EXEC, CMD_SELL_RAIL_WAGON) != CMD_ERROR &&
|
||||
DoCommandByTile(tile, veh, 0, DC_EXEC, CMD_BUILD_RAIL_VEHICLE) != CMD_ERROR) {
|
||||
veh = _new_train_id;
|
||||
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
|
||||
AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
|
||||
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_TRAIN);
|
||||
|
||||
DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
|
||||
@@ -325,7 +323,7 @@ static void AiHandleReplaceRoadVeh(Player *p)
|
||||
if (DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SELL_ROAD_VEH) != CMD_ERROR &&
|
||||
DoCommandByTile(tile, veh, 0, DC_EXEC, CMD_BUILD_ROAD_VEH) != CMD_ERROR) {
|
||||
veh = _new_roadveh_id;
|
||||
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
|
||||
AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
|
||||
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
|
||||
|
||||
DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
|
||||
@@ -353,7 +351,7 @@ static void AiHandleReplaceAircraft(Player *p)
|
||||
if (DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SELL_AIRCRAFT) != CMD_ERROR &&
|
||||
DoCommandByTile(tile, veh, 0, DC_EXEC, CMD_BUILD_AIRCRAFT) != CMD_ERROR) {
|
||||
veh = _new_aircraft_id;
|
||||
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
|
||||
AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
|
||||
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
|
||||
|
||||
DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
|
||||
@@ -412,19 +410,21 @@ typedef struct FoundRoute {
|
||||
void *to;
|
||||
} FoundRoute;
|
||||
|
||||
static Town *AiFindRandomTown() {
|
||||
Town *t = DEREF_TOWN(RandomRange(_total_towns));
|
||||
static Town *AiFindRandomTown(void)
|
||||
{
|
||||
Town *t = GetTown(RandomRange(_total_towns));
|
||||
return (t->xy != 0) ? t : NULL;
|
||||
}
|
||||
|
||||
static Industry *AiFindRandomIndustry() {
|
||||
Industry *i = DEREF_INDUSTRY(RandomRange(_total_industries));
|
||||
static Industry *AiFindRandomIndustry(void)
|
||||
{
|
||||
Industry *i = GetIndustry(RandomRange(_total_industries));
|
||||
return (i->xy != 0) ? i : NULL;
|
||||
}
|
||||
|
||||
static void AiFindSubsidyIndustryRoute(FoundRoute *fr)
|
||||
{
|
||||
int i;
|
||||
uint i;
|
||||
byte cargo;
|
||||
Subsidy *s;
|
||||
Industry *from, *to_ind;
|
||||
@@ -447,16 +447,16 @@ static void AiFindSubsidyIndustryRoute(FoundRoute *fr)
|
||||
return;
|
||||
fr->cargo = cargo;
|
||||
|
||||
fr->from = from = DEREF_INDUSTRY(s->from);
|
||||
fr->from = from = GetIndustry(s->from);
|
||||
|
||||
if (cargo == CT_GOODS || cargo == CT_FOOD) {
|
||||
to_tow = DEREF_TOWN(s->to);
|
||||
to_tow = GetTown(s->to);
|
||||
if (to_tow->population < (uint32)(cargo == CT_FOOD ? 200 : 900))
|
||||
return; // error
|
||||
fr->to = to_tow;
|
||||
to_xy = to_tow->xy;
|
||||
} else {
|
||||
to_ind = DEREF_INDUSTRY(s->to);
|
||||
to_ind = GetIndustry(s->to);
|
||||
fr->to = to_ind;
|
||||
to_xy = to_ind->xy;
|
||||
}
|
||||
@@ -485,8 +485,8 @@ static void AiFindSubsidyPassengerRoute(FoundRoute *fr)
|
||||
return;
|
||||
fr->cargo = s->cargo_type;
|
||||
|
||||
fr->from = from = DEREF_TOWN(s->from);
|
||||
fr->to = to = DEREF_TOWN(s->to);
|
||||
fr->from = from = GetTown(s->from);
|
||||
fr->to = to = GetTown(s->to);
|
||||
|
||||
// They must be big enough
|
||||
if (from->population < 400 || to->population < 400)
|
||||
@@ -621,17 +621,17 @@ static bool AiCheckIfRouteIsGood(Player *p, FoundRoute *fr, byte bitmask)
|
||||
|
||||
static byte AiGetDirectionBetweenTiles(TileIndex a, TileIndex b)
|
||||
{
|
||||
byte i = (GET_TILE_X(a) < GET_TILE_X(b)) ? 1 : 0;
|
||||
if (GET_TILE_Y(a) >= GET_TILE_Y(b)) i ^= 3;
|
||||
byte i = (TileX(a) < TileX(b)) ? 1 : 0;
|
||||
if (TileY(a) >= TileY(b)) i ^= 3;
|
||||
return i;
|
||||
}
|
||||
|
||||
static TileIndex AiGetPctTileBetween(TileIndex a, TileIndex b, byte pct)
|
||||
{
|
||||
return TILE_XY(
|
||||
GET_TILE_X(a) + ((GET_TILE_X(b) - GET_TILE_X(a)) * pct >> 8),
|
||||
GET_TILE_Y(a) + ((GET_TILE_Y(b) - GET_TILE_Y(a)) * pct >> 8)
|
||||
);
|
||||
TileX(a) + ((TileX(b) - TileX(a)) * pct >> 8),
|
||||
TileY(a) + ((TileY(b) - TileY(a)) * pct >> 8)
|
||||
);
|
||||
}
|
||||
|
||||
static void AiWantLongIndustryRoute(Player *p)
|
||||
@@ -1416,7 +1416,7 @@ static void AiWantOilRigAircraftRoute(Player *p)
|
||||
t = AiFindRandomTown();
|
||||
if (t != NULL) {
|
||||
// Find a random oil rig industry
|
||||
in = DEREF_INDUSTRY(RandomRange(lengthof(_industries)));
|
||||
in = GetIndustry(RandomRange(_total_industries));
|
||||
if (in != NULL && in->type == IT_OIL_RIG) {
|
||||
if (GetTileDist(t->xy, in->xy) < 60)
|
||||
break;
|
||||
@@ -1534,7 +1534,7 @@ static bool AiCheckTrackResources(TileIndex tile, const AiDefaultBlockData *p, b
|
||||
int rad;
|
||||
|
||||
for(;p->mode != 4;p++) if (p->mode == 1) {
|
||||
tile2 = TILE_ADD(tile, p->tileoffs);
|
||||
tile2 = TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
|
||||
|
||||
w = ((p->attr>>1) & 7);
|
||||
h = ((p->attr>>4) & 7);
|
||||
@@ -1573,7 +1573,7 @@ static int32 AiDoBuildDefaultRailTrack(TileIndex tile, const AiDefaultBlockData
|
||||
|
||||
for(;;) {
|
||||
// This will seldomly overflow for valid reasons. Mask it to be on the safe side.
|
||||
uint c = TILE_MASK(tile + p->tileoffs);
|
||||
uint c = TILE_MASK(tile + ToTileIndexDiff(p->tileoffs));
|
||||
|
||||
_cleared_town = NULL;
|
||||
|
||||
@@ -1598,7 +1598,7 @@ clear_town_stuff:;
|
||||
}
|
||||
} else if (p->mode == 2) {
|
||||
// Rail
|
||||
if (IS_TILETYPE(c, MP_RAILWAY))
|
||||
if (IsTileType(c, MP_RAILWAY))
|
||||
return CMD_ERROR;
|
||||
|
||||
j = p->attr;
|
||||
@@ -1617,7 +1617,7 @@ clear_town_stuff:;
|
||||
/* signals too? */
|
||||
if (j&3) {
|
||||
// Can't build signals on a road.
|
||||
if (IS_TILETYPE(c, MP_STREET))
|
||||
if (IsTileType(c, MP_STREET))
|
||||
return CMD_ERROR;
|
||||
|
||||
if (flag & DC_EXEC) {
|
||||
@@ -1716,7 +1716,7 @@ static void AiDoTerraformLand(TileIndex tile, int dir, int unk, int mode)
|
||||
unk &= (int)r;
|
||||
|
||||
do {
|
||||
tile = TILE_MASK(tile + _tileoffs_by_dir[dir]);
|
||||
tile = TILE_MASK(tile + TileOffsByDir(dir));
|
||||
|
||||
r >>= 2;
|
||||
if (r&2) {
|
||||
@@ -1822,7 +1822,7 @@ static TileIndex AiGetEdgeOfDefaultRailBlock(byte rule, TileIndex tile, byte cmd
|
||||
|
||||
while (p->mode != 3 || !((--cmd) & 0x80)) p++;
|
||||
|
||||
return tile + p->tileoffs - _tileoffs_by_dir[*dir = p->attr];
|
||||
return tile + ToTileIndexDiff(p->tileoffs) - TileOffsByDir(*dir = p->attr);
|
||||
}
|
||||
|
||||
typedef struct AiRailPathFindData {
|
||||
@@ -1855,7 +1855,7 @@ static bool AiDoFollowTrack(Player *p)
|
||||
arpfd.tile2 = p->ai.cur_tile_a;
|
||||
arpfd.flag = false;
|
||||
arpfd.count = 0;
|
||||
FollowTrack(p->ai.cur_tile_a + _tileoffs_by_dir[p->ai.cur_dir_a], 0x2000 | TRANSPORT_RAIL, p->ai.cur_dir_a^2,
|
||||
FollowTrack(p->ai.cur_tile_a + TileOffsByDir(p->ai.cur_dir_a), 0x2000 | TRANSPORT_RAIL, p->ai.cur_dir_a^2,
|
||||
(TPFEnumProc*)AiEnumFollowTrack, NULL, &arpfd);
|
||||
return arpfd.count > 8;
|
||||
}
|
||||
@@ -1961,8 +1961,8 @@ static inline void AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex tile,
|
||||
// Allow bridges directly over bottom tiles
|
||||
flag = arf->ti.z == 0;
|
||||
for(;;) {
|
||||
if (tile_new < -_tileoffs_by_dir[dir2]) return; // Wraping around map, no bridge possible!
|
||||
tile_new = TILE_MASK(tile_new + _tileoffs_by_dir[dir2]);
|
||||
if (tile_new < -TileOffsByDir(dir2)) return; // Wraping around map, no bridge possible!
|
||||
tile_new = TILE_MASK(tile_new + TileOffsByDir(dir2));
|
||||
FindLandscapeHeightByTile(&arf->ti, tile_new);
|
||||
if (arf->ti.tileh != 0 || arf->ti.type == MP_CLEAR || arf->ti.type == MP_TREES) {
|
||||
if (!flag) return;
|
||||
@@ -2008,7 +2008,7 @@ static void AiBuildRailRecursive(AiRailFinder *arf, TileIndex tile, int dir)
|
||||
{
|
||||
const byte *p;
|
||||
|
||||
tile = TILE_MASK(tile + _tileoffs_by_dir[dir]);
|
||||
tile = TILE_MASK(tile + TileOffsByDir(dir));
|
||||
|
||||
// Reached destination?
|
||||
if (tile == arf->final_tile) {
|
||||
@@ -2126,7 +2126,7 @@ static void AiBuildRailConstruct(Player *p)
|
||||
return;
|
||||
}
|
||||
|
||||
p->ai.cur_tile_a += _tileoffs_by_dir[p->ai.cur_dir_a];
|
||||
p->ai.cur_tile_a += TileOffsByDir(p->ai.cur_dir_a);
|
||||
|
||||
if (arf.best_ptr[0]&0x80) {
|
||||
int i;
|
||||
@@ -2178,12 +2178,12 @@ static bool AiRemoveTileAndGoForward(Player *p)
|
||||
int offs;
|
||||
TileIndex tilenew;
|
||||
|
||||
if (IS_TILETYPE(tile, MP_TUNNELBRIDGE)) {
|
||||
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
|
||||
if (!(_map5[tile] & 0x80)) {
|
||||
// Clear the tunnel and continue at the other side of it.
|
||||
if (DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR) == CMD_ERROR)
|
||||
return false;
|
||||
p->ai.cur_tile_a = TILE_MASK(_build_tunnel_endtile - _tileoffs_by_dir[p->ai.cur_dir_a]);
|
||||
p->ai.cur_tile_a = TILE_MASK(_build_tunnel_endtile - TileOffsByDir(p->ai.cur_dir_a));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2195,7 +2195,7 @@ static bool AiRemoveTileAndGoForward(Player *p)
|
||||
return false;
|
||||
|
||||
// Find other side of bridge.
|
||||
offs = _tileoffs_by_dir[p->ai.cur_dir_a];
|
||||
offs = TileOffsByDir(p->ai.cur_dir_a);
|
||||
do {
|
||||
tile = TILE_MASK(tile - offs);
|
||||
} while (_map5[tile] & 0x40);
|
||||
@@ -2218,7 +2218,7 @@ static bool AiRemoveTileAndGoForward(Player *p)
|
||||
bit = FindFirstBit(b);
|
||||
|
||||
// Then remove and signals if there are any.
|
||||
if (IS_TILETYPE(tile, MP_RAILWAY) &&
|
||||
if (IsTileType(tile, MP_RAILWAY) &&
|
||||
(_map5[tile]&0xC0) == 0x40) {
|
||||
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_REMOVE_SIGNALS);
|
||||
}
|
||||
@@ -2233,7 +2233,7 @@ static bool AiRemoveTileAndGoForward(Player *p)
|
||||
p->ai.cur_dir_a = ptr[1] ^ 2;
|
||||
|
||||
// And then also switch tile.
|
||||
p->ai.cur_tile_a = TILE_MASK(p->ai.cur_tile_a - _tileoffs_by_dir[p->ai.cur_dir_a]);
|
||||
p->ai.cur_tile_a = TILE_MASK(p->ai.cur_tile_a - TileOffsByDir(p->ai.cur_dir_a));
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -2332,7 +2332,7 @@ static void AiStateBuildRail(Player *p)
|
||||
p->ai.cur_tile_a = tile;
|
||||
p->ai.start_dir_a = dir;
|
||||
p->ai.cur_dir_a = dir;
|
||||
DoCommandByTile(TILE_MASK(tile + _tileoffs_by_dir[dir]), 0, (dir&1)?1:0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
|
||||
DoCommandByTile(TILE_MASK(tile + TileOffsByDir(dir)), 0, (dir&1)?1:0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
|
||||
|
||||
assert(TILE_MASK(tile) != 0xFF00);
|
||||
|
||||
@@ -2343,7 +2343,7 @@ static void AiStateBuildRail(Player *p)
|
||||
p->ai.cur_tile_b = tile;
|
||||
p->ai.start_dir_b = dir;
|
||||
p->ai.cur_dir_b = dir;
|
||||
DoCommandByTile(TILE_MASK(tile + _tileoffs_by_dir[dir]), 0, (dir&1)?1:0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
|
||||
DoCommandByTile(TILE_MASK(tile + TileOffsByDir(dir)), 0, (dir&1)?1:0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
|
||||
|
||||
assert(TILE_MASK(tile) != 0xFF00);
|
||||
|
||||
@@ -2357,7 +2357,7 @@ static int AiGetStationIdByDef(TileIndex tile, int id)
|
||||
{
|
||||
const AiDefaultBlockData *p = _default_rail_track_data[id]->data;
|
||||
while (p->mode != 1) p++;
|
||||
return _map2[TILE_ADD(tile,p->tileoffs)];
|
||||
return _map2[TILE_ADD(tile, ToTileIndexDiff(p->tileoffs))];
|
||||
}
|
||||
|
||||
static void AiStateBuildRailVeh(Player *p)
|
||||
@@ -2373,7 +2373,7 @@ static void AiStateBuildRailVeh(Player *p)
|
||||
ptr = _default_rail_track_data[p->ai.src.cur_building_rule]->data;
|
||||
while (ptr->mode != 0) { ptr++; }
|
||||
|
||||
tile = TILE_ADD(p->ai.src.use_tile, ptr->tileoffs);
|
||||
tile = TILE_ADD(p->ai.src.use_tile, ToTileIndexDiff(ptr->tileoffs));
|
||||
|
||||
cargo = p->ai.cargo_type;
|
||||
for(i=0;;) {
|
||||
@@ -2412,7 +2412,7 @@ handle_nocash:
|
||||
loco_id = _new_train_id;
|
||||
|
||||
// Sell a vehicle if the train is double headed.
|
||||
v = &_vehicles[loco_id];
|
||||
v = GetVehicle(loco_id);
|
||||
if (v->next != NULL) {
|
||||
i = p->ai.wagon_list[p->ai.num_wagons*2-2];
|
||||
p->ai.wagon_list[p->ai.num_wagons*2-2] = INVALID_VEHICLE;
|
||||
@@ -2469,7 +2469,7 @@ static void AiStateDeleteRailBlocks(Player *p)
|
||||
if (aib->cur_building_rule != 255) {
|
||||
b = _default_rail_track_data[aib->cur_building_rule]->data;
|
||||
while (b->mode != 4) {
|
||||
DoCommandByTile(TILE_ADD(aib->use_tile, b->tileoffs), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
DoCommandByTile(TILE_ADD(aib->use_tile, ToTileIndexDiff(b->tileoffs)), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
b++;
|
||||
}
|
||||
}
|
||||
@@ -2482,18 +2482,18 @@ static bool AiCheckRoadResources(TileIndex tile, const AiDefaultBlockData *p, by
|
||||
{
|
||||
uint values[NUM_CARGO];
|
||||
int rad;
|
||||
|
||||
|
||||
if (_patches.modified_catchment) {
|
||||
rad = CA_TRUCK; //Same as CA_BUS at the moment?
|
||||
rad = CA_TRUCK; //Same as CA_BUS at the moment?
|
||||
} else { //change that at some point?
|
||||
rad = 4;
|
||||
}
|
||||
|
||||
|
||||
for(;;p++) {
|
||||
if (p->mode == 4) {
|
||||
return true;
|
||||
} else if (p->mode == 1) {
|
||||
uint tile2 = TILE_ADD(tile, p->tileoffs);
|
||||
uint tile2 = TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
|
||||
if (cargo & 0x80) {
|
||||
GetProductionAroundTiles(values, tile2, 1, 1, rad);
|
||||
return values[cargo & 0x7F] != 0;
|
||||
@@ -2536,12 +2536,12 @@ static int32 AiDoBuildDefaultRoadBlock(TileIndex tile, const AiDefaultBlockData
|
||||
int roadflag = 0;
|
||||
|
||||
for(;p->mode != 4;p++) {
|
||||
uint c = TILE_MASK(tile+ p->tileoffs);
|
||||
uint c = TILE_MASK(tile + ToTileIndexDiff(p->tileoffs));
|
||||
|
||||
_cleared_town = NULL;
|
||||
|
||||
if (p->mode == 2) {
|
||||
if (IS_TILETYPE(c, MP_STREET) &&
|
||||
if (IsTileType(c, MP_STREET) &&
|
||||
(_map5[c]&0xF0)==0 &&
|
||||
(_map5[c]&p->attr)!=0) {
|
||||
roadflag |= 2;
|
||||
@@ -2589,7 +2589,7 @@ clear_town_stuff:;
|
||||
if (GetTileSlope(c, NULL) != 0)
|
||||
return CMD_ERROR;
|
||||
|
||||
if (!(IS_TILETYPE(c, MP_STREET) && (_map5[c]&0xF0)==0)) {
|
||||
if (!(IsTileType(c, MP_STREET) && (_map5[c] & 0xF0) == 0)) {
|
||||
r = DoCommandByTile(c, 0, 0, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_LANDSCAPE_CLEAR);
|
||||
if (r == CMD_ERROR) return CMD_ERROR;
|
||||
}
|
||||
@@ -2771,8 +2771,8 @@ static bool AiEnumFollowRoad(uint tile, AiRoadEnum *a, int track, uint length, b
|
||||
uint tile2;
|
||||
|
||||
if (dist <= a->best_dist) {
|
||||
tile2 = TILE_MASK(tile + _tileoffs_by_dir[_dir_by_track[track]]);
|
||||
if (IS_TILETYPE(tile2, MP_STREET) &&
|
||||
tile2 = TILE_MASK(tile + TileOffsByDir(_dir_by_track[track]));
|
||||
if (IsTileType(tile2, MP_STREET) &&
|
||||
(_map5[tile2]&0xF0) == 0) {
|
||||
a->best_dist = dist;
|
||||
a->best_tile = tile;
|
||||
@@ -2799,7 +2799,7 @@ static bool AiCheckRoadFinished(Player *p)
|
||||
int i;
|
||||
|
||||
are.dest = p->ai.cur_tile_b;
|
||||
tile = TILE_MASK(p->ai.cur_tile_a + _tileoffs_by_dir[dir]);
|
||||
tile = TILE_MASK(p->ai.cur_tile_a + TileOffsByDir(dir));
|
||||
|
||||
bits = GetTileTrackStatus(tile, TRANSPORT_ROAD) & _ai_road_table_and[dir];
|
||||
if (bits == 0) {
|
||||
@@ -2850,8 +2850,8 @@ static inline void AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex tile,
|
||||
// Allow bridges directly over bottom tiles
|
||||
flag = arf->ti.z == 0;
|
||||
for(;;) {
|
||||
if (tile_new < -_tileoffs_by_dir[dir2]) return; // Wraping around map, no bridge possible!
|
||||
tile_new = TILE_MASK(tile_new + _tileoffs_by_dir[dir2]);
|
||||
if (tile_new < -TileOffsByDir(dir2)) return; // Wraping around map, no bridge possible!
|
||||
tile_new = TILE_MASK(tile_new + TileOffsByDir(dir2));
|
||||
FindLandscapeHeightByTile(&arf->ti, tile_new);
|
||||
if (arf->ti.tileh != 0 || arf->ti.type == MP_CLEAR || arf->ti.type == MP_TREES) {
|
||||
// Allow a bridge if either we have a tile that's water, rail or street,
|
||||
@@ -2899,7 +2899,7 @@ static void AiBuildRoadRecursive(AiRoadFinder *arf, TileIndex tile, int dir)
|
||||
{
|
||||
const byte *p;
|
||||
|
||||
tile = TILE_MASK(tile + _tileoffs_by_dir[dir]);
|
||||
tile = TILE_MASK(tile + TileOffsByDir(dir));
|
||||
|
||||
// Reached destination?
|
||||
if (tile == arf->final_tile) {
|
||||
@@ -3001,14 +3001,14 @@ do_some_terraform:
|
||||
if (++p->ai.state_counter == 21) {
|
||||
p->ai.state_mode = 1;
|
||||
|
||||
p->ai.cur_tile_a = TILE_MASK(p->ai.cur_tile_a + _tileoffs_by_dir[p->ai.cur_dir_a]);
|
||||
p->ai.cur_tile_a = TILE_MASK(p->ai.cur_tile_a + TileOffsByDir(p->ai.cur_dir_a));
|
||||
p->ai.cur_dir_a ^= 2;
|
||||
p->ai.state_counter = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
tile = TILE_MASK(p->ai.cur_tile_a + _tileoffs_by_dir[p->ai.cur_dir_a]);
|
||||
tile = TILE_MASK(p->ai.cur_tile_a + TileOffsByDir(p->ai.cur_dir_a));
|
||||
|
||||
if (arf.best_ptr[0]&0x80) {
|
||||
int i;
|
||||
@@ -3085,7 +3085,7 @@ static TileIndex AiGetRoadBlockEdge(byte rule, TileIndex tile, int *dir)
|
||||
const AiDefaultBlockData *p = _road_default_block_data[rule]->data;
|
||||
while (p->mode != 1) p++;
|
||||
*dir = p->attr;
|
||||
return TILE_ADD(tile, p->tileoffs);
|
||||
return TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
|
||||
}
|
||||
|
||||
|
||||
@@ -3158,7 +3158,7 @@ static int AiGetStationIdFromRoadBlock(TileIndex tile, int id)
|
||||
{
|
||||
const AiDefaultBlockData *p = _road_default_block_data[id]->data;
|
||||
while (p->mode != 1) p++;
|
||||
return _map2[TILE_ADD(tile, p->tileoffs)];
|
||||
return _map2[TILE_ADD(tile, ToTileIndexDiff(p->tileoffs))];
|
||||
}
|
||||
|
||||
static void AiStateBuildRoadVehicles(Player *p)
|
||||
@@ -3170,7 +3170,7 @@ static void AiStateBuildRoadVehicles(Player *p)
|
||||
|
||||
ptr = _road_default_block_data[p->ai.src.cur_building_rule]->data;
|
||||
for(;ptr->mode != 0;ptr++) {}
|
||||
tile = TILE_ADD(p->ai.src.use_tile, ptr->tileoffs);
|
||||
tile = TILE_ADD(p->ai.src.use_tile, ToTileIndexDiff(ptr->tileoffs));
|
||||
|
||||
veh = AiChooseRoadVehToBuild(p->ai.cargo_type, p->player_money);
|
||||
if (veh == -1) {
|
||||
@@ -3227,7 +3227,7 @@ static void AiStateDeleteRoadBlocks(Player *p)
|
||||
b = _road_default_block_data[aib->cur_building_rule]->data;
|
||||
while (b->mode != 4) {
|
||||
if (b->mode <= 1) {
|
||||
DoCommandByTile(TILE_ADD(aib->use_tile, b->tileoffs), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
DoCommandByTile(TILE_ADD(aib->use_tile, ToTileIndexDiff(b->tileoffs)), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
}
|
||||
b++;
|
||||
}
|
||||
@@ -3339,7 +3339,7 @@ static int32 AiDoBuildDefaultAirportBlock(TileIndex tile, const AiDefaultBlockDa
|
||||
for(;p->mode == 0;p++) {
|
||||
if (!HASBIT(_avail_aircraft, p->attr))
|
||||
return CMD_ERROR;
|
||||
r = DoCommandByTile(TILE_MASK(tile + p->tileoffs), p->attr,0,flag | DC_AUTO | DC_NO_WATER,CMD_BUILD_AIRPORT);
|
||||
r = DoCommandByTile(TILE_MASK(tile + ToTileIndexDiff(p->tileoffs)), p->attr,0,flag | DC_AUTO | DC_NO_WATER,CMD_BUILD_AIRPORT);
|
||||
if (r == CMD_ERROR)
|
||||
return CMD_ERROR;
|
||||
total_cost += r;
|
||||
@@ -3354,15 +3354,15 @@ static bool AiCheckAirportResources(TileIndex tile, const AiDefaultBlockData *p,
|
||||
int w,h;
|
||||
uint tile2;
|
||||
int rad;
|
||||
|
||||
|
||||
if (_patches.modified_catchment) {
|
||||
rad = CA_AIR_LARGE; //I Have NFI what airport the
|
||||
rad = CA_AIR_LARGE; //I Have NFI what airport the
|
||||
} else { //AI is going to build here
|
||||
rad = 4;
|
||||
}
|
||||
|
||||
for(;p->mode==0;p++) {
|
||||
tile2 = TILE_ADD(tile, p->tileoffs);
|
||||
tile2 = TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
|
||||
w = _airport_size_x[p->attr];
|
||||
h = _airport_size_y[p->attr];
|
||||
if (cargo & 0x80) {
|
||||
@@ -3425,9 +3425,9 @@ static void AiStateBuildDefaultAirportBlocks(Player *p)
|
||||
rule = AiFindBestDefaultAirportBlock(aib->use_tile, aib->cargo, p->ai.build_kind, &cost);
|
||||
|
||||
#if 0
|
||||
if (!IS_TILETYPE(aib->use_tile, MP_STREET) &&
|
||||
!IS_TILETYPE(aib->use_tile, MP_RAILWAY) &&
|
||||
!IS_TILETYPE(aib->use_tile, MP_STATION)
|
||||
if (!IsTileType(aib->use_tile, MP_STREET) &&
|
||||
!IsTileType(aib->use_tile, MP_RAILWAY) &&
|
||||
!IsTileType(aib->use_tile, MP_STATION)
|
||||
) {
|
||||
|
||||
_map_type_and_height[aib->use_tile] = 0xa1;
|
||||
@@ -3479,7 +3479,7 @@ static int AiGetStationIdFromAircraftBlock(TileIndex tile, int id)
|
||||
{
|
||||
const AiDefaultBlockData *p = _airport_default_block_data[id];
|
||||
while (p->mode != 1) p++;
|
||||
return _map2[TILE_ADD(tile, p->tileoffs)];
|
||||
return _map2[TILE_ADD(tile, ToTileIndexDiff(p->tileoffs))];
|
||||
}
|
||||
|
||||
static void AiStateBuildAircraftVehicles(Player *p)
|
||||
@@ -3494,7 +3494,7 @@ static void AiStateBuildAircraftVehicles(Player *p)
|
||||
ptr = _airport_default_block_data[p->ai.src.cur_building_rule];
|
||||
for(;ptr->mode!=0;ptr++) {}
|
||||
|
||||
tile = TILE_ADD(p->ai.src.use_tile, ptr->tileoffs);
|
||||
tile = TILE_ADD(p->ai.src.use_tile, ToTileIndexDiff(ptr->tileoffs));
|
||||
|
||||
veh = AiChooseAircraftToBuild(p->player_money, p->ai.build_kind!=0 ? 1 : 0);
|
||||
if (veh == -1) {
|
||||
@@ -3608,7 +3608,7 @@ static void AiStateRemoveStation(Player *p)
|
||||
{
|
||||
// Remove stations that aren't in use by any vehicle
|
||||
byte in_use[256], *used;
|
||||
Order *ord;
|
||||
const Order *ord;
|
||||
Station *st;
|
||||
uint tile;
|
||||
|
||||
@@ -3617,7 +3617,7 @@ static void AiStateRemoveStation(Player *p)
|
||||
|
||||
// Get a list of all stations that are in use by a vehicle
|
||||
memset(in_use, 0, sizeof(in_use));
|
||||
for (ord = _order_array; ord != _ptr_to_next_order; ++ord) {
|
||||
FOR_ALL_ORDERS(ord) {
|
||||
if (ord->type == OT_GOTO_STATION)
|
||||
in_use[ord->station] = 1;
|
||||
}
|
||||
@@ -3642,7 +3642,7 @@ static void AiRemovePlayerRailOrRoad(Player *p, uint tile)
|
||||
{
|
||||
byte m5;
|
||||
|
||||
if (IS_TILETYPE(tile, MP_RAILWAY)) {
|
||||
if (IsTileType(tile, MP_RAILWAY)) {
|
||||
if (_map_owner[tile] != _current_player)
|
||||
return;
|
||||
m5 = _map5[tile];
|
||||
@@ -3696,12 +3696,12 @@ pos_3:
|
||||
static const byte _depot_bits[] = {0x19,0x16,0x25,0x2A};
|
||||
|
||||
m5 &= 3;
|
||||
if (GetRailTrackStatus(tile + _tileoffs_by_dir[m5]) & _depot_bits[m5])
|
||||
if (GetRailTrackStatus(tile + TileOffsByDir(m5)) & _depot_bits[m5])
|
||||
return;
|
||||
|
||||
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
}
|
||||
} else if (IS_TILETYPE(tile, MP_STREET)) {
|
||||
} else if (IsTileType(tile, MP_STREET)) {
|
||||
if (_map_owner[tile] != _current_player)
|
||||
return;
|
||||
|
||||
@@ -3712,19 +3712,19 @@ pos_3:
|
||||
int dir;
|
||||
|
||||
// Check if there are any stations around.
|
||||
if (IS_TILETYPE(tile + TILE_XY(-1,0), MP_STATION) &&
|
||||
if (IsTileType(tile + TILE_XY(-1,0), MP_STATION) &&
|
||||
_map_owner[tile + TILE_XY(-1,0)] == _current_player)
|
||||
return;
|
||||
|
||||
if (IS_TILETYPE(tile + TILE_XY(1,0), MP_STATION) &&
|
||||
if (IsTileType(tile + TILE_XY(1,0), MP_STATION) &&
|
||||
_map_owner[tile + TILE_XY(1,0)] == _current_player)
|
||||
return;
|
||||
|
||||
if (IS_TILETYPE(tile + TILE_XY(0,-1), MP_STATION) &&
|
||||
if (IsTileType(tile + TILE_XY(0,-1), MP_STATION) &&
|
||||
_map_owner[tile + TILE_XY(0,-1)] == _current_player)
|
||||
return;
|
||||
|
||||
if (IS_TILETYPE(tile + TILE_XY(0,1), MP_STATION) &&
|
||||
if (IsTileType(tile + TILE_XY(0,1), MP_STATION) &&
|
||||
_map_owner[tile + TILE_XY(0,1)] == _current_player)
|
||||
return;
|
||||
|
||||
@@ -3732,13 +3732,13 @@ pos_3:
|
||||
|
||||
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
DoCommandByTile(
|
||||
TILE_MASK(tile + _tileoffs_by_dir[dir]),
|
||||
TILE_MASK(tile + TileOffsByDir(dir)),
|
||||
8 >> (dir ^ 2),
|
||||
0,
|
||||
DC_EXEC,
|
||||
CMD_REMOVE_ROAD);
|
||||
}
|
||||
} else if (IS_TILETYPE(tile, MP_TUNNELBRIDGE)) {
|
||||
} else if (IsTileType(tile, MP_TUNNELBRIDGE)) {
|
||||
byte b;
|
||||
|
||||
if (_map_owner[tile] != _current_player || (_map5[tile] & 0xC6) != 0x80)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
#define AI_LOCATE_ROUTE_MAX_COUNTER 200
|
||||
|
||||
// How many days must there be between building the first station and the second station
|
||||
// within one city. This number is in days and should be more then 4 months.
|
||||
// within one city. This number is in days and should be more than 4 months.
|
||||
#define AI_CHECKCITY_DATE_BETWEEN 180
|
||||
|
||||
// How many cargo is needed for one station in a city?
|
||||
@@ -130,7 +130,7 @@
|
||||
// reuse the station instead of building a new one!
|
||||
#define AI_STATION_REUSE_MULTIPLER 2
|
||||
|
||||
// No more then this amount of vehicles per station..
|
||||
// No more than this amount of vehicles per station..
|
||||
#define AI_CHECK_MAX_VEHICLE_PER_STATION 10
|
||||
|
||||
// How many thick between building 2 vehicles
|
||||
@@ -149,7 +149,7 @@
|
||||
// while old vehicles stay longer, because we do get less in return.
|
||||
#define AI_MINIMUM_ROUTE_PROFIT 1000
|
||||
|
||||
// A vehicle is considered lost when he his cargo is more then 180 days old
|
||||
// A vehicle is considered lost when he his cargo is more than 180 days old
|
||||
#define AI_VEHICLE_LOST_DAYS 180
|
||||
|
||||
// How many times may the AI try to find a route before it gives up
|
||||
@@ -168,13 +168,6 @@ static const byte _illegal_curves[6] = {
|
||||
3, // upright and downright are not valid
|
||||
};
|
||||
|
||||
static const TileIndexDiff _tiles_around[4] = {
|
||||
TILE_XY(-1,0),
|
||||
TILE_XY(0,1),
|
||||
TILE_XY(1,0),
|
||||
TILE_XY(0,-1),
|
||||
};
|
||||
|
||||
enum {
|
||||
AI_STATE_STARTUP = 0,
|
||||
AI_STATE_FIRST_TIME,
|
||||
@@ -227,7 +220,7 @@ enum {
|
||||
|
||||
#define AI_NO_CARGO 0xFF // Means that there is no cargo defined yet (used for industry)
|
||||
#define AI_NEED_CARGO 0xFE // Used when the AI needs to find out a cargo for the route
|
||||
#define AI_STATION_RANGE TILE_XY(TILE_X_MAX, TILE_Y_MAX)
|
||||
#define AI_STATION_RANGE TILE_XY(MapMaxX(), MapMaxY())
|
||||
|
||||
#define AI_PATHFINDER_NO_DIRECTION (byte)-1
|
||||
|
||||
@@ -235,13 +228,6 @@ enum {
|
||||
#define AI_PATHFINDER_FLAG_BRIDGE 1
|
||||
#define AI_PATHFINDER_FLAG_TUNNEL 2
|
||||
|
||||
// A macro for mp_street, where 0x20 is depot
|
||||
// mp_tunnelbridge, where 0xf0 is a bridge, and 0x4/0x2 means: roadtunnel/bridge
|
||||
#define AI_PATHFINDER_IS_ROAD(tile) ((IS_TILETYPE(tile, MP_STREET) && !(_map5[tile] & 0x20)) || \
|
||||
(IS_TILETYPE(tile, MP_TUNNELBRIDGE) && \
|
||||
(((_map5[tile] & 0x80) == 0 && (_map5[tile] & 0x4) == 0x4) || \
|
||||
((_map5[tile] & 0x80) != 0 && (_map5[tile] & 0x2) == 0x2))))
|
||||
|
||||
typedef void AiNew_StateFunction(Player *p);
|
||||
|
||||
// ai_new.c
|
||||
|
||||
@@ -174,11 +174,11 @@ int AiNew_Build_RoutePart(Player *p, Ai_PathFinderInfo *PathFinderInfo, byte fla
|
||||
if (old_dir != -1 && old_dir != dir) break;
|
||||
old_dir = dir;
|
||||
// There is already some road, and it is a bridge.. don't build!!!
|
||||
if (!IS_TILETYPE(route[part], MP_TUNNELBRIDGE)) {
|
||||
if (!IsTileType(route[part], MP_TUNNELBRIDGE)) {
|
||||
// Build the tile
|
||||
res = DoCommandByTile(route[part], dir, 0, flag | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
// Currently, we ignore CMD_ERRORs!
|
||||
if (res == CMD_ERROR && flag == DC_EXEC && !IS_TILETYPE(route[part], MP_STREET) && !EnsureNoVehicle(route[part])) {
|
||||
if (res == CMD_ERROR && flag == DC_EXEC && !IsTileType(route[part], MP_STREET) && !EnsureNoVehicle(route[part])) {
|
||||
// Problem.. let's just abort it all!
|
||||
DEBUG(ai,0)("Darn, the route could not be builded.. aborting!");
|
||||
p->ainew.state = AI_STATE_NOTHING;
|
||||
@@ -250,7 +250,7 @@ int AiNew_Build_Depot(Player *p, uint tile, byte direction, byte flag) {
|
||||
r = DoCommandByTile(tile, direction, 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_DEPOT);
|
||||
if (r == CMD_ERROR) return r;
|
||||
// Try to build the road from the depot
|
||||
r2 = DoCommandByTile(tile + _tileoffs_by_dir[direction], _roadbits_by_dir[direction], 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
r2 = DoCommandByTile(tile + TileOffsByDir(direction), _roadbits_by_dir[direction], 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
// If it fails, ignore it..
|
||||
if (r2 == CMD_ERROR) return r;
|
||||
return r + r2;
|
||||
|
||||
@@ -185,7 +185,7 @@ static void AiNew_State_ActionDone(Player *p) {
|
||||
// Check if a city or industry is good enough to start a route there
|
||||
static bool AiNew_Check_City_or_Industry(Player *p, int ic, byte type) {
|
||||
if (type == AI_CITY) {
|
||||
Town *t = DEREF_TOWN(ic);
|
||||
Town *t = GetTown(ic);
|
||||
Station *st;
|
||||
int count = 0;
|
||||
int j = 0;
|
||||
@@ -247,7 +247,7 @@ static bool AiNew_Check_City_or_Industry(Player *p, int ic, byte type) {
|
||||
return true;
|
||||
}
|
||||
if (type == AI_INDUSTRY) {
|
||||
Industry *i = DEREF_INDUSTRY(ic);
|
||||
Industry *i = GetIndustry(ic);
|
||||
Station *st;
|
||||
int count = 0;
|
||||
int j = 0;
|
||||
@@ -405,16 +405,16 @@ static void AiNew_State_LocateRoute(Player *p) {
|
||||
// is.
|
||||
|
||||
if (p->ainew.from_type == AI_CITY && p->ainew.tbt == AI_BUS) {
|
||||
int max_cargo = DEREF_TOWN(p->ainew.from_ic)->max_pass + DEREF_TOWN(p->ainew.temp)->max_pass;
|
||||
max_cargo -= DEREF_TOWN(p->ainew.from_ic)->act_pass + DEREF_TOWN(p->ainew.temp)->act_pass;
|
||||
int max_cargo = GetTown(p->ainew.from_ic)->max_pass + GetTown(p->ainew.temp)->max_pass;
|
||||
max_cargo -= GetTown(p->ainew.from_ic)->act_pass + GetTown(p->ainew.temp)->act_pass;
|
||||
// max_cargo is now the amount of cargo we can move between the two cities
|
||||
// If it is more then the distance, we allow it
|
||||
if (GetTileDist(DEREF_TOWN(p->ainew.from_ic)->xy, DEREF_TOWN(p->ainew.temp)->xy) <= max_cargo * AI_LOCATEROUTE_BUS_CARGO_DISTANCE) {
|
||||
// If it is more than the distance, we allow it
|
||||
if (GetTileDist(GetTown(p->ainew.from_ic)->xy, GetTown(p->ainew.temp)->xy) <= max_cargo * AI_LOCATEROUTE_BUS_CARGO_DISTANCE) {
|
||||
// We found a good city/industry, save the data of it
|
||||
p->ainew.to_ic = p->ainew.temp;
|
||||
p->ainew.state = AI_STATE_FIND_STATION;
|
||||
|
||||
DEBUG(ai,1)("[AiNew - LocateRoute] Found bus-route of %d tiles long (from %d to %d)",GetTileDist(DEREF_TOWN(p->ainew.from_ic)->xy, DEREF_TOWN(p->ainew.temp)->xy), p->ainew.from_ic, p->ainew.temp);
|
||||
DEBUG(ai,1)("[AiNew - LocateRoute] Found bus-route of %d tiles long (from %d to %d)",GetTileDist(GetTown(p->ainew.from_ic)->xy, GetTown(p->ainew.temp)->xy), p->ainew.from_ic, p->ainew.temp);
|
||||
|
||||
p->ainew.from_tile = 0;
|
||||
p->ainew.to_tile = 0;
|
||||
@@ -427,12 +427,12 @@ static void AiNew_State_LocateRoute(Player *p) {
|
||||
int i;
|
||||
// TODO: in max_cargo, also check other cargo (beside [0])
|
||||
// First we check if the from_ic produces cargo that this ic accepts
|
||||
if (DEREF_INDUSTRY(p->ainew.from_ic)->produced_cargo[0] != 0xFF && DEREF_INDUSTRY(p->ainew.from_ic)->total_production[0] != 0) {
|
||||
if (GetIndustry(p->ainew.from_ic)->produced_cargo[0] != 0xFF && GetIndustry(p->ainew.from_ic)->total_production[0] != 0) {
|
||||
for (i=0;i<3;i++) {
|
||||
if (DEREF_INDUSTRY(p->ainew.temp)->accepts_cargo[i] == 0xFF) break;
|
||||
if (DEREF_INDUSTRY(p->ainew.from_ic)->produced_cargo[0] == DEREF_INDUSTRY(p->ainew.temp)->accepts_cargo[i]) {
|
||||
if (GetIndustry(p->ainew.temp)->accepts_cargo[i] == 0xFF) break;
|
||||
if (GetIndustry(p->ainew.from_ic)->produced_cargo[0] == GetIndustry(p->ainew.temp)->accepts_cargo[i]) {
|
||||
// Found a compatbiel industry
|
||||
max_cargo = DEREF_INDUSTRY(p->ainew.from_ic)->total_production[0] - DEREF_INDUSTRY(p->ainew.from_ic)->total_transported[0];
|
||||
max_cargo = GetIndustry(p->ainew.from_ic)->total_production[0] - GetIndustry(p->ainew.from_ic)->total_transported[0];
|
||||
found = true;
|
||||
p->ainew.from_deliver = true;
|
||||
p->ainew.to_deliver = false;
|
||||
@@ -440,14 +440,14 @@ static void AiNew_State_LocateRoute(Player *p) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found && DEREF_INDUSTRY(p->ainew.temp)->produced_cargo[0] != 0xFF && DEREF_INDUSTRY(p->ainew.temp)->total_production[0] != 0) {
|
||||
if (!found && GetIndustry(p->ainew.temp)->produced_cargo[0] != 0xFF && GetIndustry(p->ainew.temp)->total_production[0] != 0) {
|
||||
// If not check if the current ic produces cargo that the from_ic accepts
|
||||
for (i=0;i<3;i++) {
|
||||
if (DEREF_INDUSTRY(p->ainew.from_ic)->accepts_cargo[i] == 0xFF) break;
|
||||
if (DEREF_INDUSTRY(p->ainew.temp)->produced_cargo[0] == DEREF_INDUSTRY(p->ainew.from_ic)->accepts_cargo[i]) {
|
||||
if (GetIndustry(p->ainew.from_ic)->accepts_cargo[i] == 0xFF) break;
|
||||
if (GetIndustry(p->ainew.temp)->produced_cargo[0] == GetIndustry(p->ainew.from_ic)->accepts_cargo[i]) {
|
||||
// Found a compatbiel industry
|
||||
found = true;
|
||||
max_cargo = DEREF_INDUSTRY(p->ainew.temp)->total_production[0] - DEREF_INDUSTRY(p->ainew.from_ic)->total_transported[0];
|
||||
max_cargo = GetIndustry(p->ainew.temp)->total_production[0] - GetIndustry(p->ainew.from_ic)->total_transported[0];
|
||||
p->ainew.from_deliver = false;
|
||||
p->ainew.to_deliver = true;
|
||||
break;
|
||||
@@ -457,17 +457,17 @@ static void AiNew_State_LocateRoute(Player *p) {
|
||||
if (found) {
|
||||
// Yeah, they are compatible!!!
|
||||
// Check the length against the amount of goods
|
||||
if (GetTileDist(DEREF_INDUSTRY(p->ainew.from_ic)->xy, DEREF_INDUSTRY(p->ainew.temp)->xy) > AI_LOCATEROUTE_TRUCK_MIN_DISTANCE &&
|
||||
GetTileDist(DEREF_INDUSTRY(p->ainew.from_ic)->xy, DEREF_INDUSTRY(p->ainew.temp)->xy) <= max_cargo * AI_LOCATEROUTE_TRUCK_CARGO_DISTANCE) {
|
||||
if (GetTileDist(GetIndustry(p->ainew.from_ic)->xy, GetIndustry(p->ainew.temp)->xy) > AI_LOCATEROUTE_TRUCK_MIN_DISTANCE &&
|
||||
GetTileDist(GetIndustry(p->ainew.from_ic)->xy, GetIndustry(p->ainew.temp)->xy) <= max_cargo * AI_LOCATEROUTE_TRUCK_CARGO_DISTANCE) {
|
||||
p->ainew.to_ic = p->ainew.temp;
|
||||
if (p->ainew.from_deliver) {
|
||||
p->ainew.cargo = DEREF_INDUSTRY(p->ainew.from_ic)->produced_cargo[0];
|
||||
p->ainew.cargo = GetIndustry(p->ainew.from_ic)->produced_cargo[0];
|
||||
} else {
|
||||
p->ainew.cargo = DEREF_INDUSTRY(p->ainew.temp)->produced_cargo[0];
|
||||
p->ainew.cargo = GetIndustry(p->ainew.temp)->produced_cargo[0];
|
||||
}
|
||||
p->ainew.state = AI_STATE_FIND_STATION;
|
||||
|
||||
DEBUG(ai,1)("[AiNew - LocateRoute] Found truck-route of %d tiles long (from %d to %d)",GetTileDist(DEREF_INDUSTRY(p->ainew.from_ic)->xy, DEREF_INDUSTRY(p->ainew.temp)->xy), p->ainew.from_ic, p->ainew.temp);
|
||||
DEBUG(ai,1)("[AiNew - LocateRoute] Found truck-route of %d tiles long (from %d to %d)",GetTileDist(GetIndustry(p->ainew.from_ic)->xy, GetIndustry(p->ainew.temp)->xy), p->ainew.from_ic, p->ainew.temp);
|
||||
|
||||
p->ainew.from_tile = 0;
|
||||
p->ainew.to_tile = 0;
|
||||
@@ -493,7 +493,7 @@ static void AiNew_State_LocateRoute(Player *p) {
|
||||
p->ainew.last_id = p->ainew.temp;
|
||||
}
|
||||
|
||||
// Check if there are not more then a certain amount of vehicles pointed to a certain
|
||||
// Check if there are not more than a certain amount of vehicles pointed to a certain
|
||||
// station. This to prevent 10 busses going to one station, which gives... problems ;)
|
||||
static bool AiNew_CheckVehicleStation(Player *p, Station *st) {
|
||||
int count = 0;
|
||||
@@ -502,14 +502,12 @@ static bool AiNew_CheckVehicleStation(Player *p, Station *st) {
|
||||
// Also check if we don't have already a lot of busses to this city...
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->owner == _current_player) {
|
||||
const Order *sched = v->schedule_ptr;
|
||||
if (sched != NULL) {
|
||||
for (; sched->type != OT_NOTHING; ++sched) {
|
||||
if (sched->type == OT_GOTO_STATION &&
|
||||
DEREF_STATION(sched->station) == st) {
|
||||
// This vehicle has this city in his list
|
||||
count++;
|
||||
}
|
||||
const Order *order;
|
||||
|
||||
FOR_VEHICLE_ORDERS(v, order) {
|
||||
if (order->type == OT_GOTO_STATION && GetStation(order->station) == st) {
|
||||
// This vehicle has this city in its list
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -533,19 +531,19 @@ static void AiNew_State_FindStation(Player *p) {
|
||||
if (p->ainew.from_tile == 0) {
|
||||
// First we scan for a station in the from-city
|
||||
if (p->ainew.from_type == AI_CITY) {
|
||||
town = DEREF_TOWN(p->ainew.from_ic);
|
||||
town = GetTown(p->ainew.from_ic);
|
||||
tile = town->xy;
|
||||
} else {
|
||||
industry = DEREF_INDUSTRY(p->ainew.from_ic);
|
||||
industry = GetIndustry(p->ainew.from_ic);
|
||||
tile = industry->xy;
|
||||
}
|
||||
} else if (p->ainew.to_tile == 0) {
|
||||
// Second we scan for a station in the to-city
|
||||
if (p->ainew.to_type == AI_CITY) {
|
||||
town = DEREF_TOWN(p->ainew.to_ic);
|
||||
town = GetTown(p->ainew.to_ic);
|
||||
tile = town->xy;
|
||||
} else {
|
||||
industry = DEREF_INDUSTRY(p->ainew.to_ic);
|
||||
industry = GetIndustry(p->ainew.to_ic);
|
||||
tile = industry->xy;
|
||||
}
|
||||
} else {
|
||||
@@ -558,7 +556,7 @@ static void AiNew_State_FindStation(Player *p) {
|
||||
|
||||
// First, we are going to look at the stations that already exist inside the city
|
||||
// If there is enough cargo left in the station, we take that station
|
||||
// If that is not possible, and there are more then 2 stations in the city, abort
|
||||
// If that is not possible, and there are more than 2 stations in the city, abort
|
||||
i = AiNew_PickVehicle(p);
|
||||
// Euhmz, this should not happen _EVER_
|
||||
// Quit finding a route...
|
||||
@@ -588,7 +586,7 @@ static void AiNew_State_FindStation(Player *p) {
|
||||
}
|
||||
// We are going to add a new station...
|
||||
if (new_tile == 0) count++;
|
||||
// No more then 2 stations allowed in a city
|
||||
// No more than 2 stations allowed in a city
|
||||
// This is because only the best 2 stations of one cargo do get any cargo
|
||||
if (count > 2) {
|
||||
p->ainew.state = AI_STATE_NOTHING;
|
||||
@@ -606,10 +604,10 @@ static void AiNew_State_FindStation(Player *p) {
|
||||
// where we get the most cargo and where it is buildable.
|
||||
// TODO: also check for station of myself and make sure we are not
|
||||
// taking eachothers passangers away (bad result when it does not)
|
||||
for (x = GET_TILE_X(tile) - AI_FINDSTATION_TILE_RANGE; x <= GET_TILE_X(tile) + AI_FINDSTATION_TILE_RANGE; x++) {
|
||||
for (y = GET_TILE_Y(tile) - AI_FINDSTATION_TILE_RANGE; y <= GET_TILE_Y(tile) + AI_FINDSTATION_TILE_RANGE; y++) {
|
||||
for (x = TileX(tile) - AI_FINDSTATION_TILE_RANGE; x <= TileX(tile) + AI_FINDSTATION_TILE_RANGE; x++) {
|
||||
for (y = TileY(tile) - AI_FINDSTATION_TILE_RANGE; y <= TileY(tile) + AI_FINDSTATION_TILE_RANGE; y++) {
|
||||
new_tile = TILE_XY(x,y);
|
||||
if (IS_TILETYPE(new_tile, MP_CLEAR) || IS_TILETYPE(new_tile, MP_TREES)) {
|
||||
if (IsTileType(new_tile, MP_CLEAR) || IsTileType(new_tile, MP_TREES)) {
|
||||
// This tile we can build on!
|
||||
// Check acceptance
|
||||
// XXX - Get the catchment area
|
||||
@@ -682,8 +680,8 @@ static void AiNew_State_FindPath(Player *p) {
|
||||
// Init path_info
|
||||
if (p->ainew.from_tile == AI_STATION_RANGE) {
|
||||
// For truck routes we take a range around the industry
|
||||
p->ainew.path_info.start_tile_tl = DEREF_INDUSTRY(p->ainew.from_ic)->xy - TILE_XY(1,1);
|
||||
p->ainew.path_info.start_tile_br = DEREF_INDUSTRY(p->ainew.from_ic)->xy + TILE_XY(DEREF_INDUSTRY(p->ainew.from_ic)->width, DEREF_INDUSTRY(p->ainew.from_ic)->height) + TILE_XY(1,1);
|
||||
p->ainew.path_info.start_tile_tl = GetIndustry(p->ainew.from_ic)->xy - TILE_XY(1,1);
|
||||
p->ainew.path_info.start_tile_br = GetIndustry(p->ainew.from_ic)->xy + TILE_XY(GetIndustry(p->ainew.from_ic)->width, GetIndustry(p->ainew.from_ic)->height) + TILE_XY(1,1);
|
||||
p->ainew.path_info.start_direction = p->ainew.from_direction;
|
||||
} else {
|
||||
p->ainew.path_info.start_tile_tl = p->ainew.from_tile;
|
||||
@@ -692,8 +690,8 @@ static void AiNew_State_FindPath(Player *p) {
|
||||
}
|
||||
|
||||
if (p->ainew.to_tile == AI_STATION_RANGE) {
|
||||
p->ainew.path_info.end_tile_tl = DEREF_INDUSTRY(p->ainew.to_ic)->xy - TILE_XY(1,1);
|
||||
p->ainew.path_info.end_tile_br = DEREF_INDUSTRY(p->ainew.to_ic)->xy + TILE_XY(DEREF_INDUSTRY(p->ainew.to_ic)->width, DEREF_INDUSTRY(p->ainew.to_ic)->height) + TILE_XY(1,1);
|
||||
p->ainew.path_info.end_tile_tl = GetIndustry(p->ainew.to_ic)->xy - TILE_XY(1,1);
|
||||
p->ainew.path_info.end_tile_br = GetIndustry(p->ainew.to_ic)->xy + TILE_XY(GetIndustry(p->ainew.to_ic)->width, GetIndustry(p->ainew.to_ic)->height) + TILE_XY(1,1);
|
||||
p->ainew.path_info.end_direction = p->ainew.to_direction;
|
||||
} else {
|
||||
p->ainew.path_info.end_tile_tl = p->ainew.to_tile;
|
||||
@@ -745,16 +743,16 @@ static void AiNew_State_FindDepot(Player *p) {
|
||||
|
||||
for (i=2;i<p->ainew.path_info.route_length-2;i++) {
|
||||
tile = p->ainew.path_info.route[i];
|
||||
for (j=0;j<lengthof(_tileoffs_by_dir);j++) {
|
||||
if (IS_TILETYPE(tile + _tileoffs_by_dir[j], MP_STREET)) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
if (IsTileType(tile + TileOffsByDir(j), MP_STREET)) {
|
||||
// Its a street, test if it is a depot
|
||||
if (_map5[tile + _tileoffs_by_dir[j]] & 0x20) {
|
||||
if (_map5[tile + TileOffsByDir(j)] & 0x20) {
|
||||
// We found a depot, is it ours? (TELL ME!!!)
|
||||
if (_map_owner[tile + _tileoffs_by_dir[j]] == _current_player) {
|
||||
if (_map_owner[tile + TileOffsByDir(j)] == _current_player) {
|
||||
// Now, is it pointing to the right direction.........
|
||||
if ((_map5[tile + _tileoffs_by_dir[j]] & 3) == (j ^ 2)) {
|
||||
if ((_map5[tile + TileOffsByDir(j)] & 3) == (j ^ 2)) {
|
||||
// Yeah!!!
|
||||
p->ainew.depot_tile = tile + _tileoffs_by_dir[j];
|
||||
p->ainew.depot_tile = tile + TileOffsByDir(j);
|
||||
p->ainew.depot_direction = j ^ 2; // Reverse direction
|
||||
p->ainew.state = AI_STATE_VERIFY_ROUTE;
|
||||
return;
|
||||
@@ -781,28 +779,28 @@ static void AiNew_State_FindDepot(Player *p) {
|
||||
|
||||
tile = p->ainew.path_info.route[i];
|
||||
|
||||
for (j=0;j<lengthof(_tileoffs_by_dir);j++) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
// It may not be placed on the road/rail itself
|
||||
// And because it is not build yet, we can't see it on the tile..
|
||||
// So check the surrounding tiles :)
|
||||
if (tile + _tileoffs_by_dir[j] == p->ainew.path_info.route[i-1] ||
|
||||
tile + _tileoffs_by_dir[j] == p->ainew.path_info.route[i+1]) continue;
|
||||
if (tile + TileOffsByDir(j) == p->ainew.path_info.route[i-1] ||
|
||||
tile + TileOffsByDir(j) == p->ainew.path_info.route[i+1]) continue;
|
||||
// Not around a bridge?
|
||||
if (p->ainew.path_info.route_extra[i] != 0) continue;
|
||||
if (IS_TILETYPE(tile, MP_TUNNELBRIDGE)) continue;
|
||||
if (IsTileType(tile, MP_TUNNELBRIDGE)) continue;
|
||||
// Is the terrain clear?
|
||||
if (IS_TILETYPE(tile + _tileoffs_by_dir[j], MP_CLEAR) ||
|
||||
IS_TILETYPE(tile + _tileoffs_by_dir[j], MP_TREES)) {
|
||||
if (IsTileType(tile + TileOffsByDir(j), MP_CLEAR) ||
|
||||
IsTileType(tile + TileOffsByDir(j), MP_TREES)) {
|
||||
TileInfo ti;
|
||||
FindLandscapeHeightByTile(&ti, tile);
|
||||
// If the current tile is on a slope (tileh != 0) then we do not allow this
|
||||
if (ti.tileh != 0) continue;
|
||||
// Check if everything went okay..
|
||||
r = AiNew_Build_Depot(p, tile + _tileoffs_by_dir[j], j ^ 2, 0);
|
||||
r = AiNew_Build_Depot(p, tile + TileOffsByDir(j), j ^ 2, 0);
|
||||
if (r == CMD_ERROR) continue;
|
||||
// Found a spot!
|
||||
p->ainew.new_cost += r;
|
||||
p->ainew.depot_tile = tile + _tileoffs_by_dir[j];
|
||||
p->ainew.depot_tile = tile + TileOffsByDir(j);
|
||||
p->ainew.depot_direction = j ^ 2; // Reverse direction
|
||||
p->ainew.state = AI_STATE_VERIFY_ROUTE;
|
||||
return;
|
||||
@@ -847,11 +845,11 @@ static int AiNew_HowManyVehicles(Player *p) {
|
||||
// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
|
||||
tiles_a_day = RoadVehInfo(i)->max_speed * DAY_TICKS / 256 / 16;
|
||||
if (p->ainew.from_deliver)
|
||||
max_cargo = DEREF_INDUSTRY(p->ainew.from_ic)->total_production[0];
|
||||
max_cargo = GetIndustry(p->ainew.from_ic)->total_production[0];
|
||||
else
|
||||
max_cargo = DEREF_INDUSTRY(p->ainew.to_ic)->total_production[0];
|
||||
max_cargo = GetIndustry(p->ainew.to_ic)->total_production[0];
|
||||
|
||||
// This is because moving 60% is more then we can dream of!
|
||||
// This is because moving 60% is more than we can dream of!
|
||||
max_cargo *= 0.6;
|
||||
// We want all the cargo to be gone in a month.. so, we know the cargo it delivers
|
||||
// we know what the vehicle takes with him, and we know the time it takes him
|
||||
@@ -931,11 +929,11 @@ static void AiNew_State_BuildStation(Player *p) {
|
||||
int res = 0;
|
||||
assert(p->ainew.state == AI_STATE_BUILD_STATION);
|
||||
if (p->ainew.temp == 0) {
|
||||
if (!IS_TILETYPE(p->ainew.from_tile, MP_STATION))
|
||||
if (!IsTileType(p->ainew.from_tile, MP_STATION))
|
||||
res = AiNew_Build_Station(p, p->ainew.tbt, p->ainew.from_tile, 0, 0, p->ainew.from_direction, DC_EXEC);
|
||||
}
|
||||
else {
|
||||
if (!IS_TILETYPE(p->ainew.to_tile, MP_STATION))
|
||||
if (!IsTileType(p->ainew.to_tile, MP_STATION))
|
||||
res = AiNew_Build_Station(p, p->ainew.tbt, p->ainew.to_tile, 0, 0, p->ainew.to_direction, DC_EXEC);
|
||||
p->ainew.state = AI_STATE_BUILD_PATH;
|
||||
}
|
||||
@@ -984,14 +982,14 @@ static void AiNew_State_BuildPath(Player *p) {
|
||||
int i, r;
|
||||
for (i=0;i<2;i++) {
|
||||
if (i == 0) {
|
||||
tile = p->ainew.from_tile + _tileoffs_by_dir[p->ainew.from_direction];
|
||||
tile = p->ainew.from_tile + TileOffsByDir(p->ainew.from_direction);
|
||||
dir1 = p->ainew.from_direction - 1;
|
||||
if (dir1 < 0) dir1 = 3;
|
||||
dir2 = p->ainew.from_direction + 1;
|
||||
if (dir2 > 3) dir2 = 0;
|
||||
dir3 = p->ainew.from_direction;
|
||||
} else {
|
||||
tile = p->ainew.to_tile + _tileoffs_by_dir[p->ainew.to_direction];
|
||||
tile = p->ainew.to_tile + TileOffsByDir(p->ainew.to_direction);
|
||||
dir1 = p->ainew.to_direction - 1;
|
||||
if (dir1 < 0) dir1 = 3;
|
||||
dir2 = p->ainew.to_direction + 1;
|
||||
@@ -1001,11 +999,11 @@ static void AiNew_State_BuildPath(Player *p) {
|
||||
|
||||
r = DoCommandByTile(tile, _roadbits_by_dir[dir1], 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
if (r != CMD_ERROR) {
|
||||
dir1 = _tileoffs_by_dir[dir1];
|
||||
if (IS_TILETYPE(tile+dir1, MP_CLEAR) || IS_TILETYPE(tile+dir1, MP_TREES)) {
|
||||
dir1 = TileOffsByDir(dir1);
|
||||
if (IsTileType(tile + dir1, MP_CLEAR) || IsTileType(tile + dir1, MP_TREES)) {
|
||||
r = DoCommandByTile(tile+dir1, AiNew_GetRoadDirection(tile, tile+dir1, tile+dir1+dir1), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
if (r != CMD_ERROR) {
|
||||
if (IS_TILETYPE(tile+dir1+dir1, MP_CLEAR) || IS_TILETYPE(tile+dir1+dir1, MP_TREES))
|
||||
if (IsTileType(tile + dir1 + dir1, MP_CLEAR) || IsTileType(tile + dir1 + dir1, MP_TREES))
|
||||
DoCommandByTile(tile+dir1+dir1, AiNew_GetRoadDirection(tile+dir1, tile+dir1+dir1, tile+dir1+dir1+dir1), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
}
|
||||
}
|
||||
@@ -1013,11 +1011,11 @@ static void AiNew_State_BuildPath(Player *p) {
|
||||
|
||||
r = DoCommandByTile(tile, _roadbits_by_dir[dir2], 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
if (r != CMD_ERROR) {
|
||||
dir2 = _tileoffs_by_dir[dir2];
|
||||
if (IS_TILETYPE(tile+dir2, MP_CLEAR) || IS_TILETYPE(tile+dir2, MP_TREES)) {
|
||||
dir2 = TileOffsByDir(dir2);
|
||||
if (IsTileType(tile + dir2, MP_CLEAR) || IsTileType(tile + dir2, MP_TREES)) {
|
||||
r = DoCommandByTile(tile+dir2, AiNew_GetRoadDirection(tile, tile+dir2, tile+dir2+dir2), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
if (r != CMD_ERROR) {
|
||||
if (IS_TILETYPE(tile+dir2+dir2, MP_CLEAR) || IS_TILETYPE(tile+dir2+dir2, MP_TREES))
|
||||
if (IsTileType(tile + dir2 + dir2, MP_CLEAR) || IsTileType(tile + dir2 + dir2, MP_TREES))
|
||||
DoCommandByTile(tile+dir2+dir2, AiNew_GetRoadDirection(tile+dir2, tile+dir2+dir2, tile+dir2+dir2+dir2), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
}
|
||||
}
|
||||
@@ -1025,11 +1023,11 @@ static void AiNew_State_BuildPath(Player *p) {
|
||||
|
||||
r = DoCommandByTile(tile, _roadbits_by_dir[dir3^2], 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
if (r != CMD_ERROR) {
|
||||
dir3 = _tileoffs_by_dir[dir3];
|
||||
if (IS_TILETYPE(tile+dir3, MP_CLEAR) || IS_TILETYPE(tile+dir3, MP_TREES)) {
|
||||
dir3 = TileOffsByDir(dir3);
|
||||
if (IsTileType(tile + dir3, MP_CLEAR) || IsTileType(tile + dir3, MP_TREES)) {
|
||||
r = DoCommandByTile(tile+dir3, AiNew_GetRoadDirection(tile, tile+dir3, tile+dir3+dir3), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
if (r != CMD_ERROR) {
|
||||
if (IS_TILETYPE(tile+dir3+dir3, MP_CLEAR) || IS_TILETYPE(tile+dir3+dir3, MP_TREES))
|
||||
if (IsTileType(tile + dir3 + dir3, MP_CLEAR) || IsTileType(tile + dir3 + dir3, MP_TREES))
|
||||
DoCommandByTile(tile+dir3+dir3, AiNew_GetRoadDirection(tile+dir3, tile+dir3+dir3, tile+dir3+dir3+dir3), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
|
||||
}
|
||||
}
|
||||
@@ -1048,7 +1046,7 @@ static void AiNew_State_BuildDepot(Player *p) {
|
||||
int res = 0;
|
||||
assert(p->ainew.state == AI_STATE_BUILD_DEPOT);
|
||||
|
||||
if (IS_TILETYPE(p->ainew.depot_tile, MP_STREET) && _map5[p->ainew.depot_tile] & 0x20) {
|
||||
if (IsTileType(p->ainew.depot_tile, MP_STREET) && _map5[p->ainew.depot_tile] & 0x20) {
|
||||
if (_map_owner[p->ainew.depot_tile] == _current_player) {
|
||||
// The depot is already builded!
|
||||
p->ainew.state = AI_STATE_BUILD_VEHICLE;
|
||||
@@ -1061,7 +1059,7 @@ static void AiNew_State_BuildDepot(Player *p) {
|
||||
}
|
||||
|
||||
// There is a bus on the tile we want to build road on... idle till he is gone! (BAD PERSON! :p)
|
||||
if (!EnsureNoVehicle(p->ainew.depot_tile + _tileoffs_by_dir[p->ainew.depot_direction]))
|
||||
if (!EnsureNoVehicle(p->ainew.depot_tile + TileOffsByDir(p->ainew.depot_direction)))
|
||||
return;
|
||||
|
||||
res = AiNew_Build_Depot(p, p->ainew.depot_tile, p->ainew.depot_direction, DC_EXEC);
|
||||
@@ -1134,7 +1132,7 @@ static void AiNew_State_GiveOrders(Player *p) {
|
||||
p->ainew.veh_main_id = p->ainew.veh_id;
|
||||
}
|
||||
|
||||
// When more then 1 vehicle, we send them to different directions
|
||||
// When more than 1 vehicle, we send them to different directions
|
||||
idx = 0;
|
||||
order.type = OT_GOTO_STATION;
|
||||
order.flags = 0;
|
||||
@@ -1188,7 +1186,7 @@ static void AiNew_CheckVehicle(Player *p, Vehicle *v) {
|
||||
|
||||
// When a vehicle is older then 1 year, it should make money...
|
||||
if (v->age > 360) {
|
||||
// If both years together are not more then AI_MINIMUM_ROUTE_PROFIT,
|
||||
// If both years together are not more than AI_MINIMUM_ROUTE_PROFIT,
|
||||
// it is not worth the line I guess...
|
||||
if (v->profit_last_year + v->profit_this_year < AI_MINIMUM_ROUTE_PROFIT ||
|
||||
(v->reliability * 100 >> 16) < 40) {
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
|
||||
// Tests if a station can be build on the given spot
|
||||
// TODO: make it train compatible
|
||||
bool TestCanBuildStationHere(uint tile, byte dir) {
|
||||
static bool TestCanBuildStationHere(uint tile, byte dir)
|
||||
{
|
||||
Player *p = DEREF_PLAYER(_current_player);
|
||||
if (dir == TEST_STATION_NO_DIR) {
|
||||
// TODO: currently we only allow spots that can be access from al 4 directions...
|
||||
@@ -27,16 +28,32 @@ bool TestCanBuildStationHere(uint tile, byte dir) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
static bool IsRoad(TileIndex tile)
|
||||
{
|
||||
return
|
||||
// MP_STREET, but not a road depot?
|
||||
(IsTileType(tile, MP_STREET) && !(_map5[tile] & 0x20)) ||
|
||||
(IsTileType(tile, MP_TUNNELBRIDGE) && (
|
||||
// road tunnel?
|
||||
((_map5[tile] & 0x80) == 0 && (_map5[tile] & 0x4) == 0x4) ||
|
||||
// road bridge?
|
||||
((_map5[tile] & 0x80) != 0 && (_map5[tile] & 0x2) == 0x2)
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
// Checks if a tile 'a' is between the tiles 'b' and 'c'
|
||||
#define TILES_BETWEEN(a,b,c) (GET_TILE_X(a) >= GET_TILE_X(b) && GET_TILE_X(a) <= GET_TILE_X(c) && GET_TILE_Y(a) >= GET_TILE_Y(b) && GET_TILE_Y(a) <= GET_TILE_Y(c))
|
||||
#define TILES_BETWEEN(a, b, c) (TileX(a) >= TileX(b) && TileX(a) <= TileX(c) && TileY(a) >= TileY(b) && TileY(a) <= TileY(c))
|
||||
|
||||
// Check if the current tile is in our end-area
|
||||
int32 AyStar_AiPathFinder_EndNodeCheck(AyStar *aystar, OpenListNode *current) {
|
||||
static int32 AyStar_AiPathFinder_EndNodeCheck(AyStar *aystar, OpenListNode *current)
|
||||
{
|
||||
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target;
|
||||
// It is not allowed to have a station on the end of a bridge or tunnel ;)
|
||||
if (current->path.node.user_data[0] != 0) return AYSTAR_DONE;
|
||||
if (TILES_BETWEEN(current->path.node.tile, PathFinderInfo->end_tile_tl, PathFinderInfo->end_tile_br))
|
||||
if (IS_TILETYPE(current->path.node.tile, MP_CLEAR) || IS_TILETYPE(current->path.node.tile, MP_TREES))
|
||||
if (IsTileType(current->path.node.tile, MP_CLEAR) || IsTileType(current->path.node.tile, MP_TREES))
|
||||
if (current->path.parent == NULL || TestCanBuildStationHere(current->path.node.tile,AiNew_GetDirection(current->path.parent->node.tile, current->path.node.tile)))
|
||||
return AYSTAR_FOUND_END_NODE;
|
||||
|
||||
@@ -45,12 +62,14 @@ int32 AyStar_AiPathFinder_EndNodeCheck(AyStar *aystar, OpenListNode *current) {
|
||||
|
||||
// Calculates the hash
|
||||
// Currently it is a 10 bit hash, so the hash array has a max depth of 6 bits (so 64)
|
||||
uint AiPathFinder_Hash(uint key1, uint key2) {
|
||||
return (GET_TILE_X(key1) & 0x1F) + ((GET_TILE_Y(key1) & 0x1F) << 5);
|
||||
static uint AiPathFinder_Hash(uint key1, uint key2)
|
||||
{
|
||||
return (TileX(key1) & 0x1F) + ((TileY(key1) & 0x1F) << 5);
|
||||
}
|
||||
|
||||
// Clear the memory of all the things
|
||||
void AyStar_AiPathFinder_Free(AyStar *aystar) {
|
||||
static void AyStar_AiPathFinder_Free(AyStar *aystar)
|
||||
{
|
||||
AyStarMain_Free(aystar);
|
||||
free(aystar);
|
||||
}
|
||||
@@ -90,8 +109,8 @@ AyStar *new_AyStar_AiPathFinder(int max_tiles_around, Ai_PathFinderInfo *PathFin
|
||||
start_node.node.user_data[0] = 0;
|
||||
|
||||
// Now we add all the starting tiles
|
||||
for (x=GET_TILE_X(PathFinderInfo->start_tile_tl);x<=GET_TILE_X(PathFinderInfo->start_tile_br);x++) {
|
||||
for (y=GET_TILE_Y(PathFinderInfo->start_tile_tl);y<=GET_TILE_Y(PathFinderInfo->start_tile_br);y++) {
|
||||
for (x = TileX(PathFinderInfo->start_tile_tl); x <= TileX(PathFinderInfo->start_tile_br); x++) {
|
||||
for (y = TileY(PathFinderInfo->start_tile_tl); y <= TileY(PathFinderInfo->start_tile_br); y++) {
|
||||
start_node.node.tile = TILE_XY(x,y);
|
||||
result->addstart(result, &start_node.node);
|
||||
}
|
||||
@@ -117,9 +136,9 @@ void clean_AyStar_AiPathFinder(AyStar *aystar, Ai_PathFinderInfo *PathFinderInfo
|
||||
start_node.node.tile = PathFinderInfo->start_tile_tl;
|
||||
|
||||
// Now we add all the starting tiles
|
||||
for (x=GET_TILE_X(PathFinderInfo->start_tile_tl);x<=GET_TILE_X(PathFinderInfo->start_tile_br);x++) {
|
||||
for (y=GET_TILE_Y(PathFinderInfo->start_tile_tl);y<=GET_TILE_Y(PathFinderInfo->start_tile_br);y++) {
|
||||
if (!(IS_TILETYPE(TILE_XY(x,y), MP_CLEAR) || IS_TILETYPE(TILE_XY(x,y), MP_TREES))) continue;
|
||||
for (x = TileX(PathFinderInfo->start_tile_tl); x <= TileX(PathFinderInfo->start_tile_br); x++) {
|
||||
for (y = TileY(PathFinderInfo->start_tile_tl); y <= TileY(PathFinderInfo->start_tile_br); y++) {
|
||||
if (!(IsTileType(TILE_XY(x,y), MP_CLEAR) || IsTileType(TILE_XY(x,y), MP_TREES))) continue;
|
||||
if (!TestCanBuildStationHere(TILE_XY(x,y),TEST_STATION_NO_DIR)) continue;
|
||||
start_node.node.tile = TILE_XY(x,y);
|
||||
aystar->addstart(aystar, &start_node.node);
|
||||
@@ -133,14 +152,14 @@ static int32 AyStar_AiPathFinder_CalculateH(AyStar *aystar, AyStarNode *current,
|
||||
int r, r2;
|
||||
if (PathFinderInfo->end_direction != AI_PATHFINDER_NO_DIRECTION) {
|
||||
// The station is pointing to a direction, add a tile towards that direction, so the H-value is more accurate
|
||||
r = GetTileDist(current->tile, PathFinderInfo->end_tile_tl + _tiles_around[PathFinderInfo->end_direction]);
|
||||
r2 = GetTileDist(current->tile, PathFinderInfo->end_tile_br + _tiles_around[PathFinderInfo->end_direction]);
|
||||
r = GetTileDist(current->tile, PathFinderInfo->end_tile_tl + TileOffsByDir(PathFinderInfo->end_direction));
|
||||
r2 = GetTileDist(current->tile, PathFinderInfo->end_tile_br + TileOffsByDir(PathFinderInfo->end_direction));
|
||||
} else {
|
||||
// No direction, so just get the fastest route to the station
|
||||
r = GetTileDist(current->tile, PathFinderInfo->end_tile_tl);
|
||||
r2 = GetTileDist(current->tile, PathFinderInfo->end_tile_br);
|
||||
}
|
||||
// See if the bottomright is faster then the topleft..
|
||||
// See if the bottomright is faster than the topleft..
|
||||
if (r2 < r) r = r2;
|
||||
return r * AI_PATHFINDER_H_MULTIPLER;
|
||||
}
|
||||
@@ -148,7 +167,7 @@ static int32 AyStar_AiPathFinder_CalculateH(AyStar *aystar, AyStarNode *current,
|
||||
// We found the end.. let's get the route back and put it in an array
|
||||
static void AyStar_AiPathFinder_FoundEndNode(AyStar *aystar, OpenListNode *current) {
|
||||
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target;
|
||||
int i = 0;
|
||||
uint i = 0;
|
||||
PathNode *parent = ¤t->path;
|
||||
|
||||
do {
|
||||
@@ -168,35 +187,40 @@ static void AyStar_AiPathFinder_FoundEndNode(AyStar *aystar, OpenListNode *curre
|
||||
|
||||
// What tiles are around us.
|
||||
static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *current) {
|
||||
int i, r, dir;
|
||||
uint i;
|
||||
int r;
|
||||
int dir;
|
||||
|
||||
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target;
|
||||
|
||||
aystar->num_neighbours = 0;
|
||||
|
||||
// Go through all surrounding tiles and check if they are within the limits
|
||||
for (i=0;i<4;i++) {
|
||||
if (GET_TILE_X(_tiles_around[i] + current->path.node.tile) > 1 && GET_TILE_X(_tiles_around[i] + current->path.node.tile) < TILE_X_MAX - 1 &&
|
||||
GET_TILE_Y(_tiles_around[i] + current->path.node.tile) > 1 && GET_TILE_Y(_tiles_around[i] + current->path.node.tile) < TILE_Y_MAX - 1) {
|
||||
if (TileX(TileOffsByDir(i) + current->path.node.tile) > 1 &&
|
||||
TileX(TileOffsByDir(i) + current->path.node.tile) < MapMaxX() - 1 &&
|
||||
TileY(TileOffsByDir(i) + current->path.node.tile) > 1 &&
|
||||
TileY(TileOffsByDir(i) + current->path.node.tile) < MapMaxY() - 1) {
|
||||
// We also directly test if the current tile can connect to this tile..
|
||||
// We do this simply by just building the tile!
|
||||
|
||||
// If the next step is a bridge, we have to enter it the right way
|
||||
if (!PathFinderInfo->rail_or_road && AI_PATHFINDER_IS_ROAD(current->path.node.tile + _tiles_around[i])) {
|
||||
if (IS_TILETYPE(current->path.node.tile + _tiles_around[i], MP_TUNNELBRIDGE)) {
|
||||
if (!PathFinderInfo->rail_or_road && IsRoad(current->path.node.tile + TileOffsByDir(i))) {
|
||||
if (IsTileType(current->path.node.tile + TileOffsByDir(i), MP_TUNNELBRIDGE)) {
|
||||
// An existing bridge... let's test the direction ;)
|
||||
if ((_map5[current->path.node.tile + _tiles_around[i]] & 1) != (i & 1)) continue;
|
||||
if ((_map5[current->path.node.tile + TileOffsByDir(i)] & 1U) != (i & 1)) continue;
|
||||
// This problem only is valid for tunnels:
|
||||
// When the last tile was not yet a tunnel, check if we enter from the right side..
|
||||
if (!IS_TILETYPE(current->path.node.tile, MP_TUNNELBRIDGE) && (_map5[current->path.node.tile + _tiles_around[i]] & 0x80) == 0) {
|
||||
if (i != (_map5[current->path.node.tile + _tiles_around[i]] & 3)) continue;
|
||||
if (!IsTileType(current->path.node.tile, MP_TUNNELBRIDGE) && (_map5[current->path.node.tile + TileOffsByDir(i)] & 0x80) == 0) {
|
||||
if (i != (_map5[current->path.node.tile + TileOffsByDir(i)] & 3U)) continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
// But also if we are on a bridge, we can only move a certain direction
|
||||
if (!PathFinderInfo->rail_or_road && AI_PATHFINDER_IS_ROAD(current->path.node.tile)) {
|
||||
if (IS_TILETYPE(current->path.node.tile, MP_TUNNELBRIDGE)) {
|
||||
if (!PathFinderInfo->rail_or_road && IsRoad(current->path.node.tile)) {
|
||||
if (IsTileType(current->path.node.tile, MP_TUNNELBRIDGE)) {
|
||||
// An existing bridge/tunnel... let's test the direction ;)
|
||||
if ((_map5[current->path.node.tile] & 1) != (i & 1)) continue;
|
||||
if ((_map5[current->path.node.tile] & 1U) != (i & 1)) continue;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,14 +237,14 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
|
||||
// If not, this means we are at the starting station
|
||||
if (PathFinderInfo->start_direction != AI_PATHFINDER_NO_DIRECTION) {
|
||||
// We do need a direction?
|
||||
if (AiNew_GetDirection(current->path.node.tile, current->path.node.tile + _tiles_around[i]) != PathFinderInfo->start_direction)
|
||||
if (AiNew_GetDirection(current->path.node.tile, current->path.node.tile + TileOffsByDir(i)) != PathFinderInfo->start_direction)
|
||||
// We are not pointing the right way, invalid tile
|
||||
continue;
|
||||
}
|
||||
} else if (current->path.node.user_data[0] == 0) {
|
||||
if (PathFinderInfo->rail_or_road) {
|
||||
// Rail check
|
||||
dir = AiNew_GetRailDirection(current->path.parent->node.tile, current->path.node.tile, current->path.node.tile + _tiles_around[i]);
|
||||
dir = AiNew_GetRailDirection(current->path.parent->node.tile, current->path.node.tile, current->path.node.tile + TileOffsByDir(i));
|
||||
r = DoCommandByTile(current->path.node.tile, 0, dir, DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
|
||||
if (r == CMD_ERROR) continue;
|
||||
#ifdef AI_PATHFINDER_NO_90DEGREES_TURN
|
||||
@@ -234,9 +258,9 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
|
||||
#endif
|
||||
} else {
|
||||
// Road check
|
||||
dir = AiNew_GetRoadDirection(current->path.parent->node.tile, current->path.node.tile, current->path.node.tile + _tiles_around[i]);
|
||||
if (AI_PATHFINDER_IS_ROAD(current->path.node.tile)) {
|
||||
if (IS_TILETYPE(current->path.node.tile, MP_TUNNELBRIDGE)) {
|
||||
dir = AiNew_GetRoadDirection(current->path.parent->node.tile, current->path.node.tile, current->path.node.tile + TileOffsByDir(i));
|
||||
if (IsRoad(current->path.node.tile)) {
|
||||
if (IsTileType(current->path.node.tile, MP_TUNNELBRIDGE)) {
|
||||
// We have a bridge, how nicely! We should mark it...
|
||||
dir = 0;
|
||||
} else {
|
||||
@@ -259,7 +283,7 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
|
||||
}
|
||||
|
||||
// The tile can be connected
|
||||
aystar->neighbours[aystar->num_neighbours].tile = _tiles_around[i] + current->path.node.tile;
|
||||
aystar->neighbours[aystar->num_neighbours].tile = TileOffsByDir(i) + current->path.node.tile;
|
||||
aystar->neighbours[aystar->num_neighbours].user_data[0] = 0;
|
||||
aystar->neighbours[aystar->num_neighbours++].direction = 0;
|
||||
}
|
||||
@@ -280,11 +304,11 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
|
||||
// Bridges can only be build on land that is not flat
|
||||
// And if there is a road or rail blocking
|
||||
if (ti.tileh != 0 ||
|
||||
(PathFinderInfo->rail_or_road && IS_TILETYPE(tile + _tiles_around[dir], MP_STREET)) ||
|
||||
(!PathFinderInfo->rail_or_road && IS_TILETYPE(tile + _tiles_around[dir], MP_RAILWAY))) {
|
||||
(PathFinderInfo->rail_or_road && IsTileType(tile + TileOffsByDir(dir), MP_STREET)) ||
|
||||
(!PathFinderInfo->rail_or_road && IsTileType(tile + TileOffsByDir(dir), MP_RAILWAY))) {
|
||||
|
||||
for (;;) {
|
||||
new_tile += _tiles_around[dir];
|
||||
new_tile += TileOffsByDir(dir);
|
||||
|
||||
// Precheck, is the length allowed?
|
||||
if (!CheckBridge_Stuff(0,GetBridgeLength(tile, new_tile))) break;
|
||||
@@ -356,7 +380,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
|
||||
if (!PathFinderInfo->rail_or_road) {
|
||||
// Road has the lovely advantage it can use other road... check if
|
||||
// the current tile is road, and if so, give a good bonus
|
||||
if (AI_PATHFINDER_IS_ROAD(current->tile)) {
|
||||
if (IsRoad(current->tile)) {
|
||||
res -= AI_PATHFINDER_ROAD_ALREADY_EXISTS_BONUS;
|
||||
}
|
||||
}
|
||||
@@ -373,7 +397,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
|
||||
res += AI_PATHFINDER_TILE_GOES_UP_PENALTY;
|
||||
}
|
||||
} else {
|
||||
if (!(AI_PATHFINDER_IS_ROAD(parent->path.node.tile) && IS_TILETYPE(parent->path.node.tile, MP_TUNNELBRIDGE))) {
|
||||
if (!(IsRoad(parent->path.node.tile) && IsTileType(parent->path.node.tile, MP_TUNNELBRIDGE))) {
|
||||
r = GetRoadFoundation(parent_ti.tileh, AiNew_GetRoadDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile));
|
||||
if (r >= 15 || r == 0)
|
||||
res += AI_PATHFINDER_TILE_GOES_UP_PENALTY;
|
||||
@@ -418,7 +442,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
|
||||
if (parent->path.parent != NULL &&
|
||||
AiNew_GetDirection(current->tile, parent->path.node.tile) != AiNew_GetDirection(parent->path.node.tile, parent->path.parent->node.tile)) {
|
||||
// When road exists, we don't like turning, but its free, so don't be to piggy about it
|
||||
if (AI_PATHFINDER_IS_ROAD(parent->path.node.tile))
|
||||
if (IsRoad(parent->path.node.tile))
|
||||
res += AI_PATHFINDER_DIRECTION_CHANGE_ON_EXISTING_ROAD_PENALTY;
|
||||
else
|
||||
res += AI_PATHFINDER_DIRECTION_CHANGE_PENALTY;
|
||||
@@ -429,7 +453,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
|
||||
if (parent->path.parent != NULL && parent->path.parent->parent != NULL) {
|
||||
int dir1 = AiNew_GetRailDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile);
|
||||
int dir2 = AiNew_GetRailDirection(parent->path.parent->parent->node.tile, parent->path.parent->node.tile, parent->path.node.tile);
|
||||
// First, see if we are on diagonal path, that is better then straight path
|
||||
// First, see if we are on diagonal path, that is better than straight path
|
||||
if (dir1 > 1) { res -= AI_PATHFINDER_DIAGONAL_BONUS; }
|
||||
|
||||
// First see if they are different
|
||||
|
||||
@@ -15,13 +15,13 @@ int AiNew_GetRailDirection(uint tile_a, uint tile_b, uint tile_c) {
|
||||
int x1, x2, x3;
|
||||
int y1, y2, y3;
|
||||
|
||||
x1 = GET_TILE_X(tile_a);
|
||||
x2 = GET_TILE_X(tile_b);
|
||||
x3 = GET_TILE_X(tile_c);
|
||||
x1 = TileX(tile_a);
|
||||
x2 = TileX(tile_b);
|
||||
x3 = TileX(tile_c);
|
||||
|
||||
y1 = GET_TILE_Y(tile_a);
|
||||
y2 = GET_TILE_Y(tile_b);
|
||||
y3 = GET_TILE_Y(tile_c);
|
||||
y1 = TileY(tile_a);
|
||||
y2 = TileY(tile_b);
|
||||
y3 = TileY(tile_c);
|
||||
|
||||
if (y1 == y2 && y2 == y3) return 0;
|
||||
if (x1 == x2 && x2 == x3) return 1;
|
||||
@@ -50,13 +50,13 @@ int AiNew_GetRoadDirection(uint tile_a, uint tile_b, uint tile_c) {
|
||||
int y1, y2, y3;
|
||||
int r;
|
||||
|
||||
x1 = GET_TILE_X(tile_a);
|
||||
x2 = GET_TILE_X(tile_b);
|
||||
x3 = GET_TILE_X(tile_c);
|
||||
x1 = TileX(tile_a);
|
||||
x2 = TileX(tile_b);
|
||||
x3 = TileX(tile_c);
|
||||
|
||||
y1 = GET_TILE_Y(tile_a);
|
||||
y2 = GET_TILE_Y(tile_b);
|
||||
y3 = GET_TILE_Y(tile_c);
|
||||
y1 = TileY(tile_a);
|
||||
y2 = TileY(tile_b);
|
||||
y3 = TileY(tile_c);
|
||||
|
||||
r = 0;
|
||||
|
||||
@@ -75,9 +75,9 @@ int AiNew_GetRoadDirection(uint tile_a, uint tile_b, uint tile_c) {
|
||||
|
||||
// Get's the direction between 2 tiles seen from tile_a
|
||||
int AiNew_GetDirection(uint tile_a, uint tile_b) {
|
||||
if (GET_TILE_Y(tile_a) < GET_TILE_Y(tile_b)) return 1;
|
||||
if (GET_TILE_Y(tile_a) > GET_TILE_Y(tile_b)) return 3;
|
||||
if (GET_TILE_X(tile_a) < GET_TILE_X(tile_b)) return 2;
|
||||
if (TileY(tile_a) < TileY(tile_b)) return 1;
|
||||
if (TileY(tile_a) > TileY(tile_b)) return 3;
|
||||
if (TileX(tile_a) < TileX(tile_b)) return 2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ static bool AirportHasBlock(Vehicle *v, AirportFTA *current_pos, const AirportFT
|
||||
static bool AirportFindFreeTerminal(Vehicle *v, const AirportFTAClass *Airport);
|
||||
static bool AirportFindFreeHelipad(Vehicle *v, const AirportFTAClass *Airport);
|
||||
static void AirportGoToNextPosition(Vehicle *v, const AirportFTAClass *Airport);
|
||||
static void CrashAirplane(Vehicle *v);
|
||||
|
||||
static void AircraftNextAirportPos_and_Order(Vehicle *v);
|
||||
static byte GetAircraftFlyingAltitude(const Vehicle *v);
|
||||
@@ -70,7 +71,7 @@ void DrawAircraftEngineInfo(int engine, int x, int y, int maxw)
|
||||
const AircraftVehicleInfo *avi = AircraftVehInfo(engine);
|
||||
SetDParam(0, ((_price.aircraft_base >> 3) * avi->base_cost) >> 5);
|
||||
SetDParam(1, avi->max_speed << 3);
|
||||
SetDParam(2, avi->passanger_capacity);
|
||||
SetDParam(2, avi->passenger_capacity);
|
||||
SetDParam(3, avi->mail_capacity);
|
||||
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
|
||||
|
||||
@@ -100,7 +101,7 @@ static bool AllocateVehicles(Vehicle **vl, int num)
|
||||
return success;
|
||||
}
|
||||
|
||||
static int32 EstimateAircraftCost(uint16 engine_type)
|
||||
int32 EstimateAircraftCost(uint16 engine_type)
|
||||
{
|
||||
return AircraftVehInfo(engine_type)->base_cost * (_price.aircraft_base>>3)>>5;
|
||||
}
|
||||
@@ -125,7 +126,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
|
||||
// allocate 2 or 3 vehicle structs, depending on type
|
||||
if (!AllocateVehicles(vl, (avi->subtype & 1) == 0 ? 3 : 2) ||
|
||||
_ptr_to_next_order >= endof(_order_array))
|
||||
IsOrderPoolFull())
|
||||
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
|
||||
|
||||
unit_num = GetFreeUnitNumber(VEH_Aircraft);
|
||||
@@ -145,8 +146,8 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
v->tile = tile;
|
||||
// u->tile = 0;
|
||||
|
||||
x = GET_TILE_X(tile)*16 + 5;
|
||||
y = GET_TILE_Y(tile)*16 + 3;
|
||||
x = TileX(tile) * 16 + 5;
|
||||
y = TileY(tile) * 16 + 3;
|
||||
|
||||
v->x_pos = u->x_pos = x;
|
||||
v->y_pos = u->y_pos = y;
|
||||
@@ -169,7 +170,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
v->spritenum = avi->image_index;
|
||||
// v->cargo_count = u->number_of_pieces = 0;
|
||||
|
||||
v->cargo_cap = avi->passanger_capacity;
|
||||
v->cargo_cap = avi->passenger_capacity;
|
||||
u->cargo_cap = avi->mail_capacity;
|
||||
|
||||
v->cargo_type = CT_PASSENGERS;
|
||||
@@ -180,7 +181,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
|
||||
// v->load_unload_time_rem = 0;
|
||||
// v->progress = 0;
|
||||
v->last_station_visited = 0xFF;
|
||||
v->last_station_visited = 0xFFFF;
|
||||
// v->destination_coords = 0;
|
||||
|
||||
v->max_speed = avi->max_speed;
|
||||
@@ -199,9 +200,6 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
|
||||
_new_aircraft_id = v->index;
|
||||
|
||||
_ptr_to_next_order->type = OT_NOTHING;
|
||||
_ptr_to_next_order->flags = 0;
|
||||
v->schedule_ptr = _ptr_to_next_order++;
|
||||
// the AI doesn't click on a tile to build airplanes, so the below code will
|
||||
// never work. Therefore just assume the AI's planes always come from Hangar0
|
||||
// On hold for NewAI
|
||||
@@ -214,12 +212,12 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
Station *st;
|
||||
const AirportFTAClass *Airport;
|
||||
const uint16 *cur_depot;
|
||||
const TileIndexDiffC *cur_depot;
|
||||
byte i = 0;
|
||||
st = DEREF_STATION(_map2[tile]);
|
||||
st = GetStation(_map2[tile]);
|
||||
Airport = GetAirport(st->airport_type);
|
||||
for (cur_depot = Airport->airport_depots; i != Airport->nof_depots; cur_depot++) {
|
||||
if ((uint)(st->airport_tile + *cur_depot) == tile) {
|
||||
if ((uint)(st->airport_tile + ToTileIndexDiff(*cur_depot)) == tile) {
|
||||
assert(Airport->layout[i].heading == HANGAR);
|
||||
v->u.air.pos = Airport->layout[i].position;
|
||||
break;
|
||||
@@ -271,6 +269,8 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
InvalidateWindow(WC_COMPANY, v->owner);
|
||||
}
|
||||
|
||||
InvalidateWindow(WC_REPLACE_VEHICLE, VEH_Aircraft); //updates the replace Aircraft window
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ bool IsAircraftHangarTile(TileIndex tile)
|
||||
// 0x56 - hangar facing other way international airport (86)
|
||||
// 0x20 - hangar large airport (32)
|
||||
// 0x41 - hangar small airport (65)
|
||||
return IS_TILETYPE(tile, MP_STATION) &&
|
||||
return IsTileType(tile, MP_STATION) &&
|
||||
(_map5[tile] == 32 || _map5[tile] == 65 || _map5[tile] == 86);
|
||||
}
|
||||
|
||||
@@ -301,6 +301,7 @@ static void DoDeleteAircraft(Vehicle *v)
|
||||
RebuildVehicleLists();
|
||||
InvalidateWindow(WC_COMPANY, v->owner);
|
||||
DeleteVehicleChain(v);
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
|
||||
// p1 = vehicle
|
||||
@@ -310,7 +311,7 @@ int32 CmdSellAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
|
||||
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
|
||||
|
||||
v = &_vehicles[p1];
|
||||
v = GetVehicle(p1);
|
||||
|
||||
if (!CheckOwnership(v->owner) || !CheckStoppedInHangar(v))
|
||||
return CMD_ERROR;
|
||||
@@ -323,6 +324,8 @@ int32 CmdSellAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
|
||||
}
|
||||
|
||||
InvalidateWindow(WC_REPLACE_VEHICLE, VEH_Aircraft); // updates the replace Aircraft window
|
||||
|
||||
return -(int32)v->value;
|
||||
}
|
||||
|
||||
@@ -331,7 +334,7 @@ int32 CmdStartStopAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
Vehicle *v;
|
||||
|
||||
v = &_vehicles[p1];
|
||||
v = GetVehicle(p1);
|
||||
|
||||
if (!CheckOwnership(v->owner))
|
||||
return CMD_ERROR;
|
||||
@@ -345,23 +348,27 @@ int32 CmdStartStopAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
v->vehstatus ^= VS_STOPPED;
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// p1 = vehicle
|
||||
// p2 = if set, the aircraft will try to goto a depot, but not stop
|
||||
int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
Vehicle *v;
|
||||
Station *st;
|
||||
|
||||
v = &_vehicles[p1];
|
||||
v = GetVehicle(p1);
|
||||
|
||||
if (p2 != 0) v->set_for_replacement = true; //now all clients knows that the vehicle wants to be replaced
|
||||
|
||||
if (!CheckOwnership(v->owner))
|
||||
return CMD_ERROR;
|
||||
|
||||
if (v->current_order.type == OT_GOTO_DEPOT) {
|
||||
if (v->current_order.type == OT_GOTO_DEPOT && p2 != 0) {
|
||||
if (flags & DC_EXEC) {
|
||||
if (v->current_order.flags & OF_UNLOAD) v->cur_order_index++;
|
||||
v->current_order.type = OT_DUMMY;
|
||||
@@ -369,15 +376,15 @@ int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
}
|
||||
} else {
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
// If an airport doesn't have terminals (so no landing space for airports),
|
||||
// it surely doesn't have any hangars
|
||||
if (st->xy == 0 || st->airport_tile == 0 || GetAirport(st->airport_type)->nofterminals == 0)
|
||||
if (st->xy == 0 || st->airport_tile == 0 || GetAirport(st->airport_type)->terminals == NULL)
|
||||
return CMD_ERROR;
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
v->current_order.type = OT_GOTO_DEPOT;
|
||||
v->current_order.flags = OF_NON_STOP | OF_FULL_LOAD;
|
||||
v->current_order.flags = p2 == 0 ? OF_NON_STOP | OF_FULL_LOAD : 0;
|
||||
v->current_order.station = v->u.air.targetairport;
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
}
|
||||
@@ -392,7 +399,7 @@ int32 CmdChangeAircraftServiceInt(int x, int y, uint32 flags, uint32 p1, uint32
|
||||
{
|
||||
Vehicle *v;
|
||||
|
||||
v = &_vehicles[p1];
|
||||
v = GetVehicle(p1);
|
||||
|
||||
if (!CheckOwnership(v->owner))
|
||||
return CMD_ERROR;
|
||||
@@ -406,29 +413,44 @@ int32 CmdChangeAircraftServiceInt(int x, int y, uint32 flags, uint32 p1, uint32
|
||||
}
|
||||
|
||||
// p1 = vehicle
|
||||
// p2 = new cargo type
|
||||
// p2 = new cargo type(0xFF)
|
||||
// p2 = skip check for stopped in hanger (0x0100)
|
||||
int32 CmdRefitAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
Vehicle *v,*u;
|
||||
int pass, mail;
|
||||
int32 cost;
|
||||
byte SkipStoppedInHangerCheck = (p2 & 0x100) >> 8; //excludes the cargo value
|
||||
byte new_cargo_type = p2 & 0xFF; //gets the cargo number
|
||||
AircraftVehicleInfo *avi;
|
||||
|
||||
SET_EXPENSES_TYPE(EXPENSES_AIRCRAFT_RUN);
|
||||
|
||||
v = &_vehicles[p1];
|
||||
if (!CheckOwnership(v->owner) || !CheckStoppedInHangar(v))
|
||||
v = GetVehicle(p1);
|
||||
avi = AircraftVehInfo(v->engine_type);
|
||||
if (!CheckOwnership(v->owner) || (!CheckStoppedInHangar(v) && !(SkipStoppedInHangerCheck)))
|
||||
return CMD_ERROR;
|
||||
|
||||
pass = AircraftVehInfo(v->engine_type)->passanger_capacity;
|
||||
if (p2 != 0) {
|
||||
pass >>= 1;
|
||||
if (p2 != 5)
|
||||
pass >>= 1;
|
||||
switch (new_cargo_type) {
|
||||
case CT_PASSENGERS:
|
||||
pass = avi->passenger_capacity;
|
||||
break;
|
||||
case CT_MAIL:
|
||||
pass = avi->passenger_capacity + avi->mail_capacity;
|
||||
break;
|
||||
case CT_GOODS:
|
||||
pass = avi->passenger_capacity + avi->mail_capacity;
|
||||
pass /= 2;
|
||||
break;
|
||||
default:
|
||||
pass = avi->passenger_capacity + avi->mail_capacity;
|
||||
pass /= 4;
|
||||
break;
|
||||
}
|
||||
_aircraft_refit_capacity = pass;
|
||||
|
||||
cost = 0;
|
||||
if (IS_HUMAN_PLAYER(v->owner) && (byte)p2 != v->cargo_type) {
|
||||
if (IS_HUMAN_PLAYER(v->owner) && new_cargo_type != v->cargo_type) {
|
||||
cost = _price.aircraft_base >> 7;
|
||||
}
|
||||
|
||||
@@ -436,13 +458,16 @@ int32 CmdRefitAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
v->cargo_cap = pass;
|
||||
|
||||
u = v->next;
|
||||
mail = AircraftVehInfo(v->engine_type)->mail_capacity;
|
||||
if (p2 != 0) {
|
||||
mail = avi->mail_capacity;
|
||||
if (new_cargo_type != CT_PASSENGERS) {
|
||||
mail = 0;
|
||||
}
|
||||
u->cargo_cap = mail;
|
||||
v->cargo_count = u->cargo_count = 0;
|
||||
v->cargo_type = (byte)p2;
|
||||
//autorefitted planes wants to keep the cargo
|
||||
//it will be checked if the cargo is valid in CmdReplaceVehicle
|
||||
if (!(SkipStoppedInHangerCheck))
|
||||
v->cargo_count = u->cargo_count = 0;
|
||||
v->cargo_type = new_cargo_type;
|
||||
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
|
||||
}
|
||||
|
||||
@@ -471,12 +496,12 @@ static void CheckIfAircraftNeedsService(Vehicle *v)
|
||||
v->current_order.flags & OF_FULL_LOAD)
|
||||
return;
|
||||
|
||||
if (_patches.gotodepot && ScheduleHasDepotOrders(v->schedule_ptr))
|
||||
if (_patches.gotodepot && VehicleHasDepotOrders(v))
|
||||
return;
|
||||
|
||||
st = DEREF_STATION(v->current_order.station);
|
||||
st = GetStation(v->current_order.station);
|
||||
// only goto depot if the target airport has terminals (eg. it is airport)
|
||||
if (st->xy != 0 && st->airport_tile != 0 && GetAirport(st->airport_type)->nofterminals != 0) {
|
||||
if (st->xy != 0 && st->airport_tile != 0 && GetAirport(st->airport_type)->terminals != NULL) {
|
||||
// printf("targetairport = %d, st->index = %d\n", v->u.air.targetairport, st->index);
|
||||
// v->u.air.targetairport = st->index;
|
||||
v->current_order.type = OT_GOTO_DEPOT;
|
||||
@@ -499,7 +524,7 @@ void OnNewDay_Aircraft(Vehicle *v)
|
||||
if ((++v->day_counter & 7) == 0)
|
||||
DecreaseVehicleValue(v);
|
||||
|
||||
CheckOrders(v);
|
||||
CheckOrders(v->index, OC_INIT);
|
||||
|
||||
CheckVehicleBreakdown(v);
|
||||
AgeVehicle(v);
|
||||
@@ -516,10 +541,10 @@ void OnNewDay_Aircraft(Vehicle *v)
|
||||
SubtractMoneyFromPlayerFract(v->owner, cost);
|
||||
|
||||
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
|
||||
InvalidateWindow(WC_AIRCRAFT_LIST, v->owner);
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
|
||||
void AircraftYearlyLoop()
|
||||
void AircraftYearlyLoop(void)
|
||||
{
|
||||
Vehicle *v;
|
||||
|
||||
@@ -713,15 +738,15 @@ static bool Aircraft_5(Vehicle *v)
|
||||
uint dist;
|
||||
int x,y;
|
||||
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
|
||||
// prevent going to 0,0 if airport is deleted.
|
||||
{
|
||||
uint tile = st->airport_tile;
|
||||
if (tile == 0) tile = st->xy;
|
||||
// xy of destination
|
||||
x = GET_TILE_X(tile)*16;
|
||||
y = GET_TILE_Y(tile)*16;
|
||||
x = TileX(tile) * 16;
|
||||
y = TileY(tile) * 16;
|
||||
}
|
||||
|
||||
// get airport moving data
|
||||
@@ -914,9 +939,22 @@ static void HandleCrashedAircraft(Vehicle *v)
|
||||
{
|
||||
uint32 r;
|
||||
Station *st;
|
||||
int z;
|
||||
|
||||
v->u.air.crashed_counter++;
|
||||
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
|
||||
// make aircraft crash down to the ground
|
||||
if (v->u.air.crashed_counter < 500 && st->airport_tile==0 && ((v->u.air.crashed_counter % 3) == 0) ) {
|
||||
z = GetSlopeZ(v->x_pos, v->y_pos);
|
||||
v->z_pos -= 1;
|
||||
if (v->z_pos == z) {
|
||||
v->u.air.crashed_counter = 500;
|
||||
v->z_pos++;
|
||||
}
|
||||
}
|
||||
|
||||
if (v->u.air.crashed_counter < 650) {
|
||||
if (CHANCE16R(1,32,r)) {
|
||||
v->direction = (v->direction+_crashed_aircraft_moddir[(r >> 16)&3]) & 7;
|
||||
@@ -929,7 +967,6 @@ static void HandleCrashedAircraft(Vehicle *v)
|
||||
EV_DEMOLISH);
|
||||
}
|
||||
} else if (v->u.air.crashed_counter >= 10000) {
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
// remove rubble of crashed airplane
|
||||
|
||||
// clear runway-in on all airports, set by crashing plane
|
||||
@@ -985,47 +1022,53 @@ static void HandleAircraftSmoke(Vehicle *v)
|
||||
|
||||
static void ProcessAircraftOrder(Vehicle *v)
|
||||
{
|
||||
Order order;
|
||||
const Order *order;
|
||||
|
||||
// OT_GOTO_DEPOT, OT_LOADING
|
||||
if (v->current_order.type >= OT_GOTO_DEPOT &&
|
||||
v->current_order.type <= OT_LOADING) {
|
||||
if (v->current_order.type == OT_GOTO_DEPOT ||
|
||||
v->current_order.type == OT_LOADING) {
|
||||
if (v->current_order.type != OT_GOTO_DEPOT ||
|
||||
!(v->current_order.flags & OF_UNLOAD))
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (v->current_order.type == OT_GOTO_DEPOT &&
|
||||
(v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) &&
|
||||
!VehicleNeedsService(v)) {
|
||||
v->cur_order_index++;
|
||||
}
|
||||
!VehicleNeedsService(v) &&
|
||||
v->set_for_replacement == false) {
|
||||
v->cur_order_index++;
|
||||
}
|
||||
|
||||
if (v->cur_order_index >= v->num_orders)
|
||||
v->cur_order_index = 0;
|
||||
|
||||
order = v->schedule_ptr[v->cur_order_index];
|
||||
order = GetVehicleOrder(v, v->cur_order_index);
|
||||
|
||||
if (order.type == OT_NOTHING) {
|
||||
if (order == NULL) {
|
||||
v->current_order.type = OT_NOTHING;
|
||||
v->current_order.flags = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (order.type == v->current_order.type &&
|
||||
order.flags == v->current_order.flags &&
|
||||
order.station == v->current_order.station)
|
||||
if (order->type == OT_DUMMY && !CheckForValidOrders(v))
|
||||
CrashAirplane(v);
|
||||
|
||||
if (order->type == v->current_order.type &&
|
||||
order->flags == v->current_order.flags &&
|
||||
order->station == v->current_order.station)
|
||||
return;
|
||||
|
||||
v->current_order = order;
|
||||
v->current_order = *order;
|
||||
|
||||
// orders are changed in flight, ensure going to the right station
|
||||
if (order.type == OT_GOTO_STATION && v->u.air.state == FLYING) {
|
||||
if (order->type == OT_GOTO_STATION && v->u.air.state == FLYING) {
|
||||
AircraftNextAirportPos_and_Order(v);
|
||||
v->u.air.targetairport = order.station;
|
||||
v->u.air.targetairport = order->station;
|
||||
}
|
||||
|
||||
InvalidateVehicleOrderWidget(v);
|
||||
InvalidateVehicleOrder(v);
|
||||
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
|
||||
static void HandleAircraftLoading(Vehicle *v, int mode)
|
||||
@@ -1058,7 +1101,43 @@ static void HandleAircraftLoading(Vehicle *v, int mode)
|
||||
}
|
||||
}
|
||||
v->cur_order_index++;
|
||||
InvalidateVehicleOrderWidget(v);
|
||||
InvalidateVehicleOrder(v);
|
||||
}
|
||||
|
||||
static void CrashAirplane(Vehicle *v)
|
||||
{
|
||||
uint16 amt;
|
||||
Station *st;
|
||||
StringID newsitem;
|
||||
|
||||
v->vehstatus |= VS_CRASHED;
|
||||
v->u.air.crashed_counter = 0;
|
||||
|
||||
CreateEffectVehicleRel(v, 4, 4, 8, EV_CRASHED_SMOKE);
|
||||
|
||||
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
|
||||
|
||||
amt = 2;
|
||||
if (v->cargo_type == CT_PASSENGERS) amt += v->cargo_count;
|
||||
SetDParam(0, amt);
|
||||
|
||||
v->cargo_count = 0;
|
||||
v->next->cargo_count = 0,
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
if(st->airport_tile==0) {
|
||||
newsitem = STR_PLANE_CRASH_OUT_OF_FUEL;
|
||||
} else {
|
||||
SetDParam(1, st->index);
|
||||
newsitem = STR_A034_PLANE_CRASH_DIE_IN_FIREBALL;
|
||||
}
|
||||
|
||||
SetDParam(1, st->index);
|
||||
AddNewsItem(newsitem,
|
||||
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
|
||||
v->index,
|
||||
0);
|
||||
|
||||
SndPlayVehicleFx(SND_12_EXPLOSION, v);
|
||||
}
|
||||
|
||||
static void MaybeCrashAirplane(Vehicle *v)
|
||||
@@ -1066,9 +1145,8 @@ static void MaybeCrashAirplane(Vehicle *v)
|
||||
Station *st;
|
||||
uint16 prob;
|
||||
int i;
|
||||
uint16 amt;
|
||||
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
|
||||
//FIXME -- MaybeCrashAirplane -> increase crashing chances of very modern airplanes on smaller than AT_METROPOLITAN airports
|
||||
prob = 0x10000 / 1500;
|
||||
@@ -1085,28 +1163,7 @@ static void MaybeCrashAirplane(Vehicle *v)
|
||||
st->goods[i].waiting_acceptance &= ~0xFFF;
|
||||
}
|
||||
|
||||
v->vehstatus |= VS_CRASHED;
|
||||
v->u.air.crashed_counter = 0;
|
||||
|
||||
CreateEffectVehicleRel(v, 4, 4, 8, EV_CRASHED_SMOKE);
|
||||
|
||||
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
|
||||
|
||||
amt = 2;
|
||||
if (v->cargo_type == CT_PASSENGERS) amt += v->cargo_count;
|
||||
SetDParam(0, amt);
|
||||
|
||||
v->cargo_count = 0;
|
||||
v->next->cargo_count = 0,
|
||||
|
||||
SetDParam(1, st->index);
|
||||
AddNewsItem(STR_A034_PLANE_CRASH_DIE_IN_FIREBALL,
|
||||
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
|
||||
v->index,
|
||||
0);
|
||||
|
||||
ModifyStationRatingAround(TILE_FROM_XY(v->x_pos, v->y_pos), v->owner, -160, 30);
|
||||
SndPlayVehicleFx(SND_12_EXPLOSION, v);
|
||||
CrashAirplane(v);
|
||||
}
|
||||
|
||||
// we've landed and just arrived at a terminal
|
||||
@@ -1118,7 +1175,7 @@ static void AircraftEntersTerminal(Vehicle *v)
|
||||
if (v->current_order.type == OT_GOTO_DEPOT)
|
||||
return;
|
||||
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
v->last_station_visited = v->u.air.targetairport;
|
||||
|
||||
/* Check if station was ever visited before */
|
||||
@@ -1149,6 +1206,14 @@ static void AircraftEntersTerminal(Vehicle *v)
|
||||
SET_EXPENSES_TYPE(EXPENSES_AIRCRAFT_INC);
|
||||
LoadUnloadVehicle(v);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
|
||||
static bool ValidateAircraftInHangar( uint data_a, uint data_b )
|
||||
{
|
||||
Vehicle *v = GetVehicle(data_a);
|
||||
|
||||
return (IsAircraftHangarTile(v->tile) && (v->vehstatus & VS_STOPPED));
|
||||
}
|
||||
|
||||
static void AircraftEnterHangar(Vehicle *v)
|
||||
@@ -1156,8 +1221,9 @@ static void AircraftEnterHangar(Vehicle *v)
|
||||
Order old_order;
|
||||
|
||||
ServiceAircraft(v);
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
|
||||
MaybeRenewVehicle(v, EstimateAircraftCost(v->engine_type));
|
||||
MaybeReplaceVehicle(v);
|
||||
|
||||
TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT);
|
||||
|
||||
@@ -1172,14 +1238,16 @@ static void AircraftEnterHangar(Vehicle *v)
|
||||
v->cur_order_index++;
|
||||
} else if (old_order.flags & OF_FULL_LOAD) { // force depot visit
|
||||
v->vehstatus |= VS_STOPPED;
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
|
||||
if (v->owner == _local_player) {
|
||||
SetDParam(0, v->unitnumber);
|
||||
AddNewsItem(
|
||||
AddValidatedNewsItem(
|
||||
STR_A014_AIRCRAFT_IS_WAITING_IN,
|
||||
NEWS_FLAGS(NM_SMALL, NF_VIEWPORT|NF_VEHICLE, NT_ADVICE, 0),
|
||||
v->index,
|
||||
0);
|
||||
0,
|
||||
ValidateAircraftInHangar);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1207,7 +1275,7 @@ static void AircraftNextAirportPos_and_Order(Vehicle *v)
|
||||
v->current_order.type == OT_GOTO_DEPOT)
|
||||
v->u.air.targetairport = v->current_order.station;
|
||||
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
Airport = GetAirport(st->airport_type);
|
||||
v->u.air.pos = v->u.air.previous_pos = Airport->entry_point;
|
||||
}
|
||||
@@ -1233,6 +1301,7 @@ static void AircraftLeaveHangar(Vehicle *v)
|
||||
VehicleServiceInDepot(v);
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos);
|
||||
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
|
||||
|
||||
@@ -1298,7 +1367,7 @@ static void AircraftEventHandler_AtTerminal(Vehicle *v, const AirportFTAClass *A
|
||||
// on an airport with helipads, a helicopter will always land there
|
||||
// and get serviced at the same time - patch setting
|
||||
if (_patches.serviceathelipad) {
|
||||
if (v->subtype == 0 && Airport->nofhelipads > 0) {
|
||||
if (v->subtype == 0 && Airport->helipads != NULL) {
|
||||
// an exerpt of ServiceAircraft, without the invisibility stuff
|
||||
v->date_of_last_service = _date;
|
||||
v->breakdowns_since_last_service = 0;
|
||||
@@ -1368,6 +1437,14 @@ static void AircraftEventHandler_HeliTakeOff(Vehicle *v, const AirportFTAClass *
|
||||
v->u.air.state = FLYING;
|
||||
// get the next position to go to, differs per airport
|
||||
AircraftNextAirportPos_and_Order(v);
|
||||
|
||||
// check if the aircraft needs to be replaced or renewed and send it to a hangar if needed
|
||||
if (v->current_order.type != OT_GOTO_DEPOT && ((v->owner == _local_player && _autoreplace_array[v->engine_type] != v->engine_type) ||
|
||||
(v->owner == _local_player && _patches.autorenew && v->age - v->max_age > (_patches.autorenew_months * 30)))) {
|
||||
_current_player = _local_player;
|
||||
DoCommandP(v->tile, v->index, 1, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
|
||||
_current_player = OWNER_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
static void AircraftEventHandler_Flying(Vehicle *v, const AirportFTAClass *Airport)
|
||||
@@ -1377,7 +1454,7 @@ static void AircraftEventHandler_Flying(Vehicle *v, const AirportFTAClass *Airpo
|
||||
AirportFTA *current;
|
||||
uint16 tcur_speed, tsubspeed;
|
||||
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
// flying device is accepted at this station
|
||||
// small airport --> no helicopters (AIRCRAFT_ONLY)
|
||||
// all other airports --> all types of flying devices (ALL)
|
||||
@@ -1460,7 +1537,7 @@ static void AircraftEventHandler_HeliEndLanding(Vehicle *v, const AirportFTAClas
|
||||
if (v->current_order.type == OT_GOTO_STATION) {
|
||||
if (AirportFindFreeHelipad(v, Airport)) {return;}
|
||||
}
|
||||
v->u.air.state = (Airport->nofterminals != 0) ? HANGAR : HELITAKEOFF;
|
||||
v->u.air.state = (Airport->terminals != NULL) ? HANGAR : HELITAKEOFF;
|
||||
}
|
||||
|
||||
typedef void AircraftStateHandler(Vehicle *v, const AirportFTAClass *Airport);
|
||||
@@ -1491,7 +1568,7 @@ static void AirportClearBlock(Vehicle *v, const AirportFTAClass *Airport)
|
||||
Station *st;
|
||||
// we have left the previous block, and entered the new one. Free the previous block
|
||||
if (Airport->layout[v->u.air.previous_pos].block != Airport->layout[v->u.air.pos].block) {
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
CLRBITS(st->airport_flags, Airport->layout[v->u.air.previous_pos].block);
|
||||
}
|
||||
}
|
||||
@@ -1567,7 +1644,7 @@ static bool AirportHasBlock(Vehicle *v, AirportFTA *current_pos, const AirportFT
|
||||
// same block, then of course we can move
|
||||
if (Airport->layout[current_pos->position].block != next->block) {
|
||||
airport_flags = next->block;
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
// check additional possible extra blocks
|
||||
if (current_pos != reference && current_pos->block != NOTHING_block) {
|
||||
airport_flags |= current_pos->block;
|
||||
@@ -1594,7 +1671,7 @@ static bool AirportSetBlocks(Vehicle *v, AirportFTA *current_pos, const AirportF
|
||||
// if the next position is in another block, check it and wait until it is free
|
||||
if (Airport->layout[current_pos->position].block != next->block) {
|
||||
airport_flags = next->block;
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
//search for all all elements in the list with the same state, and blocks != N
|
||||
// this means more blocks should be checked/set
|
||||
current = current_pos;
|
||||
@@ -1626,7 +1703,7 @@ static bool AirportSetBlocks(Vehicle *v, AirportFTA *current_pos, const AirportF
|
||||
|
||||
static bool FreeTerminal(Vehicle *v, byte i, byte last_terminal)
|
||||
{
|
||||
Station *st = DEREF_STATION(v->u.air.targetairport);
|
||||
Station *st = GetStation(v->u.air.targetairport);
|
||||
for (; i < last_terminal; i++) {
|
||||
if (!HASBIT(st->airport_flags, i)) {
|
||||
// TERMINAL# HELIPAD#
|
||||
@@ -1638,9 +1715,18 @@ static bool FreeTerminal(Vehicle *v, byte i, byte last_terminal)
|
||||
return false;
|
||||
}
|
||||
|
||||
static int GetNumTerminals(const AirportFTAClass *Airport)
|
||||
{
|
||||
int i, num = 0;
|
||||
|
||||
for (i = Airport->terminals[0]; i > 0; i--)
|
||||
num += Airport->terminals[i];
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
static bool AirportFindFreeTerminal(Vehicle *v, const AirportFTAClass *Airport)
|
||||
{
|
||||
byte nofterminalspergroup, i;
|
||||
AirportFTA *temp;
|
||||
Station *st;
|
||||
|
||||
@@ -1654,18 +1740,29 @@ static bool AirportFindFreeTerminal(Vehicle *v, const AirportFTAClass *Airport)
|
||||
possible groups are checked (in this case group 1, since that is after group 0). If that
|
||||
fails, then attempt fails and plane waits
|
||||
*/
|
||||
if (Airport->nofterminalgroups > 1) {
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
nofterminalspergroup = Airport->nofterminals / Airport->nofterminalgroups;
|
||||
if (Airport->terminals[0] > 1) {
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
temp = Airport->layout[v->u.air.pos].next_in_chain;
|
||||
while (temp != NULL) {
|
||||
if (temp->heading == 255) {
|
||||
if (!HASBITS(st->airport_flags, temp->block)) {
|
||||
i = temp->next_position * nofterminalspergroup; // next_position denotes the group to check
|
||||
// only that group will be checked (eg 6 terms, 2 groups)
|
||||
// with i = 0 terms 1 - 3 and
|
||||
// with i = 1 terms 4 - 6
|
||||
if (FreeTerminal(v, i, i + nofterminalspergroup)) {return true;}
|
||||
int target_group;
|
||||
int i;
|
||||
int group_start = 0;
|
||||
int group_end;
|
||||
|
||||
//read which group do we want to go to?
|
||||
//(the first free group)
|
||||
target_group = temp->next_position + 1;
|
||||
|
||||
//at what terminal does the group start?
|
||||
//that means, sum up all terminals of
|
||||
//groups with lower number
|
||||
for(i = 1; i < target_group; i++)
|
||||
group_start += Airport->terminals[i];
|
||||
|
||||
group_end = group_start + Airport->terminals[target_group];
|
||||
if (FreeTerminal(v, group_start, group_end)) {return true;}
|
||||
}
|
||||
}
|
||||
else {return false;} // once the heading isn't 255, we've exhausted the possible blocks. So we cannot move
|
||||
@@ -1674,29 +1771,52 @@ static bool AirportFindFreeTerminal(Vehicle *v, const AirportFTAClass *Airport)
|
||||
}
|
||||
|
||||
// if there is only 1 terminalgroup, all terminals are checked (starting from 0 to max)
|
||||
return FreeTerminal(v, 0, Airport->nofterminals);
|
||||
return FreeTerminal(v, 0, GetNumTerminals(Airport));
|
||||
}
|
||||
|
||||
static int GetNumHelipads(const AirportFTAClass *Airport)
|
||||
{
|
||||
int i, num = 0;
|
||||
|
||||
for (i = Airport->helipads[0]; i > 0; i--)
|
||||
num += Airport->helipads[i];
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
|
||||
static bool AirportFindFreeHelipad(Vehicle *v, const AirportFTAClass *Airport)
|
||||
{
|
||||
Station *st;
|
||||
byte nofhelipadspergroup, i;
|
||||
AirportFTA *temp;
|
||||
|
||||
// if an airport doesn't have helipads, use terminals
|
||||
if (Airport->nofhelipads == 0) {return AirportFindFreeTerminal(v, Airport);}
|
||||
if (Airport->helipads == NULL) {return AirportFindFreeTerminal(v, Airport);}
|
||||
|
||||
// if there are more helicoptergroups, pick one, just as in AirportFindFreeTerminal()
|
||||
if (Airport->nofhelipadgroups > 1) {
|
||||
st = DEREF_STATION(v->u.air.targetairport);
|
||||
nofhelipadspergroup = Airport->nofhelipads / Airport->nofhelipadgroups;
|
||||
if (Airport->helipads[0] > 1) {
|
||||
st = GetStation(v->u.air.targetairport);
|
||||
temp = Airport->layout[v->u.air.pos].next_in_chain;
|
||||
while (temp != NULL) {
|
||||
if (temp->heading == 255) {
|
||||
if (!HASBITS(st->airport_flags, temp->block)) {
|
||||
i = temp->next_position * nofhelipadspergroup; // next position is the group to check
|
||||
// heliports start from after TERMINALS, so MAX_TERMINALS needs to be added
|
||||
if (FreeTerminal(v, i + MAX_TERMINALS, i + MAX_TERMINALS + nofhelipadspergroup)) {return true;}
|
||||
int target_group;
|
||||
int i;
|
||||
int group_start = 0;
|
||||
int group_end;
|
||||
|
||||
//read which group do we want to go to?
|
||||
//(the first free group)
|
||||
target_group = temp->next_position + 1;
|
||||
|
||||
//at what terminal does the group start?
|
||||
//that means, sum up all terminals of
|
||||
//groups with lower number
|
||||
for(i = 1; i < target_group; i++)
|
||||
group_start += Airport->helipads[i];
|
||||
|
||||
group_end = group_start + Airport->helipads[target_group];
|
||||
if (FreeTerminal(v, group_start, group_end)) {return true;}
|
||||
}
|
||||
}
|
||||
else {return false;} // once the heading isn't 255, we've exhausted the possible blocks. So we cannot move
|
||||
@@ -1705,7 +1825,7 @@ static bool AirportFindFreeHelipad(Vehicle *v, const AirportFTAClass *Airport)
|
||||
}
|
||||
// only 1 helicoptergroup, check all helipads
|
||||
// The blocks for helipads start after the last terminal (MAX_TERMINALS)
|
||||
else {return FreeTerminal(v, MAX_TERMINALS, Airport->nofhelipads + MAX_TERMINALS);}
|
||||
else {return FreeTerminal(v, MAX_TERMINALS, GetNumHelipads(Airport) + MAX_TERMINALS);}
|
||||
return false; // it shouldn't get here anytime, but just to be sure
|
||||
}
|
||||
|
||||
@@ -1741,7 +1861,7 @@ static void AircraftEventHandler(Vehicle *v, int loop)
|
||||
// pass the right airport structure to the functions
|
||||
// DEREF_STATION gets target airport (Station *st), its type is passed to GetAirport
|
||||
// that returns the correct layout depending on type
|
||||
AirportGoToNextPosition(v, GetAirport(DEREF_STATION(v->u.air.targetairport)->airport_type));
|
||||
AirportGoToNextPosition(v, GetAirport(GetStation(v->u.air.targetairport)->airport_type));
|
||||
}
|
||||
|
||||
void Aircraft_Tick(Vehicle *v)
|
||||
@@ -1763,8 +1883,17 @@ void Aircraft_Tick(Vehicle *v)
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateOilRig( void )
|
||||
{
|
||||
Station *st;
|
||||
|
||||
FOR_ALL_STATIONS(st) {
|
||||
if (st->airport_type == 5) st->airport_type = AT_OILRIG;
|
||||
}
|
||||
}
|
||||
|
||||
// need to be called to load aircraft from old version
|
||||
void UpdateOldAircraft()
|
||||
void UpdateOldAircraft(void)
|
||||
{
|
||||
Station *st;
|
||||
Vehicle *v_oldstyle;
|
||||
|
||||
@@ -13,6 +13,26 @@
|
||||
#include "player.h"
|
||||
|
||||
|
||||
void Set_DPARAM_Aircraft_Build_Window(uint16 engine_number)
|
||||
{
|
||||
const AircraftVehicleInfo *avi = AircraftVehInfo(engine_number);
|
||||
Engine *e;
|
||||
YearMonthDay ymd;
|
||||
|
||||
SetDParam(0, avi->base_cost * (_price.aircraft_base>>3)>>5);
|
||||
SetDParam(1, avi->max_speed * 8);
|
||||
SetDParam(2, avi->passenger_capacity);
|
||||
SetDParam(3, avi->mail_capacity);
|
||||
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
|
||||
|
||||
e = &_engines[engine_number];
|
||||
SetDParam(6, e->lifelength);
|
||||
SetDParam(7, e->reliability * 100 >> 16);
|
||||
ConvertDayToYMD(&ymd, e->intro_date);
|
||||
SetDParam(5, ymd.year + 1920);
|
||||
|
||||
}
|
||||
|
||||
static void DrawAircraftImage(Vehicle *v, int x, int y, VehicleID selection)
|
||||
{
|
||||
int image = GetAircraftImage(v, 6);
|
||||
@@ -31,7 +51,7 @@ void CcBuildAircraft(bool success, uint tile, uint32 p1, uint32 p2)
|
||||
Vehicle *v;
|
||||
|
||||
if (success) {
|
||||
v = &_vehicles[_new_aircraft_id];
|
||||
v = GetVehicle(_new_aircraft_id);
|
||||
if (v->tile == _backup_orders_tile) {
|
||||
_backup_orders_tile = 0;
|
||||
RestoreVehicleOrders(v, _backup_orders_data);
|
||||
@@ -43,8 +63,6 @@ void CcBuildAircraft(bool success, uint tile, uint32 p1, uint32 p2)
|
||||
|
||||
static void NewAircraftWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
YearMonthDay ymd;
|
||||
|
||||
switch(e->event) {
|
||||
|
||||
case WE_PAINT: {
|
||||
@@ -77,7 +95,7 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
|
||||
do {
|
||||
if (HASBIT(e->player_avail, _local_player)) {
|
||||
if (sel==0) selected_id = engine_id;
|
||||
if (IS_INT_INSIDE(--pos, -4, 0)) {
|
||||
if (IS_INT_INSIDE(--pos, -w->vscroll.cap, 0)) {
|
||||
DrawString(x+62, y+7, GetCustomEngineName(engine_id), sel==0 ? 0xC : 0x10);
|
||||
DrawAircraftEngine(x+29, y+10, engine_id, SPRITE_PALETTE(PLAYER_SPRITE_COLOR(_local_player)));
|
||||
y += 24;
|
||||
@@ -89,22 +107,9 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
|
||||
WP(w,buildtrain_d).sel_engine = selected_id;
|
||||
|
||||
if (selected_id != -1) {
|
||||
const AircraftVehicleInfo *avi = AircraftVehInfo(selected_id);
|
||||
Engine *e;
|
||||
Set_DPARAM_Aircraft_Build_Window(selected_id);
|
||||
|
||||
SetDParam(0, avi->base_cost * (_price.aircraft_base>>3)>>5);
|
||||
SetDParam(1, avi->max_speed * 8);
|
||||
SetDParam(2, avi->passanger_capacity);
|
||||
SetDParam(3, avi->mail_capacity);
|
||||
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
|
||||
|
||||
e = &_engines[selected_id];
|
||||
SetDParam(6, e->lifelength);
|
||||
SetDParam(7, e->reliability * 100 >> 16);
|
||||
ConvertDayToYMD(&ymd, e->intro_date);
|
||||
SetDParam(5, ymd.year + 1920);
|
||||
|
||||
DrawString(2, 111, STR_A007_COST_SPEED_CAPACITY_PASSENGERS, 0);
|
||||
DrawString(2, w->widget[4].top + 1, STR_A007_COST_SPEED_CAPACITY_PASSENGERS, 0);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
@@ -113,7 +118,7 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
|
||||
switch(e->click.widget) {
|
||||
case 2: { /* listbox */
|
||||
uint i = (e->click.pt.y - 14) / 24;
|
||||
if (i < 4) {
|
||||
if (i < w->vscroll.cap) {
|
||||
WP(w,buildtrain_d).sel_index = i + w->vscroll.pos;
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
@@ -125,16 +130,14 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
|
||||
DoCommandP(w->window_number, sel_eng, 0, CcBuildAircraft, CMD_BUILD_AIRCRAFT | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT));
|
||||
} break;
|
||||
|
||||
case 6: /* rename */
|
||||
WP(w,buildtrain_d).rename_engine = WP(w,buildtrain_d).sel_engine;
|
||||
ShowQueryString(
|
||||
GetCustomEngineName(WP(w,buildtrain_d).sel_engine),
|
||||
STR_A039_RENAME_AIRCRAFT_TYPE,
|
||||
31,
|
||||
160,
|
||||
w->window_class,
|
||||
w->window_number);
|
||||
break;
|
||||
case 6: { /* rename */
|
||||
int sel_eng = WP(w,buildtrain_d).sel_engine;
|
||||
if (sel_eng != -1) {
|
||||
WP(w,buildtrain_d).rename_engine = sel_eng;
|
||||
ShowQueryString(GetCustomEngineName(sel_eng),
|
||||
STR_A039_RENAME_AIRCRAFT_TYPE, 31, 160, w->window_class, w->window_number);
|
||||
}
|
||||
} break;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -151,24 +154,30 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
|
||||
memcpy(_decode_parameters, b, 32);
|
||||
DoCommandP(0, WP(w,buildtrain_d).rename_engine, 0, NULL, CMD_RENAME_ENGINE | CMD_MSG(STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE));
|
||||
} break;
|
||||
|
||||
case WE_RESIZE:
|
||||
w->vscroll.cap += e->sizing.diff.y / 24;
|
||||
w->widget[2].unkA = (w->vscroll.cap << 8) + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const Widget _new_aircraft_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 239, 0, 13, STR_A005_NEW_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_MATRIX, 14, 0, 228, 14, 109, 0x401, STR_A025_AIRCRAFT_SELECTION_LIST},
|
||||
{ WWT_SCROLLBAR, 14, 229, 239, 14, 109, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_IMGBTN, 14, 0, 239, 110, 161, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 119, 162, 173, STR_A006_BUILD_AIRCRAFT, STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT},
|
||||
{ WWT_PUSHTXTBTN, 14, 120, 239, 162, 173, STR_A037_RENAME, STR_A038_RENAME_AIRCRAFT_TYPE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 239, 0, 13, STR_A005_NEW_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_MATRIX, RESIZE_BOTTOM, 14, 0, 227, 14, 109, 0x401, STR_A025_AIRCRAFT_SELECTION_LIST},
|
||||
{ WWT_SCROLLBAR, RESIZE_BOTTOM, 14, 228, 239, 14, 109, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_IMGBTN, RESIZE_TB, 14, 0, 239, 110, 161, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 114, 162, 173, STR_A006_BUILD_AIRCRAFT, STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 115, 227, 162, 173, STR_A037_RENAME, STR_A038_RENAME_AIRCRAFT_TYPE},
|
||||
{ WWT_RESIZEBOX, RESIZE_TB, 14, 228, 239, 162, 173, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const WindowDesc _new_aircraft_desc = {
|
||||
-1, -1, 240, 174,
|
||||
WC_BUILD_VEHICLE,0,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
|
||||
_new_aircraft_widgets,
|
||||
NewAircraftWndProc
|
||||
};
|
||||
@@ -182,6 +191,9 @@ static void ShowBuildAircraftWindow(uint tile)
|
||||
w = AllocateWindowDesc(&_new_aircraft_desc);
|
||||
w->window_number = tile;
|
||||
w->vscroll.cap = 4;
|
||||
w->widget[2].unkA = (w->vscroll.cap << 8) + 1;
|
||||
|
||||
w->resize.step_height = 24;
|
||||
|
||||
if (tile != 0) {
|
||||
w->caption_color = _map_owner[tile];
|
||||
@@ -190,20 +202,59 @@ static void ShowBuildAircraftWindow(uint tile)
|
||||
}
|
||||
}
|
||||
|
||||
const byte _aircraft_refit_normal[] = { 0,1,4,5,6,7,8,9,10,0xFF };
|
||||
const byte _aircraft_refit_arctic[] = { 0,1,4,5,6,7,9,11,10,0xFF };
|
||||
const byte _aircraft_refit_desert[] = { 0,4,5,8,6,7,9,10,0xFF };
|
||||
const byte _aircraft_refit_candy[] = { 0,1,3,5,7,8,9,6,4,10,11,0xFF };
|
||||
#define MAX_REFIT 0xFF
|
||||
|
||||
const byte _aircraft_refit_normal[] = {
|
||||
CT_PASSENGERS,
|
||||
CT_MAIL,
|
||||
CT_GOODS,
|
||||
CT_VALUABLES,
|
||||
MAX_REFIT
|
||||
};
|
||||
|
||||
const byte _aircraft_refit_arctic[] = {
|
||||
CT_PASSENGERS,
|
||||
CT_MAIL,
|
||||
CT_GOODS,
|
||||
CT_FOOD,
|
||||
MAX_REFIT
|
||||
};
|
||||
|
||||
const byte _aircraft_refit_desert[] = {
|
||||
CT_PASSENGERS,
|
||||
CT_MAIL,
|
||||
CT_FRUIT,
|
||||
CT_GOODS,
|
||||
CT_DIAMONDS,
|
||||
MAX_REFIT
|
||||
};
|
||||
|
||||
const byte _aircraft_refit_candy[] = {
|
||||
CT_PASSENGERS,
|
||||
CT_SUGAR,
|
||||
CT_TOYS,
|
||||
CT_CANDY,
|
||||
CT_COLA,
|
||||
CT_COTTON_CANDY,
|
||||
CT_BUBBLES,
|
||||
CT_TOFFEE,
|
||||
CT_BATTERIES,
|
||||
CT_PLASTIC,
|
||||
CT_FIZZY_DRINKS,
|
||||
MAX_REFIT
|
||||
};
|
||||
|
||||
const byte * const _aircraft_refit_types[4] = {
|
||||
_aircraft_refit_normal, _aircraft_refit_arctic, _aircraft_refit_desert, _aircraft_refit_candy
|
||||
};
|
||||
|
||||
#undef MAX_REFIT
|
||||
|
||||
static void AircraftRefitWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch(e->event) {
|
||||
case WE_PAINT: {
|
||||
Vehicle *v = &_vehicles[w->window_number];
|
||||
Vehicle *v = GetVehicle(w->window_number);
|
||||
const byte *b;
|
||||
int sel;
|
||||
int x,y;
|
||||
@@ -282,7 +333,7 @@ static void AircraftRefitWndProc(Window *w, WindowEvent *e)
|
||||
} break;
|
||||
case 4: /* refit button */
|
||||
if (WP(w,refit_d).cargo != 0xFF) {
|
||||
Vehicle *v = &_vehicles[w->window_number];
|
||||
Vehicle *v = GetVehicle(w->window_number);
|
||||
if (DoCommandP(v->tile, v->index, WP(w,refit_d).cargo, NULL, CMD_REFIT_AIRCRAFT | CMD_MSG(STR_A042_CAN_T_REFIT_AIRCRAFT)))
|
||||
DeleteWindow(w);
|
||||
}
|
||||
@@ -293,11 +344,11 @@ static void AircraftRefitWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _aircraft_refit_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 239, 0, 13, STR_A03C_REFIT, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, 14, 0, 239, 14, 135, 0x0, STR_A03E_SELECT_TYPE_OF_CARGO_FOR},
|
||||
{ WWT_IMGBTN, 14, 0, 239, 136, 157, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 239, 158, 169, STR_A03D_REFIT_AIRCRAFT, STR_A03F_REFIT_AIRCRAFT_TO_CARRY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 239, 0, 13, STR_A03C_REFIT, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 239, 14, 135, 0x0, STR_A03E_SELECT_TYPE_OF_CARGO_FOR},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 239, 136, 157, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 239, 158, 169, STR_A03D_REFIT_AIRCRAFT, STR_A03F_REFIT_AIRCRAFT_TO_CARRY},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -325,7 +376,7 @@ static void ShowAircraftRefitWindow(Vehicle *v)
|
||||
static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
int mod;
|
||||
Vehicle *v = &_vehicles[w->window_number], *u;
|
||||
Vehicle *v = GetVehicle(w->window_number), *u;
|
||||
|
||||
switch(e->event) {
|
||||
case WE_PAINT:
|
||||
@@ -464,14 +515,14 @@ change_int:
|
||||
|
||||
|
||||
static const Widget _aircraft_details_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 349, 0, 13, STR_A00C_DETAILS, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, 14, 350, 389, 0, 13, STR_01AA_NAME, STR_A032_NAME_AIRCRAFT},
|
||||
{ WWT_IMGBTN, 14, 0, 389, 14, 55, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 0, 389, 56, 101, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 10, 102, 107, STR_0188, STR_884D_INCREASE_SERVICING_INTERVAL},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 10, 108, 113, STR_0189, STR_884E_DECREASE_SERVICING_INTERVAL},
|
||||
{ WWT_IMGBTN, 14, 11, 389, 102, 113, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 349, 0, 13, STR_A00C_DETAILS, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 350, 389, 0, 13, STR_01AA_NAME, STR_A032_NAME_AIRCRAFT},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 389, 14, 55, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 389, 56, 101, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 10, 102, 107, STR_0188, STR_884D_INCREASE_SERVICING_INTERVAL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 10, 108, 113, STR_0189, STR_884E_DECREASE_SERVICING_INTERVAL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 11, 389, 102, 113, 0x0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -502,17 +553,17 @@ static void ShowAircraftDetailsWindow(Vehicle *v)
|
||||
|
||||
|
||||
static const Widget _aircraft_view_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 237, 0, 13, STR_A00A, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, 14, 238, 249, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_IMGBTN, 14, 0, 231, 14, 103, 0x0, STR_NULL},
|
||||
{ WWT_6, 14, 2, 229, 16, 101, 0x0, STR_NULL},
|
||||
{ WWT_PUSHIMGBTN, 14, 0, 249, 104, 115, 0x0, STR_A027_CURRENT_AIRCRAFT_ACTION},
|
||||
{ WWT_PUSHIMGBTN, 14, 232, 249, 14, 31, 0x2AB, STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT},
|
||||
{ WWT_PUSHIMGBTN, 14, 232, 249, 32, 49, 0x2AF, STR_A02A_SEND_AIRCRAFT_TO_HANGAR},
|
||||
{ WWT_PUSHIMGBTN, 14, 232, 249, 50, 67, 0x2B4, STR_A03B_REFIT_AIRCRAFT_TO_CARRY},
|
||||
{ WWT_PUSHIMGBTN, 14, 232, 249, 68, 85, 0x2B2, STR_A028_SHOW_AIRCRAFT_S_ORDERS},
|
||||
{ WWT_PUSHIMGBTN, 14, 232, 249, 86, 103, 0x2B3, STR_A02B_SHOW_AIRCRAFT_DETAILS},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 237, 0, 13, STR_A00A, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 14, 238, 249, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 231, 14, 103, 0x0, STR_NULL},
|
||||
{ WWT_6, RESIZE_NONE, 14, 2, 229, 16, 101, 0x0, STR_NULL},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 0, 249, 104, 115, 0x0, STR_A027_CURRENT_AIRCRAFT_ACTION},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 14, 31, 0x2AB, STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 32, 49, 0x2AF, STR_A02A_SEND_AIRCRAFT_TO_HANGAR},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 50, 67, 0x2B4, STR_A03B_REFIT_AIRCRAFT_TO_CARRY},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 68, 85, 0x2B2, STR_A028_SHOW_AIRCRAFT_S_ORDERS},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 86, 103, 0x2B3, STR_A02B_SHOW_AIRCRAFT_DETAILS},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -520,13 +571,13 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch(e->event) {
|
||||
case WE_PAINT: {
|
||||
Vehicle *v = &_vehicles[w->window_number];
|
||||
Vehicle *v = GetVehicle(w->window_number);
|
||||
uint32 disabled = 1<<8;
|
||||
StringID str;
|
||||
|
||||
{
|
||||
uint tile = v->tile;
|
||||
if (IS_TILETYPE(tile, MP_STATION) &&
|
||||
if (IsTileType(tile, MP_STATION) &&
|
||||
(_map5[tile] == 32 || _map5[tile] == 65) &&
|
||||
v->vehstatus&VS_STOPPED)
|
||||
disabled = 0;
|
||||
@@ -581,7 +632,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
|
||||
} break;
|
||||
|
||||
case WE_CLICK: {
|
||||
Vehicle *v = &_vehicles[w->window_number];
|
||||
Vehicle *v = GetVehicle(w->window_number);
|
||||
|
||||
switch(e->click.widget) {
|
||||
case 5: /* start stop */
|
||||
@@ -643,7 +694,7 @@ static void DrawAircraftDepotWindow(Window *w)
|
||||
tile = w->window_number;
|
||||
|
||||
/* setup disabled buttons */
|
||||
w->disabled_state = (_map_owner[tile]==_local_player) ? 0 : ((1<<4)|(1<<6));
|
||||
w->disabled_state = (_map_owner[tile]==_local_player) ? 0 : ((1<<4)|(1<<7));
|
||||
|
||||
/* determine amount of items for scroller */
|
||||
num = 0;
|
||||
@@ -652,21 +703,21 @@ static void DrawAircraftDepotWindow(Window *w)
|
||||
v->tile == (TileIndex)tile)
|
||||
num++;
|
||||
}
|
||||
SetVScrollCount(w, (num + 3) >> 2);
|
||||
SetVScrollCount(w, (num + w->hscroll.cap - 1) / w->hscroll.cap);
|
||||
|
||||
SetDParam(0, _map2[tile]);
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
x = 2;
|
||||
y = 15;
|
||||
num = w->vscroll.pos * 4;
|
||||
num = w->vscroll.pos * w->hscroll.cap;
|
||||
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->type == VEH_Aircraft &&
|
||||
v->subtype <= 2 &&
|
||||
v->vehstatus&VS_HIDDEN &&
|
||||
v->tile == (TileIndex)tile &&
|
||||
--num < 0 && num >= -8) {
|
||||
--num < 0 && num >= -w->vscroll.cap * w->hscroll.cap) {
|
||||
|
||||
DrawAircraftImage(v, x+12, y, WP(w,traindepot_d).sel);
|
||||
|
||||
@@ -675,8 +726,8 @@ static void DrawAircraftDepotWindow(Window *w)
|
||||
|
||||
DrawSprite( (v->vehstatus & VS_STOPPED) ? 0xC12 : 0xC13, x, y+12);
|
||||
|
||||
if ((x+=74) == 2+74*4) {
|
||||
x -= 74*4;
|
||||
if ((x+=74) == 2 + 74 * w->hscroll.cap) {
|
||||
x = 2;
|
||||
y += 24;
|
||||
}
|
||||
}
|
||||
@@ -684,22 +735,22 @@ static void DrawAircraftDepotWindow(Window *w)
|
||||
}
|
||||
|
||||
static int GetVehicleFromAircraftDepotWndPt(Window *w, int x, int y, Vehicle **veh) {
|
||||
uint xt,yt,xm,ym;
|
||||
uint xt,row,xm,ym;
|
||||
Vehicle *v;
|
||||
uint tile;
|
||||
int pos;
|
||||
|
||||
xt = x / 74;
|
||||
xm = x % 74;
|
||||
if (xt >= 4)
|
||||
if (xt >= w->hscroll.cap)
|
||||
return 1;
|
||||
|
||||
yt = (y - 14) / 24;
|
||||
row = (y - 14) / 24;
|
||||
ym = (y - 14) % 24;
|
||||
if (yt >= 2)
|
||||
if (row >= w->vscroll.cap)
|
||||
return 1;
|
||||
|
||||
pos = (yt + w->vscroll.pos) * 4 + xt;
|
||||
pos = (row + w->vscroll.pos) * w->hscroll.cap + xt;
|
||||
|
||||
tile = w->window_number;
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
@@ -754,19 +805,6 @@ static void AircraftDepotClickAircraft(Window *w, int x, int y)
|
||||
}
|
||||
}
|
||||
|
||||
static const Widget _aircraft_depot_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 318, 0, 13, STR_A002_AIRCRAFT_HANGAR, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, 14, 319, 330, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_MATRIX, 14, 0, 295, 14, 61, 0x204, STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT},
|
||||
{ WWT_IMGBTN, 14, 296, 319, 14, 61, 0x2A9, STR_A023_DRAG_AIRCRAFT_TO_HERE_TO},
|
||||
{ WWT_SCROLLBAR, 14, 320, 330, 14, 61, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 164, 62, 73, STR_A003_NEW_AIRCRAFT, STR_A022_BUILD_NEW_AIRCRAFT},
|
||||
{ WWT_PUSHTXTBTN, 14, 165, 330, 62, 73, STR_00E4_LOCATION, STR_A024_CENTER_MAIN_VIEW_ON_HANGAR},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
|
||||
static void AircraftDepotWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch(e->event) {
|
||||
@@ -776,13 +814,13 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
case WE_CLICK:
|
||||
switch(e->click.widget) {
|
||||
case 3: /* click aircraft */
|
||||
case 5: /* click aircraft */
|
||||
AircraftDepotClickAircraft(w, e->click.pt.x, e->click.pt.y);
|
||||
break;
|
||||
case 6: /* show build aircraft window */
|
||||
case 7: /* show build aircraft window */
|
||||
ShowBuildAircraftWindow(w->window_number);
|
||||
break;
|
||||
case 7: /* scroll to tile */
|
||||
case 8: /* scroll to tile */
|
||||
ScrollMainWindowToTile(w->window_number);
|
||||
break;
|
||||
}
|
||||
@@ -794,7 +832,7 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
case WE_DRAGDROP: {
|
||||
switch(e->click.widget) {
|
||||
case 3: {
|
||||
case 5: {
|
||||
Vehicle *v;
|
||||
VehicleID sel = WP(w,traindepot_d).sel;
|
||||
|
||||
@@ -815,7 +853,7 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
HandleButtonClick(w, 4);
|
||||
|
||||
v = &_vehicles[WP(w,traindepot_d).sel];
|
||||
v = GetVehicle(WP(w,traindepot_d).sel);
|
||||
WP(w,traindepot_d).sel = INVALID_VEHICLE;
|
||||
|
||||
_backup_orders_tile = v->tile;
|
||||
@@ -832,15 +870,35 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case WE_RESIZE:
|
||||
w->vscroll.cap += e->sizing.diff.y / 24;
|
||||
w->hscroll.cap += e->sizing.diff.x / 74;
|
||||
w->widget[5].unkA = (w->vscroll.cap << 8) + w->hscroll.cap;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const Widget _aircraft_depot_widgets[] = {
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 318, 0, 13, STR_A002_AIRCRAFT_HANGAR, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_LR, 14, 319, 330, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PANEL, RESIZE_LRB, 14, 296, 318, 14, 13, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_LRTB, 14, 296, 318, 14, 61, 0x2A9, STR_A023_DRAG_AIRCRAFT_TO_HERE_TO},
|
||||
|
||||
{ WWT_MATRIX, RESIZE_RB, 14, 0, 295, 14, 61, 0x204, STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT},
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 319, 330, 14, 61, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 159, 62, 73, STR_A003_NEW_AIRCRAFT, STR_A022_BUILD_NEW_AIRCRAFT},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 160, 318, 62, 73, STR_00E4_LOCATION, STR_A024_CENTER_MAIN_VIEW_ON_HANGAR},
|
||||
{ WWT_PANEL, RESIZE_RTB, 14, 319, 318, 62, 73, 0x0, STR_NULL},
|
||||
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 319, 330, 62, 73, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const WindowDesc _aircraft_depot_desc = {
|
||||
-1, -1, 331, 74,
|
||||
WC_VEHICLE_DEPOT,0,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
|
||||
_aircraft_depot_widgets,
|
||||
AircraftDepotWndProc
|
||||
};
|
||||
@@ -854,21 +912,21 @@ void ShowAircraftDepotWindow(uint tile)
|
||||
if (w) {
|
||||
w->caption_color = _map_owner[tile];
|
||||
w->vscroll.cap = 2;
|
||||
w->hscroll.cap = 4;
|
||||
w->resize.step_width = 74;
|
||||
w->resize.step_height = 24;
|
||||
WP(w,traindepot_d).sel = INVALID_VEHICLE;
|
||||
_backup_orders_tile = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void DrawSmallSchedule(Vehicle *v, int x, int y) {
|
||||
const Order *sched;
|
||||
int sel;
|
||||
Order ord;
|
||||
int i = 0;
|
||||
static void DrawSmallOrderList(Vehicle *v, int x, int y) {
|
||||
const Order *order;
|
||||
int sel, i = 0;
|
||||
|
||||
sched = v->schedule_ptr;
|
||||
sel = v->cur_order_index;
|
||||
|
||||
while ((ord = *sched++).type != OT_NOTHING) {
|
||||
FOR_VEHICLE_ORDERS(v, order) {
|
||||
if (sel == 0) {
|
||||
_stringwidth_base = 0xE0;
|
||||
DoDrawString( "\xAF", x-6, y, 16);
|
||||
@@ -876,8 +934,8 @@ static void DrawSmallSchedule(Vehicle *v, int x, int y) {
|
||||
}
|
||||
sel--;
|
||||
|
||||
if (ord.type == OT_GOTO_STATION) {
|
||||
SetDParam(0, ord.station);
|
||||
if (order->type == OT_GOTO_STATION) {
|
||||
SetDParam(0, order->station);
|
||||
DrawString(x, y, STR_A036, 0);
|
||||
|
||||
y += 6;
|
||||
@@ -888,31 +946,35 @@ static void DrawSmallSchedule(Vehicle *v, int x, int y) {
|
||||
}
|
||||
|
||||
|
||||
static Widget _player_aircraft_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_PANEL, 14, 249, 259, 14, 25, 0x0, STR_NULL},
|
||||
{ WWT_MATRIX, 14, 0, 248, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
|
||||
{ WWT_SCROLLBAR, 14, 249, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 129, 170, 181, STR_A003_NEW_AIRCRAFT, STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES},
|
||||
{ WWT_PANEL, 14, 130, 259, 170, 181, 0x0, STR_NULL},
|
||||
static const Widget _player_aircraft_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_LR, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 81, 235, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 236, 247, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_PANEL, RESIZE_RIGHT, 14, 248, 259, 14, 25, 0x0, STR_NULL},
|
||||
{ WWT_MATRIX, RESIZE_RB, 14, 0, 247, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 248, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 124, 170, 181, STR_A003_NEW_AIRCRAFT, STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 125, 247, 170, 181, STR_REPLACE_VEHICLES, STR_REPLACE_HELP},
|
||||
{ WWT_PANEL, RESIZE_RTB, 14, 248, 247, 170, 181, 0x0, STR_NULL},
|
||||
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 248, 259, 170, 181, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static Widget _other_player_aircraft_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_PANEL, 14, 249, 259, 14, 25, 0x0, STR_NULL},
|
||||
{ WWT_MATRIX, 14, 0, 248, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
|
||||
{ WWT_SCROLLBAR, 14, 249, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
static const Widget _other_player_aircraft_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_LR, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 81, 235, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 236, 247, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_PANEL, RESIZE_RIGHT, 14, 248, 259, 14, 25, 0x0, STR_NULL},
|
||||
{ WWT_MATRIX, RESIZE_RB, 14, 0, 247, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 248, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_PANEL, RESIZE_RTB, 14, 0, 247, 170, 181, 0x0, STR_NULL},
|
||||
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 248, 259, 170, 181, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -941,20 +1003,17 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
/* draw the widgets */
|
||||
{
|
||||
const Player *p = DEREF_PLAYER(owner);
|
||||
/* XXX hack */
|
||||
if (station == -1) {
|
||||
/* Company Name -- (###) Aircraft */
|
||||
SetDParam(0, p->name_1);
|
||||
SetDParam(1, p->name_2);
|
||||
SetDParam(2, w->vscroll.count);
|
||||
_player_aircraft_widgets[1].unkA = STR_A009_AIRCRAFT;
|
||||
_other_player_aircraft_widgets[1].unkA = STR_A009_AIRCRAFT;
|
||||
w->widget[1].unkA = STR_A009_AIRCRAFT;
|
||||
} else {
|
||||
/* Station Name -- (###) Aircraft */
|
||||
SetDParam(0, DEREF_STATION(station)->index);
|
||||
SetDParam(0, GetStation(station)->index);
|
||||
SetDParam(1, w->vscroll.count);
|
||||
_player_aircraft_widgets[1].unkA = STR_SCHEDULED_AIRCRAFT;
|
||||
_other_player_aircraft_widgets[1].unkA = STR_SCHEDULED_AIRCRAFT;
|
||||
w->widget[1].unkA = STR_SCHEDULED_AIRCRAFT;
|
||||
}
|
||||
DrawWindowWidgets(w);
|
||||
}
|
||||
@@ -966,7 +1025,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
max = min(w->vscroll.pos + w->vscroll.cap, vl->list_length);
|
||||
for (i = w->vscroll.pos; i < max; ++i) {
|
||||
Vehicle *v = DEREF_VEHICLE(vl->sort_list[i].index);
|
||||
Vehicle *v = GetVehicle(vl->sort_list[i].index);
|
||||
StringID str;
|
||||
|
||||
assert(v->type == VEH_Aircraft && v->subtype <= 2);
|
||||
@@ -975,7 +1034,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
DrawVehicleProfitButton(v, x, y + 13);
|
||||
|
||||
SetDParam(0, v->unitnumber);
|
||||
if (IsAircraftHangarTile(v->tile))
|
||||
if (IsAircraftHangarTile(v->tile) && (v->vehstatus & VS_HIDDEN))
|
||||
str = STR_021F;
|
||||
else
|
||||
str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
|
||||
@@ -990,7 +1049,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
DrawString(x + 19, y, STR_01AB, 0);
|
||||
}
|
||||
|
||||
DrawSmallSchedule(v, x + 136, y);
|
||||
DrawSmallOrderList(v, x + 136, y);
|
||||
|
||||
y += PLY_WND_PRC__SIZE_OF_ROW_BIG;
|
||||
}
|
||||
@@ -1005,7 +1064,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
break;
|
||||
|
||||
case 4: case 5:/* Select sorting criteria dropdown menu */
|
||||
ShowDropDownMenu(w, _vehicle_sort_listing, vl->sort_type, 5, 0);
|
||||
ShowDropDownMenu(w, _vehicle_sort_listing, vl->sort_type, 5, 0, 0);
|
||||
return;
|
||||
|
||||
case 7: { /* Matrix to show vehicles */
|
||||
@@ -1020,7 +1079,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
if (id_v >= vl->list_length) return; // click out of list bound
|
||||
|
||||
v = DEREF_VEHICLE(vl->sort_list[id_v].index);
|
||||
v = GetVehicle(vl->sort_list[id_v].index);
|
||||
|
||||
assert(v->type == VEH_Aircraft && v->subtype <= 2);
|
||||
|
||||
@@ -1031,6 +1090,9 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
case 9: { /* Build new Vehicle */
|
||||
uint tile;
|
||||
|
||||
if (!IsWindowOfPrototype(w, _player_aircraft_widgets))
|
||||
break;
|
||||
|
||||
tile = _last_built_aircraft_depot_tile;
|
||||
do {
|
||||
if (_map_owner[tile] == _local_player && IsAircraftHangarTile(tile)) {
|
||||
@@ -1044,6 +1106,14 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
ShowBuildAircraftWindow(0);
|
||||
} break;
|
||||
|
||||
case 10:
|
||||
if (!IsWindowOfPrototype(w, _player_aircraft_widgets))
|
||||
break;
|
||||
|
||||
ShowReplaceVehicleWindow(VEH_Aircraft);
|
||||
break;
|
||||
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -1080,21 +1150,27 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
break;
|
||||
|
||||
case WE_RESIZE:
|
||||
/* Update the scroll + matrix */
|
||||
w->vscroll.cap += e->sizing.diff.y / PLY_WND_PRC__SIZE_OF_ROW_BIG;
|
||||
w->widget[7].unkA = (w->vscroll.cap << 8) + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const WindowDesc _player_aircraft_desc = {
|
||||
-1, -1, 260, 182,
|
||||
WC_AIRCRAFT_LIST,0,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
|
||||
_player_aircraft_widgets,
|
||||
PlayerAircraftWndProc
|
||||
};
|
||||
|
||||
static const WindowDesc _other_player_aircraft_desc = {
|
||||
-1, -1, 260, 170,
|
||||
-1, -1, 260, 182,
|
||||
WC_AIRCRAFT_LIST,0,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
|
||||
_other_player_aircraft_widgets,
|
||||
PlayerAircraftWndProc
|
||||
};
|
||||
@@ -1111,6 +1187,8 @@ void ShowPlayerAircraft(int player, int station)
|
||||
|
||||
if (w) {
|
||||
w->caption_color = w->window_number;
|
||||
w->vscroll.cap = 4; // maximum number of vehicles shown
|
||||
w->vscroll.cap = 4;
|
||||
w->widget[7].unkA = (w->vscroll.cap << 8) + 1;
|
||||
w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_BIG;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,11 +10,10 @@ AirportFTAClass *MetropolitanAirport;
|
||||
AirportFTAClass *InternationalAirport;
|
||||
|
||||
static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
|
||||
const byte nofterminals, const byte nofterminalgroups,
|
||||
const byte nofhelipads, const byte nofhelipadgroups,
|
||||
const byte *terminals, const byte *helipads,
|
||||
const byte entry_point, const byte acc_planes,
|
||||
const AirportFTAbuildup *FA,
|
||||
const TileIndex *depots, const byte nof_depots);
|
||||
const TileIndexDiffC *depots, const byte nof_depots);
|
||||
static void AirportFTAClass_Destructor(AirportFTAClass *Airport);
|
||||
|
||||
static uint16 AirportGetNofElements(const AirportFTAbuildup *FA);
|
||||
@@ -23,31 +22,82 @@ static byte AirportTestFTA(const AirportFTAClass *Airport);
|
||||
/*static void AirportPrintOut(const AirportFTAClass *Airport, const bool full_report);
|
||||
static byte AirportBlockToString(uint32 block);*/
|
||||
|
||||
void InitializeAirports()
|
||||
void InitializeAirports(void)
|
||||
{
|
||||
// country airport
|
||||
CountryAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
|
||||
AirportFTAClass_Constructor(CountryAirport, 2, 1, 0, 0, 16, ALL, _airport_fta_country, _airport_depots_country, lengthof(_airport_depots_country));
|
||||
CountryAirport = malloc(sizeof(AirportFTAClass));
|
||||
|
||||
AirportFTAClass_Constructor(
|
||||
CountryAirport,
|
||||
_airport_terminal_country,
|
||||
NULL,
|
||||
16,
|
||||
ALL,
|
||||
_airport_fta_country,
|
||||
_airport_depots_country,
|
||||
lengthof(_airport_depots_country)
|
||||
);
|
||||
|
||||
// city airport
|
||||
CityAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
|
||||
AirportFTAClass_Constructor(CityAirport, 3, 1, 0, 0, 19, ALL, _airport_fta_city, _airport_depots_city, lengthof(_airport_depots_city));
|
||||
CityAirport = malloc(sizeof(AirportFTAClass));
|
||||
|
||||
AirportFTAClass_Constructor(
|
||||
CityAirport,
|
||||
_airport_terminal_city,
|
||||
NULL,
|
||||
19,
|
||||
ALL,
|
||||
_airport_fta_city,
|
||||
_airport_depots_city,
|
||||
lengthof(_airport_depots_city)
|
||||
);
|
||||
|
||||
// metropolitan airport
|
||||
MetropolitanAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
|
||||
AirportFTAClass_Constructor(MetropolitanAirport, 3, 1, 0, 0, 20, ALL, _airport_fta_metropolitan, _airport_depots_metropolitan, lengthof(_airport_depots_metropolitan));
|
||||
MetropolitanAirport = malloc(sizeof(AirportFTAClass));
|
||||
|
||||
AirportFTAClass_Constructor(
|
||||
MetropolitanAirport,
|
||||
_airport_terminal_metropolitan,
|
||||
NULL,
|
||||
20,
|
||||
ALL,
|
||||
_airport_fta_metropolitan,
|
||||
_airport_depots_metropolitan,
|
||||
lengthof(_airport_depots_metropolitan)
|
||||
);
|
||||
|
||||
// international airport
|
||||
InternationalAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
|
||||
AirportFTAClass_Constructor(InternationalAirport, 6, 2, 2, 1, 37, ALL, _airport_fta_international, _airport_depots_international, lengthof(_airport_depots_international));
|
||||
|
||||
AirportFTAClass_Constructor(
|
||||
InternationalAirport,
|
||||
_airport_terminal_international,
|
||||
_airport_helipad_international,
|
||||
37,
|
||||
ALL,
|
||||
_airport_fta_international,
|
||||
_airport_depots_international,
|
||||
lengthof(_airport_depots_international)
|
||||
);
|
||||
|
||||
// heliport, oilrig
|
||||
Heliport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
|
||||
AirportFTAClass_Constructor(Heliport, 0, 0, 1, 1, 7, HELICOPTERS_ONLY, _airport_fta_heliport_oilrig, NULL, 0);
|
||||
|
||||
AirportFTAClass_Constructor(
|
||||
Heliport,
|
||||
NULL,
|
||||
_airport_helipad_heliport_oilrig,
|
||||
7,
|
||||
HELICOPTERS_ONLY,
|
||||
_airport_fta_heliport_oilrig,
|
||||
NULL,
|
||||
0
|
||||
);
|
||||
|
||||
Oilrig = Heliport; // exactly the same structure for heliport/oilrig, so share state machine
|
||||
}
|
||||
|
||||
void UnInitializeAirports()
|
||||
void UnInitializeAirports(void)
|
||||
{
|
||||
AirportFTAClass_Destructor(CountryAirport);
|
||||
AirportFTAClass_Destructor(CityAirport);
|
||||
@@ -57,12 +107,46 @@ void UnInitializeAirports()
|
||||
}
|
||||
|
||||
static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
|
||||
const byte nofterminals, const byte nofterminalgroups,
|
||||
const byte nofhelipads, const byte nofhelipadgroups,
|
||||
const byte *terminals, const byte *helipads,
|
||||
const byte entry_point, const byte acc_planes,
|
||||
const AirportFTAbuildup *FA,
|
||||
const TileIndex *depots, const byte nof_depots)
|
||||
const TileIndexDiffC *depots, const byte nof_depots)
|
||||
{
|
||||
byte nofterminals, nofhelipads;
|
||||
byte nofterminalgroups = 0;
|
||||
byte nofhelipadgroups = 0;
|
||||
const byte * curr;
|
||||
int i;
|
||||
nofterminals = nofhelipads = 0;
|
||||
|
||||
//now we read the number of terminals we have
|
||||
if (terminals != NULL) {
|
||||
i = terminals[0];
|
||||
nofterminalgroups = i;
|
||||
curr = terminals;
|
||||
while (i-- > 0) {
|
||||
curr++;
|
||||
assert(*curr != 0); //we don't want to have an empty group
|
||||
nofterminals += *curr;
|
||||
}
|
||||
|
||||
}
|
||||
Airport->terminals = terminals;
|
||||
|
||||
//read helipads
|
||||
if (helipads != NULL) {
|
||||
i = helipads[0];
|
||||
nofhelipadgroups = i;
|
||||
curr = helipads;
|
||||
while (i-- > 0) {
|
||||
curr++;
|
||||
assert(*curr != 0); //no empty groups please
|
||||
nofhelipads += *curr;
|
||||
}
|
||||
|
||||
}
|
||||
Airport->helipads = helipads;
|
||||
|
||||
// if there are more terminals than 6, internal variables have to be changed, so don't allow that
|
||||
// same goes for helipads
|
||||
if (nofterminals > MAX_TERMINALS) { printf("Currently only maximum of %2d terminals are supported (you wanted %2d)\n", MAX_TERMINALS, nofterminals);}
|
||||
@@ -70,23 +154,15 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
|
||||
// terminals/helipads are divided into groups. Groups are computed by dividing the number
|
||||
// of terminals by the number of groups. Half in half. If #terminals is uneven, first group
|
||||
// will get the less # of terminals
|
||||
if (nofterminalgroups > nofterminals) { printf("# of terminalgroups (%2d) must be less or equal to terminals (%2d)", nofterminals, nofterminalgroups);}
|
||||
if (nofhelipadgroups > nofhelipads) { printf("# of helipadgroups (%2d) must be less or equal to helipads (%2d)", nofhelipads, nofhelipadgroups);}
|
||||
|
||||
assert(nofterminals <= MAX_TERMINALS);
|
||||
assert(nofhelipads <= MAX_HELIPADS);
|
||||
assert(nofterminalgroups <= nofterminals);
|
||||
assert(nofhelipadgroups <= nofhelipads);
|
||||
|
||||
Airport->nofelements = AirportGetNofElements(FA);
|
||||
// check
|
||||
if (entry_point >= Airport->nofelements) {printf("Entry point (%2d) must be within the airport positions (which is max %2d)\n", entry_point, Airport->nofelements);}
|
||||
assert(entry_point < Airport->nofelements);
|
||||
|
||||
Airport->nofterminals = nofterminals;
|
||||
Airport->nofterminalgroups = nofterminalgroups;
|
||||
Airport->nofhelipads = nofhelipads;
|
||||
Airport->nofhelipadgroups = nofhelipadgroups;
|
||||
Airport->acc_planes = acc_planes;
|
||||
Airport->entry_point = entry_point;
|
||||
Airport->airport_depots = depots;
|
||||
@@ -95,8 +171,8 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
|
||||
|
||||
// build the state machine
|
||||
AirportBuildAutomata(Airport, FA);
|
||||
DEBUG(misc, 1) ("#Elements %2d; #Terminals %2d in %d group(s); #Helipads %2d in %d group(s)", Airport->nofelements,
|
||||
Airport->nofterminals, Airport->nofterminalgroups, Airport->nofhelipads, Airport->nofhelipadgroups);
|
||||
DEBUG(misc, 1) ("#Elements %2d; #Terminals %2d in %d group(s); #Helipads %2d in %d group(s); Entry Point %d", Airport->nofelements,
|
||||
nofterminals, nofterminalgroups, nofhelipads, nofhelipadgroups, Airport->entry_point);
|
||||
|
||||
|
||||
{
|
||||
|
||||
@@ -13,7 +13,7 @@ enum {
|
||||
AT_HELIPORT = 2,
|
||||
AT_METROPOLITAN = 3,
|
||||
AT_INTERNATIONAL = 4,
|
||||
AT_OILRIG = 5
|
||||
AT_OILRIG = 15
|
||||
};
|
||||
|
||||
// do not change unless you change v->subtype too. This aligns perfectly with its current setting
|
||||
@@ -26,13 +26,11 @@ enum {
|
||||
// Finite sTate mAchine --> FTA
|
||||
typedef struct AirportFTAClass {
|
||||
byte nofelements; // number of positions the airport consists of
|
||||
byte nofterminals; // number of terminals this airport has
|
||||
byte nofterminalgroups; // terminals belong to so many groups (MAX is the nofterminals)
|
||||
byte nofhelipads; // number of helipads this airport has
|
||||
byte nofhelipadgroups; // helipads belong to so many groups (MAX is the nofhelipads)
|
||||
const byte *terminals;
|
||||
const byte *helipads;
|
||||
byte entry_point; // when an airplane arrives at this airport, enter it at position entry_point
|
||||
byte acc_planes; // accept airplanes or helicopters or both
|
||||
const TileIndex *airport_depots; // gives the position of the depots on the airports
|
||||
const TileIndexDiffC *airport_depots; // gives the position of the depots on the airports
|
||||
byte nof_depots; // number of depots this airport has
|
||||
struct AirportFTA *layout; // state machine for airport
|
||||
} AirportFTAClass;
|
||||
@@ -46,8 +44,8 @@ typedef struct AirportFTA {
|
||||
struct AirportFTA *next_in_chain; // possible extra movement choices from this position
|
||||
} AirportFTA;
|
||||
|
||||
void InitializeAirports();
|
||||
void UnInitializeAirports();
|
||||
void InitializeAirports(void);
|
||||
void UnInitializeAirports(void);
|
||||
const AirportFTAClass* GetAirport(const byte airport_type);
|
||||
|
||||
#endif /* AIRPORT_H */
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
static byte _selected_airport_type;
|
||||
|
||||
static void ShowBuildAirportPicker();
|
||||
static void ShowBuildAirportPicker(void);
|
||||
|
||||
|
||||
void CcBuildAirport(bool success, uint tile, uint32 p1, uint32 p2)
|
||||
@@ -70,6 +70,16 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
|
||||
_build_air_button_proc[e->click.widget - 3](w);
|
||||
break;
|
||||
|
||||
case WE_KEYPRESS: {
|
||||
switch (e->keypress.keycode) {
|
||||
case '1': BuildAirClick_Airport(w); break;
|
||||
case '2': BuildAirClick_Demolish(w); break;
|
||||
case 'l': BuildAirClick_Landscaping(w); break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
} break;
|
||||
|
||||
case WE_PLACE_OBJ:
|
||||
_place_proc(e->place.tile);
|
||||
break;
|
||||
@@ -96,12 +106,12 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _air_toolbar_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 73, 0, 13, STR_A000_AIRPORTS, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, 7, 74, 85, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PANEL, 7, 0, 41, 14, 35, 0x2E8, STR_A01E_BUILD_AIRPORT},
|
||||
{ WWT_PANEL, 7, 42, 63, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_PANEL, 7, 64, 85, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 73, 0, 13, STR_A000_AIRPORTS, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 7, 74, 85, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 41, 14, 35, 0x2E8, STR_A01E_BUILD_AIRPORT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 42, 63, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 64, 85, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -114,8 +124,9 @@ static const WindowDesc _air_toolbar_desc = {
|
||||
BuildAirToolbWndProc
|
||||
};
|
||||
|
||||
void ShowBuildAirToolbar()
|
||||
void ShowBuildAirToolbar(void)
|
||||
{
|
||||
if (_current_player == OWNER_SPECTATOR) return;
|
||||
DeleteWindowById(WC_BUILD_TOOLBAR, 0);
|
||||
AllocateWindowDescFront(&_air_toolbar_desc, 0);
|
||||
}
|
||||
@@ -155,7 +166,7 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
|
||||
case AT_INTERNATIONAL: rad = CA_AIR_INTER; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
|
||||
|
||||
DrawWindowWidgets(w);
|
||||
@@ -168,9 +179,6 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
case WE_CLICK: {
|
||||
switch(e->click.widget) {
|
||||
case 0:
|
||||
ResetObjectToPlace();
|
||||
break;
|
||||
case 3: case 4: case 5: case 6: case 7:
|
||||
_selected_airport_type = e->click.widget - 3;
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
@@ -192,20 +200,25 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
CheckRedrawStationCoverage(w);
|
||||
} break;
|
||||
|
||||
case WE_DESTROY:
|
||||
if (!WP(w,def_d).close)
|
||||
ResetObjectToPlace();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const Widget _build_airport_picker_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 147, 0, 13, STR_3001_AIRPORT_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 147, 14, 130, 0x0, STR_NULL},
|
||||
{WWT_NODISTXTBTN, 14, 2, 73, 27, 38, STR_3059_SMALL, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{WWT_NODISTXTBTN, 14, 74, 145, 27, 38, STR_305A_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{WWT_NODISTXTBTN, 14, 2, 145, 63, 74, STR_306B_HELIPORT, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{WWT_NODISTXTBTN, 14, 2, 145, 39, 50, STR_305AA_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{WWT_NODISTXTBTN, 14, 2, 145, 51, 62, STR_305AB_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{ WWT_CLOSEBOX, 14, 14, 73, 88, 98, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
|
||||
{ WWT_CLOSEBOX, 14, 74, 133, 88, 98, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_3001_AIRPORT_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 147, 14, 130, 0x0, STR_NULL},
|
||||
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 2, 73, 27, 38, STR_3059_SMALL, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 74, 145, 27, 38, STR_305A_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 2, 145, 63, 74, STR_306B_HELIPORT, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 2, 145, 39, 50, STR_305AA_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 2, 145, 51, 62, STR_305AB_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 14, 73, 88, 98, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 74, 133, 88, 98, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -217,12 +230,12 @@ static const WindowDesc _build_airport_desc = {
|
||||
BuildAirportPickerWndProc
|
||||
};
|
||||
|
||||
static void ShowBuildAirportPicker()
|
||||
static void ShowBuildAirportPicker(void)
|
||||
{
|
||||
AllocateWindowDesc(&_build_airport_desc);
|
||||
}
|
||||
|
||||
void InitializeAirportGui()
|
||||
void InitializeAirportGui(void)
|
||||
{
|
||||
_selected_airport_type = AT_SMALL;
|
||||
_last_built_aircraft_depot_tile = 0;
|
||||
|
||||
@@ -263,7 +263,8 @@ static const AirportMovingData _airport_moving_data_oilrig[9] = {
|
||||
/////**********Movement Machine on Airports*********************///////
|
||||
// first element of depots array tells us how many depots there are (to know size of array)
|
||||
// this may be changed later when airports are moved to external file
|
||||
static const TileIndex _airport_depots_country[] = {TILE_XY(3,0)};
|
||||
static const TileIndexDiffC _airport_depots_country[] = {{3, 0}};
|
||||
static const byte _airport_terminal_country[] = {1, 2};
|
||||
static const AirportFTAbuildup _airport_fta_country[] = {
|
||||
{ 0,HANGAR,NOTHING_block,1},
|
||||
{ 1,255,AIRPORT_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM1,TERM1_block,2}, {1,TERM2,0,4}, {1,HELITAKEOFF,0,19}, {1,0,0,6},
|
||||
@@ -293,7 +294,8 @@ static const AirportFTAbuildup _airport_fta_country[] = {
|
||||
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
static const TileIndex _airport_depots_city[] = {TILE_XY(5,0)};
|
||||
static const TileIndexDiffC _airport_depots_city[] = {{5, 0}};
|
||||
static const byte _airport_terminal_city[] = {1, 3};
|
||||
static const AirportFTAbuildup _airport_fta_city[] = {
|
||||
{ 0,HANGAR,NOTHING_block,1}, {0,TAKEOFF,OUT_WAY_block,1}, {0,0,0,1},
|
||||
{ 1,255,TAXIWAY_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM2,0,6}, {1,TERM3,0,6}, {1,0,0,7}, // for all else, go to 7
|
||||
@@ -327,7 +329,8 @@ static const AirportFTAbuildup _airport_fta_city[] = {
|
||||
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
static const TileIndex _airport_depots_metropolitan[] = {TILE_XY(5,0)};
|
||||
static const TileIndexDiffC _airport_depots_metropolitan[] = {{5, 0}};
|
||||
static const byte _airport_terminal_metropolitan[] = {1, 3};
|
||||
static const AirportFTAbuildup _airport_fta_metropolitan[] = {
|
||||
{ 0,HANGAR,NOTHING_block,1},
|
||||
{ 1,255,TAXIWAY_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM2,0,6}, {1,TERM3,0,6}, {1,0,0,7}, // for all else, go to 7
|
||||
@@ -363,7 +366,9 @@ static const AirportFTAbuildup _airport_fta_metropolitan[] = {
|
||||
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
static const TileIndex _airport_depots_international[] = {TILE_XY(0,3), TILE_XY(6,1)};
|
||||
static const TileIndexDiffC _airport_depots_international[] = {{0, 3}, {6, 1}};
|
||||
static const byte _airport_terminal_international[] = {2, 3, 3};
|
||||
static const byte _airport_helipad_international[] = {1, 2};
|
||||
static const AirportFTAbuildup _airport_fta_international[] = {
|
||||
{ 0,HANGAR,NOTHING_block,2}, {0,255,TERM_GROUP1_block,0}, {0,255,TERM_GROUP2_ENTER1_block,1}, {0,HELITAKEOFF,HELIPAD1_block,2}, {0,0,0,2},
|
||||
{ 1,HANGAR,NOTHING_block,3}, {1,255,HANGAR2_AREA_block,1}, {1,HELITAKEOFF,HELIPAD2_block,3}, {1,0,0,3},
|
||||
@@ -426,6 +431,7 @@ static const AirportFTAbuildup _airport_fta_international[] = {
|
||||
};
|
||||
|
||||
// heliports, oilrigs don't have depots
|
||||
static const byte _airport_helipad_heliport_oilrig[] = {1, 1};
|
||||
static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
|
||||
{0,HELIPAD1,HELIPAD1_block,1},
|
||||
{1,HELITAKEOFF,NOTHING_block,0}, // takeoff
|
||||
@@ -440,12 +446,22 @@ static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
|
||||
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
static const AirportMovingData * const _airport_moving_datas[6] = {
|
||||
static const AirportMovingData * const _airport_moving_datas[] = {
|
||||
_airport_moving_data_country, // Country Airfield (small) 4x3
|
||||
_airport_moving_data_town, // City Airport (large) 6x6
|
||||
_airport_moving_data_heliport, // Heliport
|
||||
_airport_moving_data_metropolitan, // Metropolitain Airport (large) - 2 runways
|
||||
_airport_moving_data_international, // International Airport (xlarge) - 2 runways
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
_airport_moving_data_oilrig // Oilrig
|
||||
};
|
||||
|
||||
|
||||
@@ -19,13 +19,15 @@
|
||||
#include "aystar.h"
|
||||
// This looks in the Hash if a node exists in ClosedList
|
||||
// If so, it returns the PathNode, else NULL
|
||||
PathNode *AyStarMain_ClosedList_IsInList(AyStar *aystar, AyStarNode *node) {
|
||||
static PathNode *AyStarMain_ClosedList_IsInList(AyStar *aystar, AyStarNode *node)
|
||||
{
|
||||
return (PathNode*)Hash_Get(&aystar->ClosedListHash, node->tile, node->direction);
|
||||
}
|
||||
|
||||
// This adds a node to the ClosedList
|
||||
// It makes a copy of the data
|
||||
void AyStarMain_ClosedList_Add(AyStar *aystar, PathNode *node) {
|
||||
static void AyStarMain_ClosedList_Add(AyStar *aystar, PathNode *node)
|
||||
{
|
||||
// Add a node to the ClosedList
|
||||
PathNode *new_node = malloc(sizeof(PathNode));
|
||||
*new_node = *node;
|
||||
@@ -34,14 +36,16 @@ void AyStarMain_ClosedList_Add(AyStar *aystar, PathNode *node) {
|
||||
|
||||
// Checks if a node is in the OpenList
|
||||
// If so, it returns the OpenListNode, else NULL
|
||||
OpenListNode *AyStarMain_OpenList_IsInList(AyStar *aystar, AyStarNode *node) {
|
||||
static OpenListNode *AyStarMain_OpenList_IsInList(AyStar *aystar, AyStarNode *node)
|
||||
{
|
||||
return (OpenListNode*)Hash_Get(&aystar->OpenListHash, node->tile, node->direction);
|
||||
}
|
||||
|
||||
// Gets the best node from OpenList
|
||||
// returns the best node, or NULL of none is found
|
||||
// Also it deletes the node from the OpenList
|
||||
OpenListNode *AyStarMain_OpenList_Pop(AyStar *aystar) {
|
||||
static OpenListNode *AyStarMain_OpenList_Pop(AyStar *aystar)
|
||||
{
|
||||
// Return the item the Queue returns.. the best next OpenList item.
|
||||
OpenListNode* res = (OpenListNode*)aystar->OpenListQueue.pop(&aystar->OpenListQueue);
|
||||
if (res != NULL)
|
||||
@@ -52,7 +56,8 @@ OpenListNode *AyStarMain_OpenList_Pop(AyStar *aystar) {
|
||||
|
||||
// Adds a node to the OpenList
|
||||
// It makes a copy of node, and puts the pointer of parent in the struct
|
||||
void AyStarMain_OpenList_Add(AyStar *aystar, PathNode *parent, AyStarNode *node, int f, int g, int userdata) {
|
||||
static void AyStarMain_OpenList_Add(AyStar *aystar, PathNode *parent, AyStarNode *node, int f, int g, int userdata)
|
||||
{
|
||||
// Add a new Node to the OpenList
|
||||
OpenListNode* new_node = malloc(sizeof(OpenListNode));
|
||||
new_node->g = g;
|
||||
@@ -101,7 +106,7 @@ int AyStarMain_CheckTile(AyStar *aystar, AyStarNode *current, OpenListNode *pare
|
||||
|
||||
// Check if this item is already in the OpenList
|
||||
if ((check = AyStarMain_OpenList_IsInList(aystar, current)) != NULL) {
|
||||
int i;
|
||||
uint i;
|
||||
// Yes, check if this g value is lower..
|
||||
if (new_g > check->g) return AYSTAR_DONE;
|
||||
aystar->OpenListQueue.del(&aystar->OpenListQueue, check, 0);
|
||||
@@ -215,7 +220,7 @@ void AyStarMain_Clear(AyStar *aystar) {
|
||||
int AyStarMain_Main(AyStar *aystar) {
|
||||
int r, i = 0;
|
||||
// Loop through the OpenList
|
||||
// Quit if result is no AYSTAR_STILL_BUSY or is more then loops_per_tick
|
||||
// Quit if result is no AYSTAR_STILL_BUSY or is more than loops_per_tick
|
||||
while ((r = aystar->loop(aystar)) == AYSTAR_STILL_BUSY && (aystar->loops_per_tick == 0 || ++i < aystar->loops_per_tick)) { }
|
||||
#ifdef AYSTAR_DEBUG
|
||||
if (r == AYSTAR_FOUND_END_NODE)
|
||||
@@ -246,7 +251,8 @@ int AyStarMain_Main(AyStar *aystar) {
|
||||
*/
|
||||
void AyStarMain_AddStartNode(AyStar *aystar, AyStarNode *start_node) {
|
||||
#ifdef AYSTAR_DEBUG
|
||||
printf("[AyStar] Starting A* Algorithm from node (%d, %d, %d)\n", GET_TILE_X(start_node->tile), GET_TILE_Y(start_node->tile), start_node->direction);
|
||||
printf("[AyStar] Starting A* Algorithm from node (%d, %d, %d)\n",
|
||||
TileX(start_node->tile), TileY(start_node->tile), start_node->direction);
|
||||
#endif
|
||||
AyStarMain_OpenList_Add(aystar, NULL, start_node, 0, 0, 0);
|
||||
}
|
||||
|
||||
@@ -77,10 +77,10 @@ static void BuildBridgeWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _build_bridge_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 199, 0, 13, STR_100D_SELECT_RAIL_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_MATRIX, 7, 0, 188, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK},
|
||||
{ WWT_SCROLLBAR, 7, 189, 199, 14, 101, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 199, 0, 13, STR_100D_SELECT_RAIL_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_MATRIX, RESIZE_NONE, 7, 0, 187, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK},
|
||||
{ WWT_SCROLLBAR, RESIZE_NONE, 7, 188, 199, 14, 101, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -94,10 +94,10 @@ static const WindowDesc _build_bridge_desc = {
|
||||
|
||||
|
||||
static const Widget _build_road_bridge_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 199, 0, 13, STR_1803_SELECT_ROAD_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_MATRIX, 7, 0, 188, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK},
|
||||
{ WWT_SCROLLBAR, 7, 189, 199, 14, 101, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 199, 0, 13, STR_1803_SELECT_ROAD_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_MATRIX, RESIZE_NONE, 7, 0, 187, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK},
|
||||
{ WWT_SCROLLBAR, RESIZE_NONE, 7, 188, 199, 14, 101, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -161,6 +161,7 @@ void ShowBuildBridgeWindow(uint start, uint end, byte bridge_type)
|
||||
w->vscroll.cap = 4;
|
||||
w->vscroll.count = (byte)j;
|
||||
} else {
|
||||
ShowErrorMessage(errmsg, STR_5015_CAN_T_BUILD_BRIDGE_HERE, GET_TILE_X(end) * 16, GET_TILE_Y(end) * 16);
|
||||
ShowErrorMessage(errmsg, STR_5015_CAN_T_BUILD_BRIDGE_HERE,
|
||||
TileX(end) * 16, TileY(end) * 16);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,141 @@
|
||||
0.3.6 (2005-01-24)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: resizable windows. All useful windows are already made resizable.
|
||||
- Feature: highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
|
||||
- Feature: endgame score on 1 jan 2051 where you are added to the highscore if sufficiently large points have been accumulated. Game is paused while
|
||||
- Feature: Visually enhanced autorail placing
|
||||
When using the autorail tool, the rail pieces which are going to be build are highlighted.
|
||||
If a piece is shown in red, this indicates that the slope/rail combination is impossible. It does not tell you if
|
||||
the rail line construction might not be possible because of other obstacles, e.g. houses or water.
|
||||
- Feature: Autoreplace Vehicles (accessible from the vehicle lists)
|
||||
This feature works much like autorenew, but it will get you a new engine type instead of a new one of the same type. Once
|
||||
ordered, it will automatically replace the engines while they visits a depot. The GUI for setting this up have been added on the
|
||||
vehicle overview windows (Bjarni)
|
||||
- Feature: A counter to tell how many engines you have of each type to the autoreplace vehicle windows (Bjarni)
|
||||
- Feature: A display for the total map population to the town display
|
||||
- Feature: [network] RCon (Remote Connection).
|
||||
A server can set: 'set rcon_pw <password>' to enable rcon
|
||||
A client can now do: 'rcon <password> "<command>"'
|
||||
!!Warning!!: do not give your rcon password to people you do not thrust!
|
||||
- Feature: hotkeys for dock and airport toolbar (see http://wiki.openttd.org/index.php/Hotkeys)
|
||||
- Feature: [Network] banning system (mostly tnx to guru3) A server can ban people via ClientList using 'ban', 'unban', 'banlist'.
|
||||
- Feature: [Network] server can now pause and unpause a game through the console. Use 'pause' and 'unpause'
|
||||
- Feature: [OS/2] OS/2 support is now finished (Fixes for networking, file selection, keyboard input, plus many other minor issues)
|
||||
- Feature: [SDL] Show revision number in window title
|
||||
- Feature: [Unix] Check which gcc version is present and only set available compiler flags
|
||||
- Feature: [Windows] CTRL+V (Paste) now works on all editboxes. This includes 'Add Server', chat, etc.
|
||||
- Feature: [Windows] dedicated server is now functioning correctly
|
||||
- Feature: Addded keyboard shortcuts for the order window
|
||||
- Feature: Aircraft refit options have been restricted to "sane" values.
|
||||
- Feature: allows setting the production values of the rawmaterial producing industries in the editor
|
||||
- Feature: console support for loading maps. Use 'load', 'list_files' and 'goto_dir' to navigate and load games.
|
||||
- Feature: Display server port in the multiplayer game info window
|
||||
- Feature: dynamite in landscaping toolbar (hotkey 'D')
|
||||
- Feature: Improved Network Lobby GUI with a green dot if company income is positive (else red dot) and lock icon if company is password protected
|
||||
- Feature: Make ottd compile on Zeta
|
||||
- Feature: MD5 hash check for TTD files (The original TTD files are now checked with a MD5 sum to determine which version of the grf files is used and to warn about possible file corruptions. Thanks to ledow for the original patch)
|
||||
- Feature: New companies receive a 5-year protection period against buying-up
|
||||
- Feature: norwegian townnames (Simen Graaten)
|
||||
- Feature: Order Checking is only execute for ONE vehicle in an order-share system
|
||||
- Feature: Passengers aircraft now ignore the amount of mail for "full load any" options
|
||||
- Feature: place multiple accepting industies nearby in the editor mode if the appropriate patches are set
|
||||
- Feature: population in label of the town (patch setting)
|
||||
- Feature: scrolling credits list (in alphabetical order)
|
||||
- Feature: Train window now shows the number of vehicles per row (mpetrov)
|
||||
- Feature: [ 1039061 ] Swiss town-names (vulvulune)
|
||||
- Feature: [ 1090950 ] Adding 16:10 resolutions for mainly laptops (doode)
|
||||
- Feature: [ 1098254 ] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
|
||||
- Fix: [ 1031451 ] Catchment area shows when buying sign
|
||||
- Fix: [ 1040119 ] Flood and wagons in depot
|
||||
- Fix: [ 1050990 ] Buying trains sometimes accounted for incorrectly.
|
||||
- Fix: [ 1084074 ] Delayed news messages
|
||||
- Fix: [ 1090495 ] Slopes under high bridges weren't flooded
|
||||
- Fix: [ 1092473 ] In scenario editor, when trees are placed randomly, they are no longer placed on farmland
|
||||
- Fix: [ 1092661 ] On create, the scrollbar of the server-list was not updated
|
||||
- Fix: [ 1092707 ] placing rocks in scenario editor. You can place rocks on trees and vice versa
|
||||
- Fix: [ 1093200 ] Drive side in new games. Setting the driver side is possible during the game until someone buys road vehicles. In networked games only the server can change it.
|
||||
- Fix: [ 1093466 ] no more glitches with many maps in the scenario list when creating server
|
||||
- Fix: [ 1093485 ] Dissappearing rocks in Scenario Editor
|
||||
- Fix: [ 1094092 ] Toolbars accessible via keyboard in spectator mode
|
||||
- Fix: [ 1095020 ] When all stations in an aircraft's order list are demolished, the plane eventually crashes (running out of fuel)
|
||||
- Fix: [ 1095143 ] Servers list now also saves the port
|
||||
- Fix: [ 1098553 ] Crash when all vehicles from a vehicles per station list had been removed
|
||||
- Fix: [ 1099101 ] starting year patch goes out of range. Clamped year between 1920-2090
|
||||
- Fix: [ 1099225 ] Bug Fix - Vehicle Lists not updated at Acqusition (thx tamlin and mpetrov)
|
||||
- Fix: [ 1099451 ] Game crashes after the click on Rename (see also Bug 10992). There was no check for non-selected engine
|
||||
- Fix: [ 1100736 ] wrong tooltip for place desert button
|
||||
- Fix: [ 1100767 ] fast forward in main menu
|
||||
- Fix: [ 1101179 ] Crash if generating land while industry window is open. This also happened for towns and the land information window
|
||||
- Fix: [ 1101906 ] Configure Patches window text overflow
|
||||
- Fix: [ 1101963 ] console in dedicated server
|
||||
- Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
|
||||
- Fix: [ 1102776 ], [ 1099535 ] Vehicle lists are now redrawn when a vehicle arrives in a depot. Station-specific vehicle lists are now redrawn daily as well (not only the master list)
|
||||
- Fix: [ 1103113 ] font size changing. Dedicated server did not have code filtering, 'tab' could result in bigger fonts
|
||||
- Fix: [ 1103187 ] Order Check messages are now validated before displayed
|
||||
- Fix: [ 1103301 ] Railroad tracks on slopes weren't flooded
|
||||
- Fix: [ 1104350 ] Crashed trains do not initiate the lost vehicle message anymore
|
||||
- Fix: [ 110452 ] On horizontal/vertical tracks you are also charged for building/removing signals on the parallel track on the same tile.
|
||||
- Fix: [ 1104969 ] Aircraft in hangar messages are now revalidated before display
|
||||
- Fix: [ 1105112 ] Destroyed train locks crossings
|
||||
- Fix: [ 1105281 ] upgrade rail fails when train under bridge
|
||||
- Fix: [ 1105959 ] Trains don't think they're on a slope any more while they drive around in a tunnel
|
||||
- Fix: [ 1105963 ] Buoys can now only be removed if no ship has it in their schedule. (This makes buoys more useable in multiplayer games again, as buoys can't be deleted by other players if they are used.)
|
||||
- Fix: [ 1106354 ] Graph's keys get confused
|
||||
- Fix: [ 1106930 ] placing signals with 2x1 drags is treated as placing a single signal
|
||||
- Fix: [ 1107350 ] console ignoring return character occasionally.
|
||||
- Fix: [ 1108008 ] Scenario creation bug; engines are of correct year when scenario is saved
|
||||
- Fix: [ 1092474 ] little red box in scenario editor
|
||||
- Fix: [ 1099197 ] scrolling through console sometimes crashed the whole game.
|
||||
- Fix: [ 1099209 ] Catchment area with drag&drop stations
|
||||
- Fix: [Network] 'kick 1' did crash dedicated servers
|
||||
- Fix: [Network] A server no longer crashes when a client sends an invalid DoCommand, but drops the client instead.
|
||||
- Fix: [Network] Added packet protection. No longer a client or server
|
||||
- Fix: [Network] Bug in bind system. Advertising failed on systems with more then 1 ip, and server_bind active to one of them.
|
||||
- Fix: [Network] Disabled 'money-cheat' (read: bug which could give people a lot of money)
|
||||
- Fix: [SDL] now the binary never links to SDL if DEDICATED is set.
|
||||
- Fix: [Windows] somehow mousewheel was disabled on windows using SDL; reenabled again
|
||||
- Fix: a modified client could try to replace a vehicle to an invalid engine ID and crash the server.
|
||||
- Fix: autoreplace vehicle lists are now redrawn when a new vehicle becomes available
|
||||
- Fix: Buy Vehicle GUI now shows HPs bigger than 32000 correctly
|
||||
- Fix: Console alias, load_game functionality and load fix
|
||||
- Fix: correct error message for when trying to build a railroad station over a bus/truck/etc-station.
|
||||
- Fix: Correct landscaping buttons in monorail and maglev toolbars
|
||||
- Fix: dedicated server also writes to log file if active
|
||||
- Fix: Desert-landscape does no longer crash
|
||||
- Fix: Expand town is a bit more agressive
|
||||
- Fix: finally zooming in/out always works.
|
||||
- Fix: fixed chat-bug (that from a certain moment, nobody could talk)
|
||||
- Fix: fixed weight for double-head trains and with that the acceleration (now maglev lvl4 can reach their top speed, and are faster than lvl3)
|
||||
- Fix: Full-Loading trains no longer get "lost" after a while (Hackykid)
|
||||
- Fix: Graphs were not updated correctly when one graph with a certain selection was already open and another graph window was opened
|
||||
- Fix: in multiplayer clientlist can only be opened once
|
||||
- Fix: Loan does not count against the company value
|
||||
- Fix: nasty bug where one could build one station OVER the other
|
||||
- Fix: No crash when creating a game with New English town names any more
|
||||
- Fix: now helicopters will use a hangar in schedule to be replaced in, even if they are only set to service there. Since helicopters are serviced at helipads, they will only go there if they needs to be replaced or renewed. They will also use a hangar in an airport in the schedule if needed. (Bjarni)
|
||||
- Fix: only a server can rename a town in a MP game
|
||||
- Fix: really old maps do load again (Darkvater / TrueLight)
|
||||
- Fix: Refit engine button is now disabled when cargo capacity equals zero
|
||||
- Fix: server issue where some company names were wrong
|
||||
- Fix: Ship Vehicle Lists are now redrawn correctly
|
||||
- Fix: signal stays red if a track is removed (Darkvater / Tron / TrueLight)
|
||||
- Fix: solve AI related order-problem
|
||||
- Fix: starting openttd with -g <invalid_name> now acts normal
|
||||
- Fix: The cost for an autorenew was not always send to the right player ;)
|
||||
- Fix: Autorenewing multiheaded train engines now costs the correct amount. Used to be twice the correct price
|
||||
- Fix: the scrollbar in the network gui (server list) now updates when scrolling (HackyKid)
|
||||
- Fix: Train crashes should no longer desync the game.
|
||||
- Fix: When deleting an order, the next pointer was not cleared, resulting in some unusual behavoir from time to time
|
||||
- Fix: You can now also delete automatically found servers by pressing "del"
|
||||
- Fix: You should no longer be able to delete bridges on any type of underground when there is a vehicle on it
|
||||
- Fix: your loan is now substracted from your company value
|
||||
- Add: A brand new set of icons.
|
||||
- Change: AutoRenew is now a client-side patch instead of a game-side patch
|
||||
- Change: Removed the 'close ALL windows' from the toolbar since shift+del does this.
|
||||
- Language: Updated all languages
|
||||
- Fix: Many more things....
|
||||
|
||||
|
||||
0.3.5 (2004-12-24)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [Network] New network, very stable, a lot of new features
|
||||
|
||||
@@ -30,7 +30,7 @@ static int TerraformAllowTileProcess(TerraformerState *ts, TileIndex tile)
|
||||
TileIndex *t;
|
||||
int count;
|
||||
|
||||
if ((GET_TILE_X(tile) == TILE_X_MAX) || (GET_TILE_Y(tile) == TILE_Y_MAX))
|
||||
if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY())
|
||||
return -1;
|
||||
|
||||
t = ts->tile_table;
|
||||
@@ -52,7 +52,7 @@ static int TerraformGetHeightOfTile(TerraformerState *ts, TileIndex tile)
|
||||
return mod->height;
|
||||
}
|
||||
|
||||
return _map_type_and_height[tile] & 0xF;
|
||||
return TileHeight(tile);
|
||||
}
|
||||
|
||||
static void TerraformAddDirtyTile(TerraformerState *ts, TileIndex tile)
|
||||
@@ -86,12 +86,12 @@ static int TerraformProc(TerraformerState *ts, uint tile, int mode)
|
||||
int r;
|
||||
int32 ret;
|
||||
|
||||
assert(tile < TILES_X * TILES_Y);
|
||||
assert(tile < MapSize());
|
||||
|
||||
if ((r=TerraformAllowTileProcess(ts, tile)) <= 0)
|
||||
return r;
|
||||
|
||||
if ((_map_type_and_height[tile] >> 4) == MP_RAILWAY) {
|
||||
if (IsTileType(tile, MP_RAILWAY)) {
|
||||
static const byte _railway_modes[4] = {8, 0x10, 4, 0x20};
|
||||
static const byte _railway_dangslopes[4] = {0xd, 0xe, 7, 0xb};
|
||||
static const byte _railway_dangslopes2[4] = {0x2, 0x1, 0x8, 0x4};
|
||||
@@ -135,7 +135,7 @@ static bool TerraformTileHeight(TerraformerState *ts, uint tile, int height)
|
||||
TerraformerHeightMod *mod;
|
||||
int count;
|
||||
|
||||
assert(tile < TILES_X * TILES_Y);
|
||||
assert(tile < MapSize());
|
||||
|
||||
if (height < 0) {
|
||||
_error_message = STR_1003_ALREADY_AT_SEA_LEVEL;
|
||||
@@ -186,12 +186,17 @@ static bool TerraformTileHeight(TerraformerState *ts, uint tile, int height)
|
||||
|
||||
{
|
||||
int direction = ts->direction, r;
|
||||
const TileIndexDiff *ttm;
|
||||
const TileIndexDiffC *ttm;
|
||||
|
||||
static const TileIndexDiff _terraform_tilepos[5] = {TILE_XY(1,0), TILE_XY(-2,0), TILE_XY(1,1), TILE_XY(0,-2), 0 };
|
||||
static const TileIndexDiffC _terraform_tilepos[] = {
|
||||
{ 1, 0},
|
||||
{-2, 0},
|
||||
{ 1, 1},
|
||||
{ 0, -2}
|
||||
};
|
||||
|
||||
for(ttm = _terraform_tilepos; *ttm != 0; ttm++) {
|
||||
tile += *ttm;
|
||||
for(ttm = _terraform_tilepos; ttm != endof(_terraform_tilepos); ttm++) {
|
||||
tile += ToTileIndexDiff(*ttm);
|
||||
|
||||
r = TerraformGetHeightOfTile(ts, tile);
|
||||
if (r != height && r-direction != height && r+direction != height) {
|
||||
@@ -234,25 +239,25 @@ int32 CmdTerraformLand(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
|
||||
if (p1 & 1) {
|
||||
if (!TerraformTileHeight(&ts, tile+TILE_XY(1,0),
|
||||
(_map_type_and_height[tile+TILE_XY(1,0)]&0xF) + direction))
|
||||
TileHeight(tile + TILE_XY(1, 0)) + direction))
|
||||
return CMD_ERROR;
|
||||
}
|
||||
|
||||
if (p1 & 2) {
|
||||
if (!TerraformTileHeight(&ts, tile+TILE_XY(1,1),
|
||||
(_map_type_and_height[tile+TILE_XY(1,1)]&0xF) + direction))
|
||||
TileHeight(tile + TILE_XY(1, 1)) + direction))
|
||||
return CMD_ERROR;
|
||||
}
|
||||
|
||||
if (p1 & 4) {
|
||||
if (!TerraformTileHeight(&ts, tile+TILE_XY(0,1),
|
||||
(_map_type_and_height[tile+TILE_XY(0,1)]&0xF) + direction))
|
||||
TileHeight(tile + TILE_XY(0, 1)) + direction))
|
||||
return CMD_ERROR;
|
||||
}
|
||||
|
||||
if (p1 & 8) {
|
||||
if (!TerraformTileHeight(&ts, tile+TILE_XY(0,0),
|
||||
(_map_type_and_height[tile+TILE_XY(0,0)]&0xF) + direction))
|
||||
TileHeight(tile + TILE_XY(0, 0)) + direction))
|
||||
return CMD_ERROR;
|
||||
}
|
||||
|
||||
@@ -298,9 +303,7 @@ int32 CmdTerraformLand(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
for(count = ts.modheight_count; count != 0; count--, mod++) {
|
||||
til = mod->tile;
|
||||
|
||||
// Change tile height
|
||||
_map_type_and_height[til] = (_map_type_and_height[til]&~0x0F)|mod->height;
|
||||
|
||||
SetTileHeight(til, mod->height);
|
||||
TerraformAddDirtyTileAround(&ts, til);
|
||||
}
|
||||
}
|
||||
@@ -330,14 +333,16 @@ int32 CmdLevelLand(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
|
||||
uint tile;
|
||||
int32 ret, cost, money;
|
||||
|
||||
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
|
||||
|
||||
// remember level height
|
||||
h = _map_type_and_height[p1]&0xF;
|
||||
h = TileHeight(p1);
|
||||
|
||||
ex >>= 4; ey >>= 4;
|
||||
|
||||
// make sure sx,sy are smaller than ex,ey
|
||||
sx = GET_TILE_X(p1);
|
||||
sy = GET_TILE_Y(p1);
|
||||
sx = TileX(p1);
|
||||
sy = TileY(p1);
|
||||
if (ex < sx) intswap(ex, sx);
|
||||
if (ey < sy) intswap(ey, sy);
|
||||
tile = TILE_XY(sx,sy);
|
||||
@@ -349,7 +354,7 @@ int32 CmdLevelLand(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
|
||||
cost = 0;
|
||||
|
||||
BEGIN_TILE_LOOP(tile2, size_x, size_y, tile)
|
||||
curh = _map_type_and_height[tile2]&0xF;
|
||||
curh = TileHeight(tile2);
|
||||
while (curh != h) {
|
||||
ret = DoCommandByTile(tile2, 8, (curh > h)?0:1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND);
|
||||
if (ret == CMD_ERROR) break;
|
||||
@@ -388,7 +393,7 @@ int32 CmdPurchaseLandArea(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
if (!EnsureNoVehicle(tile))
|
||||
return CMD_ERROR;
|
||||
|
||||
if (IS_TILETYPE(tile, MP_UNMOVABLE) &&
|
||||
if (IsTileType(tile, MP_UNMOVABLE) &&
|
||||
_map5[tile] == 3 &&
|
||||
_map_owner[tile] == _current_player)
|
||||
return_cmd_error(STR_5807_YOU_ALREADY_OWN_IT);
|
||||
@@ -408,7 +413,8 @@ int32 CmdPurchaseLandArea(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
}
|
||||
|
||||
|
||||
int32 ClearTile_Clear(uint tile, byte flags) {
|
||||
static int32 ClearTile_Clear(uint tile, byte flags)
|
||||
{
|
||||
static const int32 * _clear_price_table[] = {
|
||||
NULL,
|
||||
&_price.clear_1, &_price.clear_1,&_price.clear_1,
|
||||
@@ -518,9 +524,12 @@ static void DrawTile_Clear(TileInfo *ti)
|
||||
DrawClearLandFence(ti, _map3_hi[ti->tile] >> 2);
|
||||
}
|
||||
|
||||
uint GetSlopeZ_Clear(TileInfo *ti) { return GetPartialZ(ti->x&0xF, ti->y&0xF, ti->tileh) + ti->z; }
|
||||
static uint GetSlopeZ_Clear(TileInfo *ti)
|
||||
{
|
||||
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
|
||||
}
|
||||
|
||||
uint GetSlopeTileh_Clear(TileInfo *ti)
|
||||
static uint GetSlopeTileh_Clear(TileInfo *ti)
|
||||
{
|
||||
return ti->tileh;
|
||||
}
|
||||
@@ -542,16 +551,16 @@ void TileLoopClearHelper(uint tile)
|
||||
uint dirty = -1;
|
||||
|
||||
img_1 = 0;
|
||||
if (IS_TILETYPE(tile, MP_CLEAR)) {
|
||||
if (IsTileType(tile, MP_CLEAR)) {
|
||||
img_1 = img_by_map5[(_map5[tile] & 0x1C) >> 2];
|
||||
} else if (IS_TILETYPE(tile, MP_TREES) && (_map2[tile] & 0x30) == 0x20) {
|
||||
} else if (IsTileType(tile, MP_TREES) && (_map2[tile] & 0x30) == 0x20) {
|
||||
img_1 = 1;
|
||||
}
|
||||
|
||||
img_2 = 0;
|
||||
if (IS_TILETYPE(TILE_ADDXY(tile, 1, 0), MP_CLEAR)) {
|
||||
if (IsTileType(TILE_ADDXY(tile, 1, 0), MP_CLEAR)) {
|
||||
img_2 = img_by_map5[(_map5[TILE_ADDXY(tile, 1, 0)] & 0x1C) >> 2];
|
||||
} else if (IS_TILETYPE(TILE_ADDXY(tile, 1, 0), MP_TREES) && (_map2[TILE_ADDXY(tile, 1, 0)] & 0x30) == 0x20) {
|
||||
} else if (IsTileType(TILE_ADDXY(tile, 1, 0), MP_TREES) && (_map2[TILE_ADDXY(tile, 1, 0)] & 0x30) == 0x20) {
|
||||
img_2 = 1;
|
||||
}
|
||||
|
||||
@@ -568,9 +577,9 @@ void TileLoopClearHelper(uint tile)
|
||||
}
|
||||
|
||||
img_2 = 0;
|
||||
if (IS_TILETYPE(TILE_ADDXY(tile, 0, 1), MP_CLEAR)) {
|
||||
if (IsTileType(TILE_ADDXY(tile, 0, 1), MP_CLEAR)) {
|
||||
img_2 = img_by_map5[(_map5[TILE_ADDXY(tile, 0, 1)] & 0x1C) >> 2];
|
||||
} else if (IS_TILETYPE(TILE_ADDXY(tile, 0, 1), MP_TREES) && (_map2[TILE_ADDXY(tile, 0, 1)] & 0x30) == 0x20) {
|
||||
} else if (IsTileType(TILE_ADDXY(tile, 0, 1), MP_TREES) && (_map2[TILE_ADDXY(tile, 0, 1)] & 0x30) == 0x20) {
|
||||
img_2 = 1;
|
||||
}
|
||||
|
||||
@@ -586,7 +595,7 @@ void TileLoopClearHelper(uint tile)
|
||||
}
|
||||
}
|
||||
|
||||
if (dirty != -1)
|
||||
if (dirty != (uint) -1)
|
||||
MarkTileDirtyByTile(dirty);
|
||||
}
|
||||
|
||||
@@ -724,7 +733,7 @@ static void TileLoop_Clear(uint tile)
|
||||
MarkTileDirtyByTile(tile);
|
||||
}
|
||||
|
||||
void GenerateClearTile()
|
||||
void GenerateClearTile(void)
|
||||
{
|
||||
int i,j;
|
||||
uint tile,tile_new;
|
||||
@@ -734,7 +743,7 @@ void GenerateClearTile()
|
||||
i = (Random() & 0x3FF) | 0x400;
|
||||
do {
|
||||
tile = TILE_MASK(Random());
|
||||
if (IS_TILETYPE(tile, MP_CLEAR))
|
||||
if (IsTileType(tile, MP_CLEAR))
|
||||
_map5[tile] = (byte)((_map5[tile] & ~(3<<2)) | (1<<2));
|
||||
} while (--i);
|
||||
|
||||
@@ -743,14 +752,14 @@ void GenerateClearTile()
|
||||
do {
|
||||
r = Random();
|
||||
tile = TILE_MASK(r);
|
||||
if (IS_TILETYPE(tile, MP_CLEAR)) {
|
||||
if (IsTileType(tile, MP_CLEAR)) {
|
||||
j = ((r >> 16) & 0xF) + 5;
|
||||
for(;;) {
|
||||
_map5[tile] = (byte)((_map5[tile] & ~(3<<2)) | (2<<2));
|
||||
do {
|
||||
if (--j == 0) goto get_out;
|
||||
tile_new = tile + _tileoffs_by_dir[Random() & 3];
|
||||
} while (!IS_TILETYPE(tile_new, MP_CLEAR));
|
||||
tile_new = tile + TileOffsByDir(Random() & 3);
|
||||
} while (!IsTileType(tile_new, MP_CLEAR));
|
||||
tile = tile_new;
|
||||
}
|
||||
get_out:;
|
||||
@@ -796,7 +805,8 @@ static void ChangeTileOwner_Clear(uint tile, byte old_player, byte new_player)
|
||||
return;
|
||||
}
|
||||
|
||||
void InitializeClearLand() {
|
||||
void InitializeClearLand(void)
|
||||
{
|
||||
_opt.snow_line = _patches.snow_line_height * 8;
|
||||
}
|
||||
|
||||
|
||||
@@ -167,6 +167,8 @@ DEF_COMMAND(CmdStartScenario);
|
||||
|
||||
DEF_COMMAND(CmdBuildManySignals);
|
||||
|
||||
DEF_COMMAND(CmdReplaceVehicle);
|
||||
|
||||
/* The master command table */
|
||||
static CommandProc * const _command_proc_table[] = {
|
||||
CmdBuildRailroadTrack, /* 0 */
|
||||
@@ -307,11 +309,23 @@ static CommandProc * const _command_proc_table[] = {
|
||||
CmdDestroyCompanyHQ, /* 111 */
|
||||
CmdGiveMoney, /* 112 */
|
||||
CmdChangePatchSetting, /* 113 */
|
||||
CmdReplaceVehicle, /* 114 */
|
||||
};
|
||||
|
||||
/* This function range-checks a cmd, and checks if the cmd is not NULL */
|
||||
bool IsValidCommand(uint cmd)
|
||||
{
|
||||
cmd = cmd & 0xFF;
|
||||
|
||||
if (cmd >= lengthof(_command_proc_table) || _command_proc_table[cmd] == NULL)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int32 DoCommandByTile(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc)
|
||||
{
|
||||
return DoCommand(GET_TILE_X(tile)*16, GET_TILE_Y(tile)*16, p1, p2, flags, procc);
|
||||
return DoCommand(TileX(tile) * 16, TileY(tile) * 16, p1, p2, flags, procc);
|
||||
}
|
||||
|
||||
|
||||
@@ -353,8 +367,8 @@ int32 DoCommand(int x, int y, uint32 p1, uint32 p2, uint32 flags, uint procc)
|
||||
}
|
||||
}
|
||||
|
||||
// execute the command here.
|
||||
_yearly_expenses_type = 0;
|
||||
/* Execute the command here. All cost-relevant functions set the expenses type
|
||||
* themselves with "SET_EXPENSES_TYPE(...);" at the beginning of the function */
|
||||
res = proc(x, y, flags, p1, p2);
|
||||
if ((uint32)res >> 16 == 0x8000) {
|
||||
if (res & 0xFFFF) _error_message = res & 0xFFFF;
|
||||
@@ -371,7 +385,7 @@ error:
|
||||
return res;
|
||||
}
|
||||
|
||||
int32 GetAvailableMoneyForCommand()
|
||||
int32 GetAvailableMoneyForCommand(void)
|
||||
{
|
||||
uint pid = _current_player;
|
||||
if (pid >= MAX_PLAYERS) return 0x7FFFFFFF; // max int
|
||||
@@ -387,8 +401,8 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
uint32 flags;
|
||||
bool notest;
|
||||
|
||||
int x = GET_TILE_X(tile)*16;
|
||||
int y = GET_TILE_Y(tile)*16;
|
||||
int x = TileX(tile) * 16;
|
||||
int y = TileY(tile) * 16;
|
||||
|
||||
assert(_docommand_recursive == 0);
|
||||
|
||||
@@ -410,7 +424,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
assert((cmd & 0xFF) < lengthof(_command_proc_table));
|
||||
proc = _command_proc_table[cmd & 0xFF];
|
||||
|
||||
// Some commands have a different output in dryrun then the realrun
|
||||
// Some commands have a different output in dryrun than the realrun
|
||||
// e.g.: if you demolish a whole town, the dryrun would say okay.
|
||||
// but by really destroying, your rating drops and at a certain point
|
||||
// it will fail. so res and res2 are different
|
||||
@@ -428,7 +442,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
_docommand_recursive = 1;
|
||||
|
||||
// cost estimation only?
|
||||
if (_shift_pressed && _current_player == _local_player && !(cmd & CMD_NETWORK_COMMAND)) {
|
||||
if (_shift_pressed && _current_player == _local_player && !(cmd & (CMD_NETWORK_COMMAND | CMD_SHOW_NO_ERROR))) {
|
||||
// estimate the cost.
|
||||
res = proc(x, y, flags, p1, p2);
|
||||
if ((uint32)res >> 16 == 0x8000) {
|
||||
@@ -467,11 +481,12 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
// update last build coordinate of player.
|
||||
if ( tile != 0 && _current_player < MAX_PLAYERS) DEREF_PLAYER(_current_player)->last_build_coordinate = tile;
|
||||
|
||||
// actually try and execute the command.
|
||||
_yearly_expenses_type = 0;
|
||||
/* Actually try and execute the command. If no cost-type is given
|
||||
* use the construction one */
|
||||
_yearly_expenses_type = EXPENSES_CONSTRUCTION;
|
||||
res2 = proc(x,y, flags|DC_EXEC, p1, p2);
|
||||
|
||||
// If notest is on, it means the result of the test can be different then
|
||||
// If notest is on, it means the result of the test can be different than
|
||||
// the real command.. so ignore the test
|
||||
if (!notest && !((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) {
|
||||
assert(res == res2); // sanity check
|
||||
|
||||
@@ -148,6 +148,8 @@ enum {
|
||||
CMD_DESTROY_COMPANY_HQ = 111,
|
||||
CMD_GIVE_MONEY = 112,
|
||||
CMD_CHANGE_PATCH_SETTING = 113,
|
||||
|
||||
CMD_REPLACE_VEHICLE = 114,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -170,6 +172,7 @@ enum {
|
||||
CMD_NO_WATER = 0x400,
|
||||
CMD_NETWORK_COMMAND = 0x800, // execute the command without sending it on the network
|
||||
CMD_NO_TEST_IF_IN_NETWORK = 0x1000, // When enabled, the command will bypass the no-DC_EXEC round if in network
|
||||
CMD_SHOW_NO_ERROR = 0x2000,
|
||||
};
|
||||
|
||||
//#define return_cmd_error(errcode) do { _error_message=(errcode); return CMD_ERROR; } while(0)
|
||||
@@ -179,6 +182,7 @@ enum {
|
||||
int32 DoCommand(int x, int y, uint32 p1, uint32 p2, uint32 flags, uint procc);
|
||||
int32 DoCommandByTile(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc);
|
||||
|
||||
int32 GetAvailableMoneyForCommand();
|
||||
bool IsValidCommand(uint cmd);
|
||||
int32 GetAvailableMoneyForCommand(void);
|
||||
|
||||
#endif /* COMMAND_H */
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
#include <string.h>
|
||||
#include "console.h"
|
||||
#include "network.h"
|
||||
#include "network_data.h"
|
||||
#include "network_server.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
@@ -94,9 +96,6 @@ static void IConsoleClearCommand(void)
|
||||
|
||||
static void IConsoleWndProc(Window* w, WindowEvent* e)
|
||||
{
|
||||
// only do window events with the console
|
||||
w = FindWindowById(WC_CONSOLE, 0);
|
||||
|
||||
switch(e->event) {
|
||||
case WE_PAINT:
|
||||
{
|
||||
@@ -104,7 +103,7 @@ static void IConsoleWndProc(Window* w, WindowEvent* e)
|
||||
int max = (w->height / ICON_LINE_HEIGHT) - 1;
|
||||
int delta = 0;
|
||||
GfxFillRect(w->left, w->top, w->width, w->height - 1, 0);
|
||||
while ((i > _iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) {
|
||||
while ((i > 0) && (i > _iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) {
|
||||
DoDrawString(_iconsole_buffer[i], 5,
|
||||
w->height - (_iconsole_scroll + 2 - i) * ICON_LINE_HEIGHT, _iconsole_cbuffer[i]);
|
||||
i--;
|
||||
@@ -193,9 +192,8 @@ static void IConsoleWndProc(Window* w, WindowEvent* e)
|
||||
IConsolePrintF(_iconsole_color_commands, "] %s", _iconsole_cmdline);
|
||||
_iconsole_cmdbufferpos = 19;
|
||||
IConsoleCmdBufferAdd(_iconsole_cmdline);
|
||||
if (strlen(_iconsole_cmdline) != 0) // only execute if there is something typed obviously
|
||||
IConsoleCmdExec(_iconsole_cmdline);
|
||||
|
||||
IConsoleCmdExec(_iconsole_cmdline);
|
||||
IConsoleClearCommand();
|
||||
break;
|
||||
case WKC_CTRL | WKC_RETURN:
|
||||
@@ -272,15 +270,39 @@ void IConsoleClear(void)
|
||||
free(_iconsole_buffer[i]);
|
||||
}
|
||||
|
||||
static void IConsoleWriteToLogFile(const char* string)
|
||||
{
|
||||
if (_iconsole_output_file != NULL) {
|
||||
// if there is an console output file ... also print it there
|
||||
fwrite(string, strlen(string), 1, _iconsole_output_file);
|
||||
fwrite("\n", 1, 1, _iconsole_output_file);
|
||||
}
|
||||
}
|
||||
|
||||
bool CloseConsoleLogIfActive(void)
|
||||
{
|
||||
if (_iconsole_output_file != NULL) {
|
||||
IConsolePrintF(_iconsole_color_default, "file output complete");
|
||||
fclose(_iconsole_output_file);
|
||||
_iconsole_output_file = NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void IConsoleFree(void)
|
||||
{
|
||||
_iconsole_inited = false;
|
||||
IConsoleClear();
|
||||
if (_iconsole_output_file != NULL) fclose(_iconsole_output_file);
|
||||
CloseConsoleLogIfActive();
|
||||
}
|
||||
|
||||
void IConsoleResize(void)
|
||||
{
|
||||
|
||||
_iconsole_win = FindWindowById(WC_CONSOLE, 0);
|
||||
|
||||
switch (_iconsole_mode) {
|
||||
case ICONSOLE_OPENED:
|
||||
_iconsole_win->height = _screen.height / 3;
|
||||
@@ -293,6 +315,8 @@ void IConsoleResize(void)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
MarkWholeScreenDirty();
|
||||
}
|
||||
|
||||
void IConsoleSwitch(void)
|
||||
@@ -315,6 +339,8 @@ void IConsoleSwitch(void)
|
||||
_iconsole_mode = ICONSOLE_CLOSED;
|
||||
break;
|
||||
}
|
||||
|
||||
MarkWholeScreenDirty();
|
||||
}
|
||||
|
||||
void IConsoleClose(void)
|
||||
@@ -368,8 +394,15 @@ void IConsolePrint(uint16 color_code, const char* string)
|
||||
char* i;
|
||||
int j;
|
||||
|
||||
if (_redirect_console_to_client != 0) {
|
||||
/* Redirect the string to the client */
|
||||
SEND_COMMAND(PACKET_SERVER_RCON)(NetworkFindClientStateFromIndex(_redirect_console_to_client), color_code, string);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_network_dedicated) {
|
||||
printf("%s\n", string);
|
||||
IConsoleWriteToLogFile(string);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -391,11 +424,7 @@ void IConsolePrint(uint16 color_code, const char* string)
|
||||
}
|
||||
free(_ex);
|
||||
|
||||
if (_iconsole_output_file != NULL) {
|
||||
// if there is an console output file ... also print it there
|
||||
fwrite(string, strlen(string), 1, _iconsole_output_file);
|
||||
fwrite("\n", 1, 1, _iconsole_output_file);
|
||||
}
|
||||
IConsoleWriteToLogFile(string);
|
||||
|
||||
if (_iconsole_win != NULL) SetWindowDirty(_iconsole_win);
|
||||
}
|
||||
@@ -562,7 +591,8 @@ _iconsole_alias* IConsoleAliasGet(const char* name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void IConsoleAliasExec(const char* cmdline, char* tokens[20], byte tokentypes[20]) {
|
||||
static void IConsoleAliasExec(const char* cmdline, char* tokens[20], byte tokentypes[20])
|
||||
{
|
||||
char* lines[ICON_MAX_ALIAS_LINES];
|
||||
char* linestream;
|
||||
char* linestream_s;
|
||||
@@ -625,9 +655,10 @@ void IConsoleAliasExec(const char* cmdline, char* tokens[20], byte tokentypes[20
|
||||
x += l2+1;
|
||||
t++;
|
||||
}
|
||||
linestream--;
|
||||
*linestream = '"';
|
||||
linestream++;
|
||||
x += 2;
|
||||
x += 1;
|
||||
} else {
|
||||
// one specific parameter: %A = [param 1] %B = [param 2] ...
|
||||
int l2;
|
||||
@@ -908,7 +939,6 @@ void IConsoleVarDump(const _iconsole_var* var, const char* dump_desc)
|
||||
IConsolePrintF(_iconsole_color_default, "%s = %s",
|
||||
dump_desc, *var->data.bool_ ? "true" : "false");
|
||||
break;
|
||||
break;
|
||||
case ICONSOLE_VAR_BYTE:
|
||||
case ICONSOLE_VAR_UINT8:
|
||||
IConsolePrintF(_iconsole_color_default, "%s = %u",
|
||||
@@ -1057,9 +1087,12 @@ void IConsoleCmdExec(const char* cmdstr)
|
||||
bool valid_token;
|
||||
bool skip_lt_change;
|
||||
|
||||
int c;
|
||||
int i;
|
||||
int l;
|
||||
uint c;
|
||||
uint i;
|
||||
uint l;
|
||||
|
||||
if (strlen(cmdstr) == 0) // only execute if there is something typed obviously
|
||||
return;
|
||||
|
||||
if (_stdlib_con_developer)
|
||||
IConsolePrintF(_iconsole_color_debug, "CONDEBUG: execution_cmdline: %s", cmdstr);
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "network_udp.h"
|
||||
#include "command.h"
|
||||
#include "settings.h"
|
||||
#include "hal.h" /* for file list */
|
||||
|
||||
|
||||
// ** scriptfile handling ** //
|
||||
@@ -138,12 +139,280 @@ DEF_CONSOLE_CMD(ConScrollToTile)
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern bool SafeSaveOrLoad(const char *filename, int mode, int newgm);
|
||||
extern void BuildFileList(void);
|
||||
extern void SetFiosType(const byte fiostype);
|
||||
|
||||
/* Load a file-number from current dir */
|
||||
static void LoadMap(uint no)
|
||||
{
|
||||
/* Build file list */
|
||||
BuildFileList();
|
||||
|
||||
/* Check if in range */
|
||||
if (no != 0 && no <= (uint)_fios_num) {
|
||||
const FiosItem *item = &_fios_list[no - 1];
|
||||
|
||||
if (item->type == FIOS_TYPE_FILE) {
|
||||
/* Load the file */
|
||||
_switch_mode = SM_LOAD;
|
||||
SetFiosType(item->type);
|
||||
strcpy(_file_to_saveload.name, FiosBrowseTo(item));
|
||||
|
||||
IConsolePrint(_iconsole_color_default, "Loading map...");
|
||||
} else
|
||||
IConsolePrint(_iconsole_color_error, "That is not a map.");
|
||||
|
||||
} else /* Show usages */
|
||||
IConsolePrint(_iconsole_color_error, "Unknown map. Use 'list_files' and 'goto_dir' to find the numbers of the savegame.");
|
||||
|
||||
/* Free the file-list */
|
||||
FiosFreeSavegameList();
|
||||
}
|
||||
|
||||
/* Load a file from a map */
|
||||
DEF_CONSOLE_CMD(ConLoad)
|
||||
{
|
||||
/* We need 1 argument */
|
||||
if (argc == 2) {
|
||||
/* Load the map */
|
||||
LoadMap(atoi(argv[1]));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Give usage */
|
||||
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: load <file-no>");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* List all the files in the current dir via console */
|
||||
DEF_CONSOLE_CMD(ConListFiles)
|
||||
{
|
||||
const FiosItem *item;
|
||||
int pos = 0;
|
||||
|
||||
/* Build the file-list */
|
||||
BuildFileList();
|
||||
|
||||
/* As long as we have files */
|
||||
while (pos < _fios_num) {
|
||||
item = _fios_list + pos;
|
||||
pos++;
|
||||
/* Show them */
|
||||
IConsolePrintF(_iconsole_color_default, "%d) %s", pos, item->title[0] ? item->title : item->name);
|
||||
}
|
||||
|
||||
/* Destroy the file list */
|
||||
FiosFreeSavegameList();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Get an Specific file */
|
||||
DEF_CONSOLE_CMD(ConScanFiles)
|
||||
{
|
||||
const FiosItem *item;
|
||||
int pos = 0;
|
||||
_iconsole_var* result;
|
||||
|
||||
|
||||
result = IConsoleVarAlloc(ICONSOLE_VAR_STRING);
|
||||
|
||||
if (argc <= 1) {
|
||||
IConsoleVarSetString(result, "0");
|
||||
return result; // return an zero
|
||||
}
|
||||
|
||||
/* Build the file-list */
|
||||
BuildFileList();
|
||||
|
||||
/* As long as we have files */
|
||||
while (pos < _fios_num) {
|
||||
item = _fios_list + pos;
|
||||
pos++;
|
||||
if (strcmp(argv[1], "..") == 0) {
|
||||
if (item->type == FIOS_TYPE_PARENT) {
|
||||
// huh we are searching for the parent directory
|
||||
char buffer[10];
|
||||
sprintf(buffer, "%d", pos);
|
||||
IConsoleVarSetString(result, buffer);
|
||||
return result;
|
||||
}
|
||||
} else
|
||||
// file records ?
|
||||
if (item->type == FIOS_TYPE_FILE) {
|
||||
if (strcmp(argv[1], item->name) == 0) {
|
||||
char buffer[10];
|
||||
sprintf(buffer, "%d", pos);
|
||||
IConsoleVarSetString(result, buffer);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Destroy the file list */
|
||||
FiosFreeSavegameList();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Change the dir via console */
|
||||
DEF_CONSOLE_CMD(ConGotoDir)
|
||||
{
|
||||
char *file;
|
||||
int no;
|
||||
|
||||
/* We need 1 argument */
|
||||
if (argc != 2) {
|
||||
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: goto_dir <dir-no>");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
no = atoi(argv[1]);
|
||||
|
||||
/* Make the file list */
|
||||
BuildFileList();
|
||||
|
||||
/* Check if we are in range */
|
||||
if (no != 0 && no <= _fios_num) {
|
||||
const FiosItem *item = &_fios_list[no - 1];
|
||||
/* Only DIR and PARENT we do allow here */
|
||||
if (item->type == FIOS_TYPE_DIR || item->type == FIOS_TYPE_PARENT) {
|
||||
/* Goto the map */
|
||||
file = FiosBrowseTo(item);
|
||||
FiosFreeSavegameList();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Report error */
|
||||
IConsolePrint(_iconsole_color_default, "That number is no directory.");
|
||||
FiosFreeSavegameList();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
// ********************************* //
|
||||
// * Network Core Console Commands * //
|
||||
// ********************************* //
|
||||
#ifdef ENABLE_NETWORK
|
||||
|
||||
DEF_CONSOLE_CMD(ConBan)
|
||||
{
|
||||
NetworkClientInfo *ci;
|
||||
|
||||
if (argc == 2) {
|
||||
uint32 index = atoi(argv[1]);
|
||||
if (index == NETWORK_SERVER_INDEX) {
|
||||
IConsolePrint(_iconsole_color_default, "Silly boy, you can not ban yourself!");
|
||||
return NULL;
|
||||
}
|
||||
if (index == 0) {
|
||||
IConsoleError("Invalid Client-ID");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ci = NetworkFindClientInfoFromIndex(index);
|
||||
|
||||
if (ci != NULL) {
|
||||
uint i;
|
||||
/* Add user to ban-list */
|
||||
for (i = 0; i < lengthof(_network_ban_list); i++) {
|
||||
if (_network_ban_list[i] == NULL || _network_ban_list[i][0] == '\0') {
|
||||
_network_ban_list[i] = strdup(inet_ntoa(*(struct in_addr *)&ci->client_ip));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SEND_COMMAND(PACKET_SERVER_ERROR)(NetworkFindClientStateFromIndex(index), NETWORK_ERROR_KICKED);
|
||||
return NULL;
|
||||
} else {
|
||||
IConsoleError("Client-ID not found");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: ban <client-id>. For client-ids, see 'clients'.");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConUnBan)
|
||||
{
|
||||
if (argc == 2) {
|
||||
uint i;
|
||||
for (i = 0; i < lengthof(_network_ban_list); i++) {
|
||||
if (_network_ban_list[i] == NULL || _network_ban_list[i][0] == '\0')
|
||||
continue;
|
||||
|
||||
if (strncmp(_network_ban_list[i], argv[1], strlen(_network_ban_list[i])) == 0) {
|
||||
_network_ban_list[i][0] = '\0';
|
||||
IConsolePrint(_iconsole_color_default, "IP unbanned.");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
IConsolePrint(_iconsole_color_default, "IP not in ban-list.");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: unban <ip>.");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConBanList)
|
||||
{
|
||||
uint i;
|
||||
|
||||
IConsolePrint(_iconsole_color_default, "Banlist: ");
|
||||
|
||||
for (i = 0; i < lengthof(_network_ban_list); i++) {
|
||||
if (_network_ban_list[i] == NULL || _network_ban_list[i][0] == '\0')
|
||||
continue;
|
||||
|
||||
IConsolePrintF(_iconsole_color_default, " %d) %s", i + 1, _network_ban_list[i]);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConPauseGame)
|
||||
{
|
||||
if (_pause == 0) {
|
||||
DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
|
||||
IConsolePrint(_iconsole_color_default, "Game paused.");
|
||||
} else
|
||||
IConsolePrint(_iconsole_color_default, "Game is already paused.");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConUnPauseGame)
|
||||
{
|
||||
if (_pause != 0) {
|
||||
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
|
||||
IConsolePrint(_iconsole_color_default, "Game unpaused.");
|
||||
} else
|
||||
IConsolePrint(_iconsole_color_default, "Game is already unpaused.");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConRcon)
|
||||
{
|
||||
if (argc < 3) {
|
||||
IConsolePrint(_iconsole_color_default, "Usage: rcon <password> <command>");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SEND_COMMAND(PACKET_CLIENT_RCON)(argv[1], argv[2]);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConStatus)
|
||||
{
|
||||
const char *status;
|
||||
@@ -190,7 +459,7 @@ DEF_CONSOLE_CMD(ConKick)
|
||||
|
||||
if (argc == 2) {
|
||||
uint32 index = atoi(argv[1]);
|
||||
if (index == NETWORK_SERVER_INDEX && !_network_dedicated) {
|
||||
if (index == NETWORK_SERVER_INDEX) {
|
||||
IConsolePrint(_iconsole_color_default, "Silly boy, you can not kick yourself!");
|
||||
return NULL;
|
||||
}
|
||||
@@ -222,7 +491,7 @@ DEF_CONSOLE_CMD(ConResetCompany)
|
||||
NetworkClientInfo *ci;
|
||||
|
||||
if (argc == 2) {
|
||||
uint32 index = atoi(argv[1]);
|
||||
byte index = atoi(argv[1]);
|
||||
|
||||
/* Check valid range */
|
||||
if (index < 1 || index > MAX_PLAYERS) {
|
||||
@@ -360,20 +629,18 @@ DEF_CONSOLE_CMD(ConReturn)
|
||||
/* **************************** */
|
||||
/* default console commands */
|
||||
/* **************************** */
|
||||
extern bool CloseConsoleLogIfActive(void);
|
||||
|
||||
DEF_CONSOLE_CMD(ConScript)
|
||||
{
|
||||
extern FILE* _iconsole_output_file;
|
||||
if (_iconsole_output_file != NULL) {
|
||||
IConsolePrintF(_iconsole_color_default, "file output complete");
|
||||
fclose(_iconsole_output_file);
|
||||
} else {
|
||||
if (!CloseConsoleLogIfActive()) {
|
||||
if (argc < 2) return NULL;
|
||||
IConsolePrintF(_iconsole_color_default, "file output started to: %s",
|
||||
argv[1]);
|
||||
IConsolePrintF(_iconsole_color_default, "file output started to: %s", argv[1]);
|
||||
_iconsole_output_file = fopen(argv[1], "ab");
|
||||
if (_iconsole_output_file == NULL) IConsoleError("could not open file");
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -657,13 +924,14 @@ DEF_CONSOLE_CMD(ConSet) {
|
||||
if (argc == 3) {
|
||||
// Change server password
|
||||
if (strncmp(argv[2], "*", NETWORK_PASSWORD_LENGTH) == 0) {
|
||||
_network_game_info.server_password[0] = '\0';
|
||||
_network_server_password[0] = '\0';
|
||||
_network_game_info.use_password = 0;
|
||||
} else {
|
||||
ttd_strlcpy(_network_game_info.server_password, argv[2], sizeof(_network_game_info.server_password));
|
||||
ttd_strlcpy(_network_server_password, argv[2], sizeof(_network_server_password));
|
||||
_network_game_info.use_password = 1;
|
||||
}
|
||||
IConsolePrintF(_iconsole_color_warning, "Game-password changed to '%s'", _network_game_info.server_password);
|
||||
IConsolePrintF(_iconsole_color_warning, "Game-password changed to '%s'", _network_server_password);
|
||||
ttd_strlcpy(_network_game_info.server_password, _network_server_password, sizeof(_network_game_info.server_password));
|
||||
} else {
|
||||
IConsolePrintF(_iconsole_color_default, "Current game-password is set to '%s'", _network_game_info.server_password);
|
||||
IConsolePrint(_iconsole_color_warning, "Usage: set server_pw \"<password>\". Use * as <password> to set no password.");
|
||||
@@ -671,6 +939,28 @@ DEF_CONSOLE_CMD(ConSet) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// setting the rcon password
|
||||
if ((strcmp(argv[1], "rcon_pw") == 0) || (strcmp(argv[1], "rcon_password") == 0)) {
|
||||
if (!_network_server) {
|
||||
IConsolePrintF(_iconsole_color_error, "You are not the server");
|
||||
return NULL;
|
||||
}
|
||||
if (argc == 3) {
|
||||
// Change server password
|
||||
if (strncmp(argv[2], "*", NETWORK_PASSWORD_LENGTH) == 0) {
|
||||
_network_rcon_password[0] = '\0';
|
||||
} else {
|
||||
ttd_strlcpy(_network_rcon_password, argv[2], sizeof(_network_rcon_password));
|
||||
}
|
||||
IConsolePrintF(_iconsole_color_warning, "Rcon-password changed to '%s'", _network_rcon_password);
|
||||
ttd_strlcpy(_network_game_info.rcon_password, _network_rcon_password, sizeof(_network_game_info.rcon_password));
|
||||
} else {
|
||||
IConsolePrintF(_iconsole_color_default, "Current rcon-password is set to '%s'", _network_game_info.rcon_password);
|
||||
IConsolePrint(_iconsole_color_warning, "Usage: set rcon_pw \"<password>\". Use * as <password> to disable rcon.");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// setting the company password
|
||||
if ((strcmp(argv[1],"company_pw") == 0) || (strcmp(argv[1],"company_password") == 0)) {
|
||||
if (!_networking) {
|
||||
@@ -880,6 +1170,7 @@ DEF_CONSOLE_CMD(ConSet) {
|
||||
IConsolePrint(_iconsole_color_error, " - autoclean_unprotected <months>");
|
||||
IConsolePrint(_iconsole_color_error, " - company_pw \"<password>\"");
|
||||
IConsolePrint(_iconsole_color_error, " - name \"<playername>\"");
|
||||
IConsolePrint(_iconsole_color_error, " - rcon_pw \"<password>\"");
|
||||
IConsolePrint(_iconsole_color_error, " - server_name \"<name>\"");
|
||||
IConsolePrint(_iconsole_color_error, " - server_advertise on/off");
|
||||
IConsolePrint(_iconsole_color_error, " - server_bind_ip <ip>");
|
||||
@@ -898,21 +1189,14 @@ DEF_CONSOLE_CMD(ConSet) {
|
||||
/* debug commands and variables */
|
||||
/* ****************************************** */
|
||||
|
||||
void IConsoleDebugLibRegister()
|
||||
static void IConsoleDebugLibRegister(void)
|
||||
{
|
||||
// debugging variables and functions
|
||||
extern bool _stdlib_con_developer; /* XXX extern in .c */
|
||||
|
||||
IConsoleVarRegister("con_developer", &_stdlib_con_developer, ICONSOLE_VAR_BOOLEAN);
|
||||
IConsoleVarMemRegister("temp_string", ICONSOLE_VAR_STRING);
|
||||
IConsoleVarMemRegister("temp_string2", ICONSOLE_VAR_STRING);
|
||||
IConsoleVarMemRegister("temp_bool", ICONSOLE_VAR_BOOLEAN);
|
||||
IConsoleVarMemRegister("temp_int16", ICONSOLE_VAR_INT16);
|
||||
IConsoleVarMemRegister("temp_int32", ICONSOLE_VAR_INT32);
|
||||
IConsoleVarMemRegister("temp_pointer", ICONSOLE_VAR_POINTER);
|
||||
IConsoleVarMemRegister("temp_uint16", ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarMemRegister("temp_uint16_2", ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarMemRegister("temp_uint32", ICONSOLE_VAR_UINT32);
|
||||
IConsoleCmdRegister("resettile", ConResetTile);
|
||||
IConsoleAliasRegister("dbg_echo","echo %A; echo %B");
|
||||
IConsoleAliasRegister("dbg_echo2","echo %+");
|
||||
@@ -953,12 +1237,27 @@ void IConsoleStdLibRegister(void)
|
||||
IConsoleCmdRegister("scrollto", ConScrollToTile);
|
||||
IConsoleCmdRegister("set", ConSet);
|
||||
IConsoleCmdRegister("alias", ConAlias);
|
||||
IConsoleAliasRegister("new_game", "newgame");
|
||||
IConsoleAliasRegister("newmap", "newgame");
|
||||
IConsoleAliasRegister("new_map", "newgame");
|
||||
IConsoleCmdRegister("load", ConLoad);
|
||||
IConsoleCmdRegister("list_files", ConListFiles);
|
||||
IConsoleCmdRegister("scan_files", ConScanFiles);
|
||||
IConsoleCmdRegister("goto_dir", ConGotoDir);
|
||||
IConsoleAliasRegister("new_game", "newgame");
|
||||
IConsoleAliasRegister("newmap", "newgame");
|
||||
IConsoleAliasRegister("new_map", "newgame");
|
||||
IConsoleAliasRegister("load_game", "temp_string << scan_files %!;load temp_string");
|
||||
|
||||
IConsoleVarRegister("developer", &_stdlib_developer, ICONSOLE_VAR_BYTE);
|
||||
|
||||
// temporary data containers for alias scripting
|
||||
IConsoleVarMemRegister("temp_string", ICONSOLE_VAR_STRING);
|
||||
IConsoleVarMemRegister("temp_bool", ICONSOLE_VAR_BOOLEAN);
|
||||
IConsoleVarMemRegister("temp_int16", ICONSOLE_VAR_INT16);
|
||||
IConsoleVarMemRegister("temp_int32", ICONSOLE_VAR_INT32);
|
||||
IConsoleVarMemRegister("temp_pointer", ICONSOLE_VAR_POINTER);
|
||||
IConsoleVarMemRegister("temp_uint16", ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarMemRegister("temp_uint32", ICONSOLE_VAR_UINT32);
|
||||
|
||||
|
||||
// networking variables and functions
|
||||
#ifdef ENABLE_NETWORK
|
||||
IConsoleCmdRegister("say", ConSay);
|
||||
@@ -978,6 +1277,20 @@ void IConsoleStdLibRegister(void)
|
||||
IConsoleCmdHook("status", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
|
||||
IConsoleCmdHook("resetengines", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetwork);
|
||||
|
||||
IConsoleCmdRegister("rcon", ConRcon);
|
||||
IConsoleCmdHook("rcon", ICONSOLE_HOOK_ACCESS, ConCmdHookNeedNetwork);
|
||||
|
||||
IConsoleCmdRegister("ban", ConBan);
|
||||
IConsoleCmdHook("ban", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
|
||||
IConsoleCmdRegister("unban", ConUnBan);
|
||||
IConsoleCmdHook("unban", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
|
||||
IConsoleCmdRegister("banlist", ConBanList);
|
||||
IConsoleCmdHook("banlist", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
|
||||
IConsoleCmdRegister("pause", ConPauseGame);
|
||||
IConsoleCmdHook("pause", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
|
||||
IConsoleCmdRegister("unpause", ConUnPauseGame);
|
||||
IConsoleCmdHook("unpause", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
|
||||
|
||||
IConsoleAliasRegister("clean_company", "reset_company %A");
|
||||
|
||||
IConsoleVarRegister("net_frame_freq", &_network_frame_freq, ICONSOLE_VAR_UINT8);
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
# include <unistd.h>
|
||||
# include <conio.h>
|
||||
# define STDIN 0 /* file descriptor for standard input */
|
||||
|
||||
extern void OS2_SwitchToConsoleMode();
|
||||
#endif
|
||||
|
||||
#ifdef UNIX
|
||||
@@ -30,7 +32,7 @@
|
||||
# define STDIN 0 /* file descriptor for standard input */
|
||||
#endif
|
||||
#ifdef __MORPHOS__
|
||||
/* voids the fork, option will be disabled for morphos build anyway, because MorphOS
|
||||
/* voids the fork, option will be disabled for morphos build anyway, because MorphOS
|
||||
* doesn't support forking (could only implemented with lots of code changes here).
|
||||
*/
|
||||
int morphos_dummy_fork() { return -1; }
|
||||
@@ -86,6 +88,45 @@ static void DedicatedSignalHandler(int sig)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
#include <time.h>
|
||||
HANDLE hEvent;
|
||||
static HANDLE hThread; // Thread to close
|
||||
static char _win_console_thread_buffer[200];
|
||||
|
||||
/* Windows Console thread. Just loop and signal when input has been received */
|
||||
void WINAPI CheckForConsoleInput(void)
|
||||
{
|
||||
while (true) {
|
||||
fgets(_win_console_thread_buffer, lengthof(_win_console_thread_buffer), stdin);
|
||||
SetEvent(hEvent); // signal input waiting that the line is ready
|
||||
}
|
||||
}
|
||||
|
||||
void CreateWindowsConsoleThread(void)
|
||||
{
|
||||
static char tbuffer[9];
|
||||
/* Create event to signal when console input is ready */
|
||||
hEvent = CreateEvent(NULL, false, false, _strtime(tbuffer));
|
||||
if (hEvent == NULL)
|
||||
error("Cannot create console event!");
|
||||
|
||||
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CheckForConsoleInput, 0, 0, NULL);
|
||||
if (hThread == NULL)
|
||||
error("Cannot create console thread!");
|
||||
|
||||
DEBUG(misc, 0) ("Windows console thread started...");
|
||||
}
|
||||
|
||||
void CloseWindowsConsoleThread(void)
|
||||
{
|
||||
CloseHandle(hThread);
|
||||
CloseHandle(hEvent);
|
||||
DEBUG(misc, 0) ("Windows console thread shut down...");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static const char *DedicatedVideoStart(char **parm) {
|
||||
_screen.width = _screen.pitch = _cur_resolution[0];
|
||||
_screen.height = _cur_resolution[1];
|
||||
@@ -97,19 +138,32 @@ static const char *DedicatedVideoStart(char **parm) {
|
||||
#ifdef WIN32
|
||||
// For win32 we need to allocate an console (debug mode does the same)
|
||||
CreateConsole();
|
||||
CreateWindowsConsoleThread();
|
||||
SetConsoleTitle("OpenTTD Dedicated Server");
|
||||
#endif
|
||||
|
||||
#ifdef __OS2__
|
||||
// For OS/2 we also need to switch to console mode instead of PM mode
|
||||
OS2_SwitchToConsoleMode();
|
||||
#endif
|
||||
|
||||
DEBUG(misc,0)("Loading dedicated server...");
|
||||
return NULL;
|
||||
}
|
||||
static void DedicatedVideoStop() { free(_dedicated_video_mem); }
|
||||
|
||||
static void DedicatedVideoStop(void)
|
||||
{
|
||||
#ifdef WIN32
|
||||
CloseWindowsConsoleThread();
|
||||
#endif
|
||||
free(_dedicated_video_mem);
|
||||
}
|
||||
|
||||
static void DedicatedVideoMakeDirty(int left, int top, int width, int height) {}
|
||||
static bool DedicatedVideoChangeRes(int w, int h) { return false; }
|
||||
|
||||
#ifdef UNIX
|
||||
|
||||
static bool InputWaiting()
|
||||
#if defined(UNIX) || defined(__OS2__)
|
||||
static bool InputWaiting(void)
|
||||
{
|
||||
struct timeval tv;
|
||||
fd_set readfds;
|
||||
@@ -126,49 +180,55 @@ static bool InputWaiting()
|
||||
|
||||
if (ret > 0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
static bool InputWaiting()
|
||||
static bool InputWaiting(void)
|
||||
{
|
||||
return kbhit();
|
||||
if (WaitForSingleObject(hEvent, 1) == WAIT_OBJECT_0)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void DedicatedHandleKeyInput()
|
||||
static void DedicatedHandleKeyInput(void)
|
||||
{
|
||||
#ifdef WIN32
|
||||
char input;
|
||||
#endif
|
||||
static char input_line[200] = "";
|
||||
|
||||
#if defined(UNIX) || defined(__OS2__)
|
||||
if (InputWaiting()) {
|
||||
if (_exit_game)
|
||||
return;
|
||||
if (!InputWaiting())
|
||||
return;
|
||||
|
||||
fgets(input_line, 200, stdin);
|
||||
// Forget about the final \n (or \r)
|
||||
strtok(input_line, "\r\n");
|
||||
IConsoleCmdExec(input_line);
|
||||
}
|
||||
if (_exit_game)
|
||||
return;
|
||||
|
||||
#if defined(UNIX) || defined(__OS2__)
|
||||
fgets(input_line, lengthof(input_line), stdin);
|
||||
#else
|
||||
if (InputWaiting()) {
|
||||
input = getch();
|
||||
printf("%c", input);
|
||||
if (input != '\r')
|
||||
snprintf(input_line, 200, "%s%c", input_line, input);
|
||||
else {
|
||||
printf("\n");
|
||||
IConsoleCmdExec(input_line);
|
||||
input_line[0] = '\0';
|
||||
strncpy(input_line, _win_console_thread_buffer, lengthof(input_line));
|
||||
#endif
|
||||
|
||||
/* XXX - strtok() does not 'forget' \n\r if it is the first character! */
|
||||
strtok(input_line, "\r\n"); // Forget about the final \n (or \r)
|
||||
{ /* Remove any special control characters */
|
||||
uint i;
|
||||
for (i = 0; i < lengthof(input_line); i++) {
|
||||
if (input_line[i] == '\n' || input_line[i] == '\r') // cut missed beginning '\0'
|
||||
input_line[i] = '\0';
|
||||
|
||||
if (input_line[i] == '\0')
|
||||
break;
|
||||
|
||||
if (!IS_INT_INSIDE(input_line[i], ' ', 256))
|
||||
input_line[i] = ' ';
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
IConsoleCmdExec(input_line); // execute command
|
||||
}
|
||||
|
||||
static int DedicatedVideoMainLoop()
|
||||
static int DedicatedVideoMainLoop(void)
|
||||
{
|
||||
#ifndef WIN32
|
||||
struct timeval tim;
|
||||
@@ -252,10 +312,10 @@ static const char *DedicatedVideoStart(char **parm) {
|
||||
}
|
||||
|
||||
void DedicatedFork(void) {}
|
||||
static void DedicatedVideoStop() { free(_dedicated_video_mem); }
|
||||
static void DedicatedVideoStop(void) { free(_dedicated_video_mem); }
|
||||
static void DedicatedVideoMakeDirty(int left, int top, int width, int height) {}
|
||||
static bool DedicatedVideoChangeRes(int w, int h) { return false; }
|
||||
static int DedicatedVideoMainLoop() { return ML_QUIT; }
|
||||
static int DedicatedVideoMainLoop(void) { return ML_QUIT; }
|
||||
|
||||
const HalVideoDriver _dedicated_video_driver = {
|
||||
DedicatedVideoStart,
|
||||
|
||||
@@ -13,25 +13,31 @@
|
||||
#include "airport_movement.h"
|
||||
#include "sound.h"
|
||||
|
||||
static void DisasterClearSquare(uint tile)
|
||||
static void DisasterClearSquare(TileIndex tile)
|
||||
{
|
||||
int type;
|
||||
|
||||
if (!EnsureNoVehicle(tile))
|
||||
return;
|
||||
|
||||
type = _map_type_and_height[tile] >> 4;
|
||||
switch (TileType(tile)) {
|
||||
case MP_RAILWAY:
|
||||
if (IS_HUMAN_PLAYER(_map_owner[tile])) DoClearSquare(tile);
|
||||
break;
|
||||
|
||||
if (type == MP_RAILWAY) {
|
||||
if (IS_HUMAN_PLAYER(_map_owner[tile]))
|
||||
case MP_HOUSE: {
|
||||
byte p = _current_player;
|
||||
_current_player = OWNER_NONE;
|
||||
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
_current_player = p;
|
||||
break;
|
||||
}
|
||||
|
||||
case MP_TREES:
|
||||
case MP_CLEAR:
|
||||
DoClearSquare(tile);
|
||||
} else if (type == MP_HOUSE) {
|
||||
byte p = _current_player;
|
||||
_current_player = OWNER_NONE;
|
||||
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
_current_player = p;
|
||||
} else if (type == MP_TREES || type == MP_CLEAR) {
|
||||
DoClearSquare(tile);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,7 +170,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
|
||||
} else if (v->current_order.station == 0) {
|
||||
tile = v->tile; /**/
|
||||
|
||||
if (IS_TILETYPE(tile, MP_STATION) &&
|
||||
if (IsTileType(tile, MP_STATION) &&
|
||||
IS_BYTE_INSIDE(_map5[tile], 8, 0x43) &&
|
||||
IS_HUMAN_PLAYER(_map_owner[tile])) {
|
||||
|
||||
@@ -178,7 +184,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
|
||||
0);
|
||||
}
|
||||
}
|
||||
if (v->y_pos >= (TILES_Y+9) * 16 - 1)
|
||||
if (v->y_pos >= ((int)MapSizeY() + 9) * 16 - 1)
|
||||
DeleteDisasterVeh(v);
|
||||
return;
|
||||
}
|
||||
@@ -189,11 +195,11 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
|
||||
|
||||
tile = v->tile; /**/
|
||||
|
||||
if (IS_TILETYPE(tile, MP_STATION) &&
|
||||
if (IsTileType(tile, MP_STATION) &&
|
||||
IS_BYTE_INSIDE(_map5[tile], 8, 0x43) &&
|
||||
IS_HUMAN_PLAYER(_map_owner[tile])) {
|
||||
|
||||
st = DEREF_STATION(_map2[tile]);
|
||||
st = GetStation(_map2[tile]);
|
||||
CLRBITS(st->airport_flags, RUNWAY_IN_block);
|
||||
}
|
||||
|
||||
@@ -231,11 +237,11 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
|
||||
}
|
||||
|
||||
tile = v->tile;/**/
|
||||
if (IS_TILETYPE(tile, MP_STATION) &&
|
||||
if (IsTileType(tile, MP_STATION) &&
|
||||
IS_BYTE_INSIDE(_map5[tile], 8, 0x43) &&
|
||||
IS_HUMAN_PLAYER(_map_owner[tile])) {
|
||||
|
||||
st = DEREF_STATION(_map2[tile]);
|
||||
st = GetStation(_map2[tile]);
|
||||
SETBITS(st->airport_flags, RUNWAY_IN_block);
|
||||
}
|
||||
}
|
||||
@@ -253,8 +259,8 @@ static void DisasterTick_UFO(Vehicle *v)
|
||||
|
||||
if (v->current_order.station == 0) {
|
||||
// fly around randomly
|
||||
int x = GET_TILE_X(v->dest_tile)*16;
|
||||
int y = GET_TILE_Y(v->dest_tile)*16;
|
||||
int x = TileX(v->dest_tile) * 16;
|
||||
int y = TileY(v->dest_tile) * 16;
|
||||
if (abs(x - v->x_pos) + abs(y - v->y_pos) >= 16) {
|
||||
v->direction = GetDirectionTowards(v, x, y);
|
||||
GetNewVehiclePos(v, &gp);
|
||||
@@ -278,7 +284,7 @@ static void DisasterTick_UFO(Vehicle *v)
|
||||
DeleteDisasterVeh(v);
|
||||
} else {
|
||||
// target a vehicle
|
||||
u = &_vehicles[v->dest_tile];
|
||||
u = GetVehicle(v->dest_tile);
|
||||
if (u->type != VEH_Road) {
|
||||
DeleteDisasterVeh(v);
|
||||
return;
|
||||
@@ -323,10 +329,9 @@ static void DisasterTick_UFO(Vehicle *v)
|
||||
static void DestructIndustry(Industry *i)
|
||||
{
|
||||
uint tile;
|
||||
byte index = i - _industries;
|
||||
|
||||
for(tile=0; tile != TILES_X*TILES_Y; tile++) {
|
||||
if (IS_TILETYPE(tile, MP_INDUSTRY) && _map2[tile] == index) {
|
||||
for(tile=0; tile != MapSize(); tile++) {
|
||||
if (IsTileType(tile, MP_INDUSTRY) && _map2[tile] == i->index) {
|
||||
_map_owner[tile] = 0;
|
||||
MarkTileDirtyByTile(tile);
|
||||
}
|
||||
@@ -352,9 +357,9 @@ static void DisasterTick_2(Vehicle *v)
|
||||
|
||||
if (v->current_order.station == 2) {
|
||||
if (!(v->tick_counter&3)) {
|
||||
Industry *i = DEREF_INDUSTRY(v->dest_tile);
|
||||
int x = GET_TILE_X(i->xy)*16;
|
||||
int y = GET_TILE_Y(i->xy)*16;
|
||||
Industry *i = GetIndustry(v->dest_tile);
|
||||
int x = TileX(i->xy) * 16;
|
||||
int y = TileY(i->xy) * 16;
|
||||
uint32 r = Random();
|
||||
|
||||
CreateEffectVehicleAbove(
|
||||
@@ -373,7 +378,7 @@ static void DisasterTick_2(Vehicle *v)
|
||||
v->current_order.station = 2;
|
||||
v->age = 0;
|
||||
|
||||
i = DEREF_INDUSTRY(v->dest_tile);
|
||||
i = GetIndustry(v->dest_tile);
|
||||
DestructIndustry(i);
|
||||
|
||||
SetDParam(0, i->town->index);
|
||||
@@ -388,16 +393,16 @@ static void DisasterTick_2(Vehicle *v)
|
||||
x = v->x_pos - 15*16;
|
||||
y = v->y_pos;
|
||||
|
||||
if ( (uint)x > (TILES_X-1) * 16-1)
|
||||
if ( (uint)x > MapMaxX() * 16-1)
|
||||
return;
|
||||
|
||||
tile = TILE_FROM_XY(x,y);
|
||||
if (!IS_TILETYPE(tile, MP_INDUSTRY))
|
||||
if (!IsTileType(tile, MP_INDUSTRY))
|
||||
return;
|
||||
|
||||
v->dest_tile = ind = _map2[tile];
|
||||
|
||||
if (DEREF_INDUSTRY(ind)->type == IT_OIL_REFINERY) {
|
||||
if (GetIndustry(ind)->type == IT_OIL_REFINERY) {
|
||||
v->current_order.station = 1;
|
||||
v->age = 0;
|
||||
}
|
||||
@@ -416,16 +421,16 @@ static void DisasterTick_3(Vehicle *v)
|
||||
GetNewVehiclePos(v, &gp);
|
||||
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
|
||||
|
||||
if (gp.x > TILES_X * 16 + 9*16 - 1) {
|
||||
if (gp.x > (int)MapSizeX() * 16 + 9*16 - 1) {
|
||||
DeleteDisasterVeh(v);
|
||||
return;
|
||||
}
|
||||
|
||||
if (v->current_order.station == 2) {
|
||||
if (!(v->tick_counter&3)) {
|
||||
Industry *i = DEREF_INDUSTRY(v->dest_tile);
|
||||
int x = GET_TILE_X(i->xy)*16;
|
||||
int y = GET_TILE_Y(i->xy)*16;
|
||||
Industry *i = GetIndustry(v->dest_tile);
|
||||
int x = TileX(i->xy) * 16;
|
||||
int y = TileY(i->xy) * 16;
|
||||
uint32 r = Random();
|
||||
|
||||
CreateEffectVehicleAbove(
|
||||
@@ -444,7 +449,7 @@ static void DisasterTick_3(Vehicle *v)
|
||||
v->current_order.station = 2;
|
||||
v->age = 0;
|
||||
|
||||
i = DEREF_INDUSTRY(v->dest_tile);
|
||||
i = GetIndustry(v->dest_tile);
|
||||
DestructIndustry(i);
|
||||
|
||||
SetDParam(0, i->town->index);
|
||||
@@ -459,16 +464,16 @@ static void DisasterTick_3(Vehicle *v)
|
||||
x = v->x_pos - 15*16;
|
||||
y = v->y_pos;
|
||||
|
||||
if ( (uint)x > (TILES_X-1) * 16-1)
|
||||
if ( (uint)x > MapMaxX() * 16-1)
|
||||
return;
|
||||
|
||||
tile = TILE_FROM_XY(x,y);
|
||||
if (!IS_TILETYPE(tile, MP_INDUSTRY))
|
||||
if (!IsTileType(tile, MP_INDUSTRY))
|
||||
return;
|
||||
|
||||
v->dest_tile = ind = _map2[tile];
|
||||
|
||||
if (DEREF_INDUSTRY(ind)->type == IT_FACTORY) {
|
||||
if (GetIndustry(ind)->type == IT_FACTORY) {
|
||||
v->current_order.station = 1;
|
||||
v->age = 0;
|
||||
}
|
||||
@@ -502,8 +507,8 @@ static void DisasterTick_4(Vehicle *v)
|
||||
v->tick_counter++;
|
||||
|
||||
if (v->current_order.station == 1) {
|
||||
int x = GET_TILE_X(v->dest_tile)*16 + 8;
|
||||
int y = GET_TILE_Y(v->dest_tile)*16 + 8;
|
||||
int x = TileX(v->dest_tile) * 16 + 8;
|
||||
int y = TileY(v->dest_tile) * 16 + 8;
|
||||
if (abs(v->x_pos - x) + abs(v->y_pos - y) >= 8) {
|
||||
v->direction = GetDirectionTowards(v, x, y);
|
||||
|
||||
@@ -554,8 +559,8 @@ static void DisasterTick_4(Vehicle *v)
|
||||
w->vehstatus |= VS_DISASTER;
|
||||
} else if (v->current_order.station < 1) {
|
||||
|
||||
int x = GET_TILE_X(v->dest_tile)*16;
|
||||
int y = GET_TILE_Y(v->dest_tile)*16;
|
||||
int x = TileX(v->dest_tile) * 16;
|
||||
int y = TileY(v->dest_tile) * 16;
|
||||
if (abs(x - v->x_pos) + abs(y - v->y_pos) >= 16) {
|
||||
v->direction = GetDirectionTowards(v, x, y);
|
||||
GetNewVehiclePos(v, &gp);
|
||||
@@ -571,7 +576,7 @@ static void DisasterTick_4(Vehicle *v)
|
||||
|
||||
tile_org = tile = TILE_MASK(Random());
|
||||
do {
|
||||
if (IS_TILETYPE(tile, MP_RAILWAY) &&
|
||||
if (IsTileType(tile, MP_RAILWAY) &&
|
||||
(_map5[tile]&~3)!=0xC0 && IS_HUMAN_PLAYER(_map_owner[tile]))
|
||||
break;
|
||||
tile = TILE_MASK(tile+1);
|
||||
@@ -594,13 +599,13 @@ static void DisasterTick_4b(Vehicle *v)
|
||||
GetNewVehiclePos(v, &gp);
|
||||
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
|
||||
|
||||
if (gp.x > TILES_X * 16 + 9*16 - 1) {
|
||||
if (gp.x > (int)MapSizeX() * 16 + 9*16 - 1) {
|
||||
DeleteDisasterVeh(v);
|
||||
return;
|
||||
}
|
||||
|
||||
if (v->current_order.station == 0) {
|
||||
u = &_vehicles[v->u.disaster.unk2];
|
||||
u = GetVehicle(v->u.disaster.unk2);
|
||||
if (abs(v->x_pos - u->x_pos) > 16)
|
||||
return;
|
||||
v->current_order.station = 1;
|
||||
@@ -646,7 +651,7 @@ static void DisasterTick_5_and_6(Vehicle *v)
|
||||
if (!(v->tick_counter&1))
|
||||
return;
|
||||
|
||||
tile = v->tile + _tileoffs_by_dir[v->direction >> 1];
|
||||
tile = v->tile + TileOffsByDir(v->direction >> 1);
|
||||
if (IsValidTile(tile) &&
|
||||
(r=GetTileTrackStatus(tile,TRANSPORT_WATER),(byte)(r+(r >> 8)) == 0x3F) &&
|
||||
!CHANCE16(1,90)) {
|
||||
@@ -689,10 +694,10 @@ void OnNewDay_DisasterVehicle(Vehicle *v)
|
||||
// not used
|
||||
}
|
||||
|
||||
typedef void DisasterInitProc();
|
||||
typedef void DisasterInitProc(void);
|
||||
|
||||
// Zeppeliner which crashes on a small airport
|
||||
static void Disaster0_Init()
|
||||
static void Disaster0_Init(void)
|
||||
{
|
||||
Vehicle *v = ForceAllocateSpecialVehicle(), *u;
|
||||
Station *st;
|
||||
@@ -701,16 +706,15 @@ static void Disaster0_Init()
|
||||
if (v == NULL)
|
||||
return;
|
||||
|
||||
for(st=_stations;;) {
|
||||
/* Pick a random place, unless we find
|
||||
a small airport */
|
||||
x = TileX(Random()) * 16 + 8;
|
||||
|
||||
FOR_ALL_STATIONS(st) {
|
||||
if (st->xy && st->airport_tile != 0 &&
|
||||
st->airport_type <= 1 &&
|
||||
IS_HUMAN_PLAYER(st->owner)) {
|
||||
x = (GET_TILE_X(st->xy) + 2) * 16;
|
||||
break;
|
||||
}
|
||||
|
||||
if (++st == endof(_stations)) {
|
||||
x = (GET_TILE_X(Random())) * 16 + 8;
|
||||
x = (TileX(st->xy) + 2) * 16;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -721,12 +725,12 @@ static void Disaster0_Init()
|
||||
u = ForceAllocateSpecialVehicle();
|
||||
if (u != NULL) {
|
||||
v->next = u;
|
||||
InitializeDisasterVehicle(u,x,0,0,3,1);
|
||||
InitializeDisasterVehicle(u, x, 0, 0, 3, 1);
|
||||
u->vehstatus |= VS_DISASTER;
|
||||
}
|
||||
}
|
||||
|
||||
static void Disaster1_Init()
|
||||
static void Disaster1_Init(void)
|
||||
{
|
||||
Vehicle *v = ForceAllocateSpecialVehicle(), *u;
|
||||
int x;
|
||||
@@ -734,10 +738,10 @@ static void Disaster1_Init()
|
||||
if (v == NULL)
|
||||
return;
|
||||
|
||||
x = (GET_TILE_X(Random())) * 16 + 8;
|
||||
x = TileX(Random()) * 16 + 8;
|
||||
|
||||
InitializeDisasterVehicle(v, x, 0, 135, 3, 2);
|
||||
v->dest_tile = TILE_XY(TILES_X/2,TILES_Y/2);
|
||||
v->dest_tile = TILE_XY(MapSizeX() / 2, MapSizeY() / 2);
|
||||
v->age = 0;
|
||||
|
||||
// Allocate shadow too?
|
||||
@@ -749,13 +753,15 @@ static void Disaster1_Init()
|
||||
}
|
||||
}
|
||||
|
||||
static void Disaster2_Init()
|
||||
static void Disaster2_Init(void)
|
||||
{
|
||||
Industry *i, *found;
|
||||
Vehicle *v,*u;
|
||||
int x,y;
|
||||
|
||||
for(found=NULL,i=_industries; i != endof(_industries); i++) {
|
||||
found = NULL;
|
||||
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if (i->xy != 0 &&
|
||||
i->type == IT_OIL_REFINERY &&
|
||||
(found==NULL || CHANCE16(1,2))) {
|
||||
@@ -770,8 +776,8 @@ static void Disaster2_Init()
|
||||
if (v == NULL)
|
||||
return;
|
||||
|
||||
x = (TILES_X+9) * 16 - 1;
|
||||
y = GET_TILE_Y(found->xy)*16 + 37;
|
||||
x = (MapSizeX() + 9) * 16 - 1;
|
||||
y = TileY(found->xy) * 16 + 37;
|
||||
|
||||
InitializeDisasterVehicle(v,x,y, 135,1,4);
|
||||
|
||||
@@ -783,13 +789,15 @@ static void Disaster2_Init()
|
||||
}
|
||||
}
|
||||
|
||||
static void Disaster3_Init()
|
||||
static void Disaster3_Init(void)
|
||||
{
|
||||
Industry *i, *found;
|
||||
Vehicle *v,*u,*w;
|
||||
int x,y;
|
||||
|
||||
for(found=NULL,i=_industries; i != endof(_industries); i++) {
|
||||
found = NULL;
|
||||
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if (i->xy != 0 &&
|
||||
i->type == IT_FACTORY &&
|
||||
(found==NULL || CHANCE16(1,2))) {
|
||||
@@ -805,7 +813,7 @@ static void Disaster3_Init()
|
||||
return;
|
||||
|
||||
x = -16 * 16;
|
||||
y = GET_TILE_Y(found->xy)*16 + 37;
|
||||
y = TileY(found->xy) * 16 + 37;
|
||||
|
||||
InitializeDisasterVehicle(v,x,y, 135,5,6);
|
||||
|
||||
@@ -823,7 +831,7 @@ static void Disaster3_Init()
|
||||
}
|
||||
}
|
||||
|
||||
static void Disaster4_Init()
|
||||
static void Disaster4_Init(void)
|
||||
{
|
||||
Vehicle *v = ForceAllocateSpecialVehicle(), *u;
|
||||
int x,y;
|
||||
@@ -831,11 +839,11 @@ static void Disaster4_Init()
|
||||
if (v == NULL)
|
||||
return;
|
||||
|
||||
x = (GET_TILE_X(Random())) * 16 + 8;
|
||||
x = TileX(Random()) * 16 + 8;
|
||||
|
||||
y = (TILES_X-1)*16-1;
|
||||
y = MapMaxX() * 16 - 1;
|
||||
InitializeDisasterVehicle(v, x, y, 135, 7, 9);
|
||||
v->dest_tile = TILE_XY(TILES_X/2,TILES_Y/2);
|
||||
v->dest_tile = TILE_XY(MapSizeX() / 2, MapSizeY() / 2);
|
||||
v->age = 0;
|
||||
|
||||
// Allocate shadow too?
|
||||
@@ -848,7 +856,7 @@ static void Disaster4_Init()
|
||||
}
|
||||
|
||||
// Submarine type 1
|
||||
static void Disaster5_Init()
|
||||
static void Disaster5_Init(void)
|
||||
{
|
||||
Vehicle *v = ForceAllocateSpecialVehicle();
|
||||
int x,y;
|
||||
@@ -859,17 +867,17 @@ static void Disaster5_Init()
|
||||
return;
|
||||
|
||||
r = Random();
|
||||
x = (GET_TILE_X(r)) * 16 + 8;
|
||||
x = TileX(r) * 16 + 8;
|
||||
|
||||
y = 8;
|
||||
dir = 3;
|
||||
if (r & 0x80000000) { y = (TILES_X-1) * 16 - 8 - 1; dir = 7; }
|
||||
if (r & 0x80000000) { y = MapMaxX() * 16 - 8 - 1; dir = 7; }
|
||||
InitializeDisasterVehicle(v, x, y, 0, dir,13);
|
||||
v->age = 0;
|
||||
}
|
||||
|
||||
// Submarine type 2
|
||||
static void Disaster6_Init()
|
||||
static void Disaster6_Init(void)
|
||||
{
|
||||
Vehicle *v = ForceAllocateSpecialVehicle();
|
||||
int x,y;
|
||||
@@ -880,23 +888,23 @@ static void Disaster6_Init()
|
||||
return;
|
||||
|
||||
r = Random();
|
||||
x = (GET_TILE_X(r)) * 16 + 8;
|
||||
x = TileX(r) * 16 + 8;
|
||||
|
||||
y = 8;
|
||||
dir = 3;
|
||||
if (r & 0x80000000) { y = (TILES_X-1) * 16 - 8 - 1; dir = 7; }
|
||||
if (r & 0x80000000) { y = MapMaxX() * 16 - 8 - 1; dir = 7; }
|
||||
InitializeDisasterVehicle(v, x, y, 0, dir,14);
|
||||
v->age = 0;
|
||||
}
|
||||
|
||||
static void Disaster7_Init()
|
||||
static void Disaster7_Init(void)
|
||||
{
|
||||
Industry *i;
|
||||
int maxloop = 15;
|
||||
int index = Random() & 0xF;
|
||||
|
||||
do {
|
||||
for(i=_industries; i != endof(_industries); i++) {
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if (i->xy != 0 && i->type == IT_COAL_MINE && --index < 0) {
|
||||
|
||||
SetDParam(0, i->town->index);
|
||||
@@ -905,7 +913,7 @@ static void Disaster7_Init()
|
||||
|
||||
{
|
||||
uint tile = i->xy;
|
||||
int step = _tileoffs_by_dir[Random() & 3];
|
||||
TileIndexDiff step = TileOffsByDir(Random() & 3);
|
||||
int count = 30;
|
||||
do {
|
||||
DisasterClearSquare(tile);
|
||||
@@ -946,7 +954,7 @@ static const DisasterYears _dis_years[8] = {
|
||||
};
|
||||
|
||||
|
||||
static void DoDisaster()
|
||||
static void DoDisaster(void)
|
||||
{
|
||||
byte buf[8];
|
||||
byte year = _cur_year;
|
||||
@@ -965,12 +973,12 @@ static void DoDisaster()
|
||||
}
|
||||
|
||||
|
||||
static void ResetDisasterDelay()
|
||||
static void ResetDisasterDelay(void)
|
||||
{
|
||||
_disaster_delay = (int)(Random() & 0x1FF) + 730;
|
||||
}
|
||||
|
||||
void DisasterDailyLoop()
|
||||
void DisasterDailyLoop(void)
|
||||
{
|
||||
if (--_disaster_delay != 0)
|
||||
return;
|
||||
@@ -981,7 +989,8 @@ void DisasterDailyLoop()
|
||||
DoDisaster();
|
||||
}
|
||||
|
||||
void StartupDisasters() {
|
||||
void StartupDisasters(void)
|
||||
{
|
||||
ResetDisasterDelay();
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
#include "sound.h"
|
||||
#include "command.h"
|
||||
|
||||
static void ShowBuildDockStationPicker();
|
||||
static void ShowBuildDocksDepotPicker();
|
||||
static void ShowBuildDockStationPicker(void);
|
||||
static void ShowBuildDocksDepotPicker(void);
|
||||
|
||||
static byte _ship_depot_direction;
|
||||
|
||||
@@ -119,6 +119,20 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
|
||||
if (e->click.widget - 3 >= 0 && e->click.widget != 5) _build_docks_button_proc[e->click.widget - 3](w);
|
||||
} break;
|
||||
|
||||
case WE_KEYPRESS: {
|
||||
switch(e->keypress.keycode) {
|
||||
case '1': BuildDocksClick_Canal(w); break;
|
||||
case '2': BuildDocksClick_Lock(w); break;
|
||||
case '3': BuildDocksClick_Demolish(w); break;
|
||||
case '4': BuildDocksClick_Depot(w); break;
|
||||
case '5': BuildDocksClick_Dock(w); break;
|
||||
case '6': BuildDocksClick_Buoy(w); break;
|
||||
case 'l': BuildDocksClick_Landscaping(w); break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
} break;
|
||||
|
||||
case WE_PLACE_OBJ:
|
||||
_place_proc(e->place.tile);
|
||||
break;
|
||||
@@ -164,19 +178,19 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _build_docks_toolb_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 145, 0, 13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, 7, 146, 157, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PANEL, 7, 0, 21, 14, 35, SPR_OPENTTD_BASE+65, STR_BUILD_CANALS_TIP},
|
||||
{ WWT_PANEL, 7, 22, 43, 14, 35, SPR_CANALS_BASE+69, STR_BUILD_LOCKS_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 145, 0, 13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 7, 146, 157, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_OPENTTD_BASE+65, STR_BUILD_CANALS_TIP},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_CANALS_BASE+69, STR_BUILD_LOCKS_TIP},
|
||||
|
||||
{ WWT_PANEL, 7, 44, 47, 14, 35, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 44, 47, 14, 35, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_PANEL, 7, 48, 69, 14, 35, 703, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_PANEL, 7, 70, 91, 14, 35, 748, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},
|
||||
{ WWT_PANEL, 7, 92, 113, 14, 35, 746, STR_981D_BUILD_SHIP_DOCK},
|
||||
{ WWT_PANEL, 7, 114, 135, 14, 35, 693, STR_9834_POSITION_BUOY_WHICH_CAN},
|
||||
{ WWT_PANEL, 7, 136, 157, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 48, 69, 14, 35, 703, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 70, 91, 14, 35, 748, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 92, 113, 14, 35, 746, STR_981D_BUILD_SHIP_DOCK},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 114, 135, 14, 35, 693, STR_9834_POSITION_BUOY_WHICH_CAN},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 136, 157, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -188,8 +202,9 @@ static const WindowDesc _build_docks_toolbar_desc = {
|
||||
BuildDocksToolbWndProc
|
||||
};
|
||||
|
||||
void ShowBuildDocksToolbar()
|
||||
void ShowBuildDocksToolbar(void)
|
||||
{
|
||||
if (_current_player == OWNER_SPECTATOR) return;
|
||||
DeleteWindowById(WC_BUILD_TOOLBAR, 0);
|
||||
AllocateWindowDesc(&_build_docks_toolbar_desc);
|
||||
}
|
||||
@@ -219,9 +234,6 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
case WE_CLICK: {
|
||||
switch(e->click.widget) {
|
||||
case 0:
|
||||
ResetObjectToPlace();
|
||||
break;
|
||||
case 3: case 4:
|
||||
_station_show_coverage = e->click.widget - 3;
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
@@ -239,15 +251,20 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e)
|
||||
CheckRedrawStationCoverage(w);
|
||||
break;
|
||||
}
|
||||
|
||||
case WE_DESTROY:
|
||||
if (!WP(w,def_d).close)
|
||||
ResetObjectToPlace();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const Widget _build_dock_station_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 147, 0, 13, STR_3068_DOCK, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 147, 14, 74, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, 14, 14, 73, 30, 40, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
|
||||
{ WWT_CLOSEBOX, 14, 74, 133, 30, 40, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_3068_DOCK, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 147, 14, 74, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 14, 73, 30, 40, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 74, 133, 30, 40, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -259,12 +276,12 @@ static const WindowDesc _build_dock_station_desc = {
|
||||
BuildDockStationWndProc
|
||||
};
|
||||
|
||||
static void ShowBuildDockStationPicker()
|
||||
static void ShowBuildDockStationPicker(void)
|
||||
{
|
||||
AllocateWindowDesc(&_build_dock_station_desc);
|
||||
}
|
||||
|
||||
static void UpdateDocksDirection()
|
||||
static void UpdateDocksDirection(void)
|
||||
{
|
||||
if (_ship_depot_direction != 0) {
|
||||
SetTileSelectSize(1, 2);
|
||||
@@ -288,9 +305,6 @@ static void BuildDocksDepotWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
case WE_CLICK: {
|
||||
switch(e->click.widget) {
|
||||
case 0:
|
||||
ResetObjectToPlace();
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
_ship_depot_direction = e->click.widget - 3;
|
||||
@@ -305,15 +319,20 @@ static void BuildDocksDepotWndProc(Window *w, WindowEvent *e)
|
||||
if (WP(w,def_d).close)
|
||||
DeleteWindow(w);
|
||||
break;
|
||||
|
||||
case WE_DESTROY:
|
||||
if (!WP(w,def_d).close)
|
||||
ResetObjectToPlace();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const Widget _build_docks_depot_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 203, 0, 13, STR_3800_SHIP_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 203, 14, 85, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, 14, 3, 100, 17, 82, 0x0, STR_3803_SELECT_SHIP_DEPOT_ORIENTATION},
|
||||
{ WWT_PANEL, 14, 103, 200, 17, 82, 0x0, STR_3803_SELECT_SHIP_DEPOT_ORIENTATION},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 203, 0, 13, STR_3800_SHIP_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 203, 14, 85, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 100, 17, 82, 0x0, STR_3803_SELECT_SHIP_DEPOT_ORIENTATION},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 103, 200, 17, 82, 0x0, STR_3803_SELECT_SHIP_DEPOT_ORIENTATION},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -326,14 +345,14 @@ static const WindowDesc _build_docks_depot_desc = {
|
||||
};
|
||||
|
||||
|
||||
static void ShowBuildDocksDepotPicker()
|
||||
static void ShowBuildDocksDepotPicker(void)
|
||||
{
|
||||
AllocateWindowDesc(&_build_docks_depot_desc);
|
||||
UpdateDocksDirection();
|
||||
}
|
||||
|
||||
|
||||
void InitializeDockGui()
|
||||
void InitializeDockGui(void)
|
||||
{
|
||||
_ship_depot_direction = 0;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ On BeOS, run ./configure and then use jam. There are a variaty of options you ca
|
||||
On Windows, insert your "Transport Tycoon Deluxe for Windows 95" disk. You can use a DOS version, but your graphics will be purple. NB: Even if your version of Transport Tycoon Deluxe ran on Windows 95, it may still be the DOS version. Then run the OpenTTD installer.
|
||||
|
||||
On UNIX platforms; decompress your OpenTTD archive, or otherwise run the installer. You should be left with an OpenTTD directory on your system. In this directory, make a subdirectory called 'data', and into this place the sample.cat file and all the .grf files from the install CD of 'Transport Tycoon Deluxe for Windows 95".
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
|
||||
If you want MIDI music, copy the 'gm' folder from the original game directory/CD to the OpenTTD folder.
|
||||
|
||||
|
||||
@@ -19,6 +19,6 @@ trghr.grf
|
||||
trgir.grf
|
||||
trgtr.grf
|
||||
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
|
||||
You should also use the data folder to add any custom grf files if you like
|
||||
@@ -39,7 +39,7 @@ Copy the following files from Transport Tycoon Deluxe to openttd/data/
|
||||
trgir.grf
|
||||
trgtr.grf
|
||||
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
|
||||
|
||||
4.) Compiling and running:
|
||||
|
||||
@@ -1,48 +1,118 @@
|
||||
OpenTTD: OS/2 version ** CURRENTLY INCOMPLETE **
|
||||
=====================
|
||||
|
||||
OpenTTD has been ported to work on OS/2 4.x or later (including eComStation). At the moment, it does not work properly, but it
|
||||
can compile and work to an extent.
|
||||
|
||||
Compiler
|
||||
--------
|
||||
|
||||
Open Watcom 1.3 was used to build OpenTTD (earlier versions will NOT work). See http://www.openwatcom.org/ to download it.
|
||||
It may also be possible to build OpenTTD under OS/2: I attempted this before using Open Watcom, but found the tools available
|
||||
for OS/2 at the time to be a bit more tricky to get working.
|
||||
|
||||
Due to complexities in my set-up, I actually used the Win32 version of Open Watcom to initially compile OpenTTD for OS/2. There
|
||||
should be no reason of course why the OS/2 version cannot be used.
|
||||
|
||||
Libraries Required
|
||||
------------------
|
||||
|
||||
The following libraries are required. To build zlib and libpng, I simply added the required files (watch out for sample
|
||||
programs, etc) to an IDE project file and built a library:
|
||||
|
||||
- zlib
|
||||
http://www.zlib.org/ - contains a makefile for OS/2, but is out of date and uses EMX
|
||||
|
||||
- libpng
|
||||
http://www.libpng.org/ - contains an EMX/gcc makefile
|
||||
|
||||
- SDL for OS/2
|
||||
I used ftp://ftp.netlabs.org/pub/sdl/SDL-1.2.7-src-20040908a.zip - take SDL.dll and SDL.lib from the src/ directory.
|
||||
|
||||
Note that to use the compiled program, you also need FSLib.dll (from src/ in the SDL zip) and a version of the Scitech
|
||||
Display Drivers or its later incarnation (see www.scitech.com).
|
||||
|
||||
Compiling
|
||||
---------
|
||||
|
||||
To compile, open the os/os2/openttd.wpj file in the IDE and build the openttd.exe target.
|
||||
|
||||
TODO: compilation of language files properly
|
||||
|
||||
|
||||
** THESE DOCS ARE INCOMPLETE FOR THE MOMENT, WILL BE COMPLETED SOON **
|
||||
|
||||
If you have any questions, please contact me (owen@owenrudge.net) and I'll try to help you out
|
||||
|
||||
- Owen Rudge, 18th December 2004
|
||||
|
||||
OpenTTD: OS/2 version
|
||||
=====================
|
||||
|
||||
OpenTTD has been ported to work on OS/2 4.x or later (including
|
||||
eComStation). The game should work as well as it does on Windows
|
||||
or other platforms: the main issues you may encounter are graphics
|
||||
card problems, but that is really the fault of SDL.
|
||||
|
||||
=========================
|
||||
USING OPENTTD FOR OS/2
|
||||
=========================
|
||||
|
||||
LIBRARIES REQUIRED FOR END USERS
|
||||
--------------------------------
|
||||
|
||||
SDL.DLL (SDL 1.2.7) and FSLib.dll are required to use this program:
|
||||
these can be downloaded from the Files section at
|
||||
http://sourceforge.net/projects/openttd/ - see "os2-useful.zip".
|
||||
(Note that a newer version of SDL is now available at
|
||||
ftp://ftp.netlabs.org/pub/sdl/sdl-dev-os2-2004-12-22.zip which may
|
||||
help solve some problems).
|
||||
|
||||
Note that to actually play the game, I have found in my own
|
||||
experience that a version of the Scitech Display Drivers or its later
|
||||
incarnation (see www.scitech.com) are necessary for it to work. If
|
||||
you have trouble with your native drivers, try the Scitech drivers
|
||||
and see if they help the problem.
|
||||
|
||||
KNOWN ISSUES
|
||||
------------
|
||||
|
||||
- If an error occurs during loading, the OS/2 error message window
|
||||
is not always displayed.
|
||||
|
||||
A NOTE ABOUT MUSIC
|
||||
------------------
|
||||
|
||||
OpenTTD includes a music driver which uses the MCI MIDI system. Unfortunately,
|
||||
due to the lack of proper MIDI hardware myself, I have been unable to test it,
|
||||
but during testing, I found that when MIDI was enabled, I got no sound
|
||||
effects. I therefore decided to DISABLE music by default.
|
||||
|
||||
To enable music, start OpenTTD with the command line:
|
||||
|
||||
openttd -m os2
|
||||
|
||||
If I hear enough responses that both music and sound work together (it might
|
||||
just be my system), I'll have the defaults changed.
|
||||
|
||||
A NOTE ABOUT DEDICATED MULTIPLAYER SERVERS
|
||||
------------------------------------------
|
||||
|
||||
To start a dedicated multiplayer server, you should run the dedicated.cmd
|
||||
file. This enables OpenTTD to open up a VIO console window to display
|
||||
its output and gather any necessary input. Running "openttd -D"
|
||||
directly will result in the console not being displayed. You may
|
||||
still pass any other parameters ('-D' is already passed) to
|
||||
dedicated.cmd.
|
||||
|
||||
=========================
|
||||
BUILDING THE OS/2 VERSION
|
||||
=========================
|
||||
|
||||
Compiler
|
||||
--------
|
||||
|
||||
Open Watcom 1.3 was used to build OpenTTD (earlier versions will
|
||||
NOT work). See http://www.openwatcom.org/ to download it. It may
|
||||
also be possible to build OpenTTD under OS/2: I attempted this
|
||||
before using Open Watcom, but found the tools available for OS/2
|
||||
at the time to be a bit more tricky to get working.
|
||||
|
||||
Due to complexities in my set-up, I actually used the Win32 version
|
||||
of Open Watcom to initially compile OpenTTD for OS/2. There should
|
||||
be no reason of course why the OS/2 version cannot be used.
|
||||
|
||||
Libraries Required
|
||||
------------------
|
||||
|
||||
The following libraries are required. To build zlib and libpng, I
|
||||
simply added the required files (watch out for sample programs, etc)
|
||||
to an IDE project file and built a library. Do not use the makefiles
|
||||
provided, they are not designed for Watcom (apart from SDL):
|
||||
|
||||
- zlib
|
||||
http://www.zlib.org/ - contains a makefile for OS/2, but is out
|
||||
of date and uses EMX
|
||||
|
||||
- libpng
|
||||
http://www.libpng.org/ - contains an EMX/gcc makefile
|
||||
|
||||
- SDL for OS/2
|
||||
For 0.3.5, I used ftp://ftp.netlabs.org/pub/sdl/SDL-1.2.7-src-20040908a.zip -
|
||||
take SDL.dll and SDL.lib from the src/ directory. Note that 20041222 is
|
||||
out now, which is recommended for stability updates.
|
||||
|
||||
If you do not wish to build the libraries yourself, pre-built versions
|
||||
can be downloaded from the Files section at
|
||||
http://sourceforge.net/projects/openttd/ - see "os2-useful.zip".
|
||||
|
||||
Compiling
|
||||
---------
|
||||
|
||||
To compile, open the os/os2/openttd.wpj file in the IDE and first build
|
||||
the strgen.exe target. This will build the .lng file generator, and will
|
||||
also attempt to build all the language files (plus the table\strings.h
|
||||
file which is required for openttd.exe to be built). Once strgen.exe and
|
||||
the language files are built successfully, you can build the openttd.exe
|
||||
target.
|
||||
|
||||
Contact Information
|
||||
-------------------
|
||||
|
||||
If you have any questions regarding OS/2 issues, please contact me
|
||||
(owen@owenrudge.net) and I'll try to help you out. For general OpenTTD
|
||||
issues, see the Contacting section of readme.txt.
|
||||
|
||||
- Owen Rudge, 26th December 2004
|
||||
|
||||
@@ -1,89 +1,105 @@
|
||||
Compilung OpenTTD using MS VC6.0
|
||||
|
||||
|
||||
Step 1
|
||||
------------------
|
||||
Downloaded:
|
||||
Useful.zip http://sourceforge.net/project/showfiles.php?group_id=103924&package_id=114307&release_id=228633
|
||||
SDL.zip http://www.libsdl.org/release/SDL-1.2.7-win32.zip
|
||||
DirectX7.0 SDK http://www.tt-forums.net/download.php?id=15989
|
||||
(or alternatively the latest DirectX SDK from Microsoft)
|
||||
afxres.h http://www-d0.fnal.gov/d0dist/dist/packages/d0ve/devel/windows/AFXRES.H
|
||||
|
||||
|
||||
Step 2
|
||||
------------------
|
||||
Put the newly downloaded files in the VC lib and include directories
|
||||
(Where D:\program files\ is your local location of VC)
|
||||
|
||||
|
||||
* zconf.h [useful.zip]
|
||||
* zlib.h [useful.zip]
|
||||
* afxres.h
|
||||
in
|
||||
D:\Program Files\Microsoft Visual Studio\VC98\Include
|
||||
|
||||
* zlibstat.lib [usefull.zip]
|
||||
* SDL.lib [SDL.zip
|
||||
* libpng.lib [usefull.zip]
|
||||
in
|
||||
D:\Program Files\Microsoft Visual Studio\VC98\Lib
|
||||
|
||||
You can also make custum directories, for libraries (.lib) and includes/header files (.h) and
|
||||
add it to the VC paths via:
|
||||
Tools -> Options -> Directories -> show directories for:
|
||||
a) include files (the include dir: D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\include )
|
||||
b) library files (the lib dir, D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\lib )
|
||||
|
||||
|
||||
Step 3: DirextX SDK
|
||||
------------------
|
||||
(This should work with the latest DirectX SDK as well.)
|
||||
The installation with DirectX 7 was odd, so you'd better use the version available via the forum, see also
|
||||
the download link on top.
|
||||
|
||||
Copy the DirectX 7 SDK files, leaving the directory stucture intact, to the directory:
|
||||
D:\Program Files\Microsoft Visual Studio\VC98\
|
||||
thus resulting in
|
||||
D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\include and
|
||||
D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\lib
|
||||
|
||||
Step 3.1
|
||||
|
||||
Add these two folders to the search path of VC.
|
||||
In VC6.0: Tools -> Options -> Directories -> show directories for:
|
||||
a) include files (the include dir: D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\include )
|
||||
b) libraru files (the lib dir, D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\lib )
|
||||
|
||||
|
||||
Step 4
|
||||
-----------------
|
||||
Copy the following files from Transport Tycoon Deluxe to the data folder
|
||||
sample.cat
|
||||
trg1r.grf
|
||||
trgcr.grf
|
||||
trghr.grf
|
||||
trgir.grf
|
||||
trgtr.grf
|
||||
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
|
||||
Step 5
|
||||
-----------------
|
||||
Compile ...
|
||||
|
||||
|
||||
Step 6
|
||||
-----------------
|
||||
|
||||
Now it should work, it worked for me :)
|
||||
|
||||
Go ahead and make that patch!
|
||||
|
||||
Happy Hacking!
|
||||
|
||||
|
||||
|
||||
------------------
|
||||
written by Dribbel
|
||||
|
||||
Compiling OpenTTD using Microsoft Visual C++ 6.0
|
||||
|
||||
|
||||
---Step 1
|
||||
|
||||
Download the following files:
|
||||
|
||||
* Useful.zip (http://sourceforge.net/project/showfiles.php?group_id=103924&package_id=114307&release_id=228633)
|
||||
* SDL-1.2.8-VC6.zip (http://www.libsdl.org/release/SDL-devel-1.2.8-VC6.zip)
|
||||
* DirectX7.0 SDK (http://www.tt-forums.net/download.php?id=15989) (or alternatively the latest DirectX SDK from Microsoft)
|
||||
* afxres.h (http://www-d0.fnal.gov/d0dist/dist/packages/d0ve/devel/windows/AFXRES.H)
|
||||
|
||||
...and of course the newest source from svn://svn.openttd.com/trunk
|
||||
|
||||
(The alpha version of the new map array can be found at svn://svn.openttd.com/branch/map)
|
||||
|
||||
You have to have and SVN-client to download the source:
|
||||
|
||||
* Command line version (http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91)
|
||||
* TortoiseSVN (http://tortoisesvn.tigris.org/download.html)
|
||||
|
||||
|
||||
---Step 2
|
||||
|
||||
Put the newly downloaded files in the VC lib and include directories (Where C:\program files\ is your local location of VC)
|
||||
|
||||
|
||||
* zconf.h [useful.zip]
|
||||
* zlib.h [useful.zip]
|
||||
* png.h [useful.zip]
|
||||
* pngconf.h [useful.zip]
|
||||
* afxres.h
|
||||
|
||||
in
|
||||
|
||||
C:\Program Files\Microsoft Visual Studio\VC98\Include
|
||||
|
||||
and
|
||||
|
||||
* zlibstat.lib [useful.zip]
|
||||
* SDL.lib [SDL.zip]
|
||||
* libpng.lib [useful.zip]
|
||||
|
||||
in
|
||||
|
||||
C:\Program Files\Microsoft Visual Studio\VC98\Lib
|
||||
|
||||
|
||||
---Step 3: DirectX SDK
|
||||
|
||||
(This should work with the latest DirectX SDK as well.) The installation with DirectX 7 was odd, so you'd better use the version available via the forum, see also the download link on top.
|
||||
|
||||
There are 2 folder in the compressed file: Include and Lib
|
||||
|
||||
Copy all files from Include folder to
|
||||
|
||||
C:\Program Files\Microsoft Visual Studio\VC98\Include
|
||||
|
||||
and all files from Lib folder to
|
||||
|
||||
C:\Program Files\Microsoft Visual Studio\VC98\Lib
|
||||
|
||||
|
||||
|
||||
You can also make custom directories, for libraries (.lib) and includes/header files (.h) and add it to the VC paths via:
|
||||
|
||||
Tools -> Options -> Directories -> show directories for:
|
||||
|
||||
a) include files (the include dir: C:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\include )
|
||||
|
||||
b) library files (the lib dir, C:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\lib )
|
||||
|
||||
|
||||
---Step 4
|
||||
|
||||
Copy the following files from Transport Tycoon Deluxe to the data folder
|
||||
|
||||
* sample.cat
|
||||
* trg1r.grf
|
||||
* trgcr.grf
|
||||
* trghr.grf
|
||||
* trgir.grf
|
||||
* trgtr.grf
|
||||
|
||||
|
||||
---Step 5
|
||||
|
||||
Open trunk/ttd.dsw
|
||||
|
||||
Build menu > Set active configuration > Select: "ttd - Win32 Release with PNG"
|
||||
|
||||
Compile...
|
||||
|
||||
|
||||
Now it should work, it worked for me :)
|
||||
|
||||
From r1319 you can compile branch/map in Debug mode (by Bociusz)
|
||||
|
||||
If it's not working, and you checked that you using the newest SVN (!) report to Bociusz on IRC (irc://irc.freenode.net/#openttd)
|
||||
|
||||
Go ahead and make that patch! Happy Hacking! :)
|
||||
|
||||
Originally written by Dribbel
|
||||
|
||||
Project file updating by Bociusz
|
||||
@@ -1,20 +1,20 @@
|
||||
Notes about DirectMusic driver for Win32
|
||||
----------------------------------------
|
||||
|
||||
If compiling under MinGW32, you require the DirectX 7.0 files for MinGW32, available from
|
||||
http://alleg.sourceforge.net/files/dx70_mgw.zip.
|
||||
|
||||
If compiling under MSVC 6.0, you require the equivalent for MSVC, available from
|
||||
http://alleg.sourceforge.net/files/dx70_min.zip. MSVC 7.0/7.1 include header files that
|
||||
are recent enough.
|
||||
|
||||
If you do not want to compile the DirectMusic driver, undefine WIN32_ENABLE_DIRECTMUSIC_SUPPORT
|
||||
in stdafx.h.
|
||||
|
||||
Bugs, etc
|
||||
---------
|
||||
|
||||
- The volume control doesn't work properly. I'll fix this soon.
|
||||
|
||||
Owen Rudge
|
||||
Notes about DirectMusic driver for Win32
|
||||
----------------------------------------
|
||||
|
||||
If compiling under MinGW32, you require the DirectX 7.0 files for MinGW32, available from
|
||||
http://alleg.sourceforge.net/files/dx70_mgw.zip.
|
||||
|
||||
If compiling under MSVC 6.0, you require the equivalent for MSVC, available from
|
||||
http://alleg.sourceforge.net/files/dx70_min.zip. MSVC 7.0/7.1 include header files that
|
||||
are recent enough.
|
||||
|
||||
If you do not want to compile the DirectMusic driver, undefine WIN32_ENABLE_DIRECTMUSIC_SUPPORT
|
||||
in stdafx.h.
|
||||
|
||||
Bugs, etc
|
||||
---------
|
||||
|
||||
- The volume control doesn't work properly. I'll fix this soon.
|
||||
|
||||
Owen Rudge
|
||||
14th March 2004
|
||||
@@ -22,13 +22,13 @@ openttd \- An open source clone of the Microprose game "Transport Tycoon Deluxe
|
||||
.RI [ options ]
|
||||
.br
|
||||
.SH DESCRIPTION
|
||||
Unfortanetely, there is no real manpage for openttd yet. Hopefully someone
|
||||
Unfortunately, there is no real manpage for openttd yet. Hopefully someone
|
||||
will write one soon. For now you should use
|
||||
.B openttd -h
|
||||
for more information, or check our Wiki manual: http://wiki.openttd.org/
|
||||
.PP
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
|
||||
.\" respectively.
|
||||
.\" \fBopenttd\fP is a program that...
|
||||
.SH OPTIONS
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
0,9,10,2,3,13,9,9,0,10,4,15,6,11,14,1
|
||||
dark blue=0 =0
|
||||
pale_green=1 =9
|
||||
pink=2 =10
|
||||
yellow=3 =2
|
||||
red=4 =3
|
||||
light blue=5 =13
|
||||
green=6 =9
|
||||
dark green=7 =9
|
||||
blue=8 =0
|
||||
cream=9 =10
|
||||
mauve=10 =4
|
||||
purple=11 =15
|
||||
orange=12 =6
|
||||
brown=13 =11
|
||||
grey=14 =14
|
||||
white=15 =1
|
||||
|
||||
|
||||
=blue=0
|
||||
=white=1
|
||||
=yellow=2
|
||||
=red=3
|
||||
=blue=4
|
||||
=grey=5
|
||||
=orange=6
|
||||
=green=7
|
||||
=light yellow=8
|
||||
=light green=9
|
||||
=cream=10
|
||||
=brown=11
|
||||
=white=12
|
||||
=light blue=13
|
||||
=dark grey=14
|
||||
=purple=15
|
||||
=black=16
|
||||
=dark green=17=not good
|
||||
=dark grey=21
|
||||
0,9,10,2,3,13,9,9,0,10,4,15,6,11,14,1
|
||||
dark blue=0 =0
|
||||
pale_green=1 =9
|
||||
pink=2 =10
|
||||
yellow=3 =2
|
||||
red=4 =3
|
||||
light blue=5 =13
|
||||
green=6 =9
|
||||
dark green=7 =9
|
||||
blue=8 =0
|
||||
cream=9 =10
|
||||
mauve=10 =4
|
||||
purple=11 =15
|
||||
orange=12 =6
|
||||
brown=13 =11
|
||||
grey=14 =14
|
||||
white=15 =1
|
||||
|
||||
|
||||
=blue=0
|
||||
=white=1
|
||||
=yellow=2
|
||||
=red=3
|
||||
=blue=4
|
||||
=grey=5
|
||||
=orange=6
|
||||
=green=7
|
||||
=light yellow=8
|
||||
=light green=9
|
||||
=cream=10
|
||||
=brown=11
|
||||
=white=12
|
||||
=light blue=13
|
||||
=dark grey=14
|
||||
=purple=15
|
||||
=black=16
|
||||
=dark green=17=not good
|
||||
=dark grey=21
|
||||
|
||||
@@ -26,8 +26,8 @@ uint GetMaskOfAllowedCurrencies(void)
|
||||
for (i = 0; i != lengthof(_currency_specs); i++) {
|
||||
uint16 to_euro = _currency_specs[i].to_euro;
|
||||
if (i == 23) mask |= (1 << 23); // always allow custom currency
|
||||
if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= (to_euro-1920)) continue;
|
||||
if (_cur_year < (2000-1920) && (to_euro == CF_ISEURO)) continue;
|
||||
if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= (to_euro-MAX_YEAR_BEGIN_REAL)) continue;
|
||||
if (_cur_year < (2000-MAX_YEAR_BEGIN_REAL) && (to_euro == CF_ISEURO)) continue;
|
||||
mask |= (1 << i);
|
||||
}
|
||||
return mask;
|
||||
@@ -37,7 +37,7 @@ void CheckSwitchToEuro(void)
|
||||
{
|
||||
if (_currency_specs[_opt.currency].to_euro != CF_NOEURO &&
|
||||
_currency_specs[_opt.currency].to_euro != CF_ISEURO &&
|
||||
_cur_year >= (_currency_specs[_opt.currency].to_euro-1920)) {
|
||||
_cur_year >= (_currency_specs[_opt.currency].to_euro-MAX_YEAR_BEGIN_REAL)) {
|
||||
_opt.currency = 2; // this is the index of euro above.
|
||||
AddNewsItem(STR_EURO_INTRODUCE, NEWS_FLAGS(NM_NORMAL,0,NT_ECONOMY,0), 0, 0);
|
||||
}
|
||||
@@ -105,10 +105,9 @@ int64 CalculateCompanyValue(Player *p) {
|
||||
}
|
||||
}
|
||||
|
||||
if (p->player_money > 0)
|
||||
value += p->money64; // add real money value
|
||||
value += p->money64 - p->current_loan; // add real money value
|
||||
|
||||
return value;
|
||||
return max(value, 1);
|
||||
}
|
||||
|
||||
// if update is set to true, the economy is updated with this score
|
||||
@@ -129,7 +128,7 @@ int UpdateCompanyRatingAndValue(Player *p, bool update)
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->owner != owner)
|
||||
continue;
|
||||
if ((v->type == VEH_Train && v->subtype == 0) ||
|
||||
if ((v->type == VEH_Train && v->subtype == TS_Front_Engine) ||
|
||||
v->type == VEH_Road ||
|
||||
(v->type == VEH_Aircraft && v->subtype<=2) ||
|
||||
v->type == VEH_Ship) {
|
||||
@@ -270,7 +269,7 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
|
||||
|
||||
for(s=_subsidies; s != endof(_subsidies); s++) {
|
||||
if (s->cargo_type != 0xff && s->age >= 12) {
|
||||
Station *st = DEREF_STATION(s->to);
|
||||
Station *st = GetStation(s->to);
|
||||
if (st->owner == old_player)
|
||||
s->cargo_type = 0xff;
|
||||
}
|
||||
@@ -311,7 +310,7 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
|
||||
// Determine Ids for the new vehicles
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->owner == new_player) {
|
||||
if (v->type == VEH_Train && v->subtype == 0)
|
||||
if (v->type == VEH_Train && v->subtype == TS_Front_Engine)
|
||||
num_train++;
|
||||
else if (v->type == VEH_Road)
|
||||
num_road++;
|
||||
@@ -331,7 +330,7 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
|
||||
DeleteVehicle(v);
|
||||
} else {
|
||||
v->owner = new_player;
|
||||
if (v->type == VEH_Train && v->subtype == 0)
|
||||
if (v->type == VEH_Train && v->subtype == TS_Front_Engine)
|
||||
v->unitnumber = ++num_train;
|
||||
else if (v->type == VEH_Road)
|
||||
v->unitnumber = ++num_road;
|
||||
@@ -349,7 +348,7 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
|
||||
uint tile = 0;
|
||||
do {
|
||||
ChangeTileOwner(tile, old_player, new_player);
|
||||
} while (++tile != TILES_X * TILES_Y);
|
||||
} while (++tile != MapSize());
|
||||
}
|
||||
|
||||
// Change color of existing windows
|
||||
@@ -585,7 +584,7 @@ StringID GetNewsStringBankrupcy(NewsItem *ni)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void PlayersGenStatistics()
|
||||
static void PlayersGenStatistics(void)
|
||||
{
|
||||
Station *st;
|
||||
Player *p;
|
||||
@@ -634,7 +633,7 @@ static void AddSingleInflation(int32 *value, uint16 *frac, int32 amt)
|
||||
*value += (int32)(tmp >> 16) + (low >> 16);
|
||||
}
|
||||
|
||||
static void AddInflation()
|
||||
static void AddInflation(void)
|
||||
{
|
||||
int i;
|
||||
int32 inf = _economy.infl_amount * 54;
|
||||
@@ -658,11 +657,12 @@ static void AddInflation()
|
||||
}
|
||||
|
||||
InvalidateWindowClasses(WC_BUILD_VEHICLE);
|
||||
InvalidateWindowClasses(WC_REPLACE_VEHICLE);
|
||||
InvalidateWindowClasses(WC_VEHICLE_DETAILS);
|
||||
InvalidateWindow(WC_PAYMENT_RATES, 0);
|
||||
}
|
||||
|
||||
static void PlayersPayInterest()
|
||||
static void PlayersPayInterest(void)
|
||||
{
|
||||
Player *p;
|
||||
int interest = _economy.interest_rate * 54;
|
||||
@@ -681,7 +681,7 @@ static void PlayersPayInterest()
|
||||
}
|
||||
}
|
||||
|
||||
static void HandleEconomyFluctuations()
|
||||
static void HandleEconomyFluctuations(void)
|
||||
{
|
||||
if (_opt.diff.economy == 0)
|
||||
return;
|
||||
@@ -757,7 +757,7 @@ static const int32 _price_base[NUM_PRICES] = {
|
||||
1000000, // build_industry
|
||||
};
|
||||
|
||||
void StartupEconomy()
|
||||
void StartupEconomy(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -798,7 +798,7 @@ Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode)
|
||||
if (s->age < 12) {
|
||||
if (!(s->cargo_type == CT_PASSENGERS || s->cargo_type == CT_MAIL)) {
|
||||
SetDParam(1, STR_2029);
|
||||
i = DEREF_INDUSTRY(s->from);
|
||||
i = GetIndustry(s->from);
|
||||
tile = i->xy;
|
||||
SetDParam(2, i->town->townnametype);
|
||||
SetDParam(3, i->town->townnameparts);
|
||||
@@ -807,34 +807,34 @@ Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode)
|
||||
|
||||
if (s->cargo_type != CT_GOODS && s->cargo_type != CT_FOOD) {
|
||||
SetDParam(5, STR_2029);
|
||||
i = DEREF_INDUSTRY(s->to);
|
||||
i = GetIndustry(s->to);
|
||||
tile2 = i->xy;
|
||||
SetDParam(8, i->type + STR_4802_COAL_MINE);
|
||||
SetDParam(6, i->town->townnametype);
|
||||
SetDParam(7, i->town->townnameparts);
|
||||
} else {
|
||||
t = DEREF_TOWN(s->to);
|
||||
t = GetTown(s->to);
|
||||
tile2 = t->xy;
|
||||
SetDParam(5, t->townnametype);
|
||||
SetDParam(6, t->townnameparts);
|
||||
}
|
||||
} else {
|
||||
t = DEREF_TOWN(s->from);
|
||||
t = GetTown(s->from);
|
||||
tile = t->xy;
|
||||
SetDParam(1, t->townnametype);
|
||||
SetDParam(2, t->townnameparts);
|
||||
|
||||
t = DEREF_TOWN(s->to);
|
||||
t = GetTown(s->to);
|
||||
tile2 = t->xy;
|
||||
SetDParam(3, t->townnametype);
|
||||
SetDParam(4, t->townnameparts);
|
||||
}
|
||||
} else {
|
||||
st = DEREF_STATION(s->from);
|
||||
st = GetStation(s->from);
|
||||
tile = st->xy;
|
||||
SetDParam(1, st->index);
|
||||
|
||||
st = DEREF_STATION(s->to);
|
||||
st = GetStation(s->to);
|
||||
tile2 = st->xy;
|
||||
SetDParam(2, st->index);
|
||||
}
|
||||
@@ -845,7 +845,7 @@ Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode)
|
||||
return tp;
|
||||
}
|
||||
|
||||
void DeleteSubsidyWithIndustry(byte index)
|
||||
void DeleteSubsidyWithIndustry(uint16 index)
|
||||
{
|
||||
Subsidy *s;
|
||||
|
||||
@@ -858,7 +858,7 @@ void DeleteSubsidyWithIndustry(byte index)
|
||||
}
|
||||
}
|
||||
|
||||
void DeleteSubsidyWithStation(byte index)
|
||||
void DeleteSubsidyWithStation(uint16 index)
|
||||
{
|
||||
Subsidy *s;
|
||||
bool dirty = false;
|
||||
@@ -888,11 +888,11 @@ static void FindSubsidyPassengerRoute(FoundRoute *fr)
|
||||
|
||||
fr->distance = (uint)-1;
|
||||
|
||||
fr->from = from = DEREF_TOWN(RandomRange(_total_towns));
|
||||
fr->from = from = GetTown(RandomRange(_total_towns));
|
||||
if (from->xy == 0 || from->population < 400)
|
||||
return;
|
||||
|
||||
fr->to = to = DEREF_TOWN(RandomRange(_total_towns));
|
||||
fr->to = to = GetTown(RandomRange(_total_towns));
|
||||
if (from==to || to->xy == 0 || to->population < 400 || to->pct_pass_transported > 42)
|
||||
return;
|
||||
|
||||
@@ -907,7 +907,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
|
||||
|
||||
fr->distance = (uint)-1;
|
||||
|
||||
fr->from = i = DEREF_INDUSTRY(RandomRange(_total_industries));
|
||||
fr->from = i = GetIndustry(RandomRange(_total_industries));
|
||||
if (i->xy == 0)
|
||||
return;
|
||||
|
||||
@@ -932,7 +932,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
|
||||
|
||||
if (cargo == CT_GOODS || cargo == CT_FOOD) {
|
||||
// The destination is a town
|
||||
Town *t = DEREF_TOWN(RandomRange(_total_towns));
|
||||
Town *t = GetTown(RandomRange(_total_towns));
|
||||
|
||||
// Only want big towns
|
||||
if (t->xy == 0 || t->population < 900)
|
||||
@@ -941,7 +941,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
|
||||
fr->to = t;
|
||||
} else {
|
||||
// The destination is an industry
|
||||
Industry *i2 = DEREF_INDUSTRY(RandomRange(_total_industries));
|
||||
Industry *i2 = GetIndustry(RandomRange(_total_industries));
|
||||
|
||||
// The industry must accept the cargo
|
||||
if (i == i2 || i2->xy == 0 ||
|
||||
@@ -989,7 +989,7 @@ void RemoteSubsidyAdd(Subsidy *s_new)
|
||||
InvalidateWindow(WC_SUBSIDIES_LIST, 0);
|
||||
}
|
||||
|
||||
static void SubsidyMonthlyHandler()
|
||||
static void SubsidyMonthlyHandler(void)
|
||||
{
|
||||
Subsidy *s;
|
||||
Pair pair;
|
||||
@@ -1008,7 +1008,7 @@ static void SubsidyMonthlyHandler()
|
||||
s->cargo_type = 0xFF;
|
||||
modified = true;
|
||||
} else if (s->age == 2*12-1) {
|
||||
st = DEREF_STATION(s->to);
|
||||
st = GetStation(s->to);
|
||||
if (st->owner == _local_player) {
|
||||
pair = SetupSubsidyDecodeParam(s, 1);
|
||||
AddNewsItem(STR_202F_SUBSIDY_WITHDRAWN_SERVICE, NEWS_FLAGS(NM_NORMAL, NF_TILE, NT_SUBSIDIES, 0), pair.a, pair.b);
|
||||
@@ -1041,8 +1041,8 @@ static void SubsidyMonthlyHandler()
|
||||
FindSubsidyCargoRoute(&fr);
|
||||
if (fr.distance <= 70) {
|
||||
s->cargo_type = fr.cargo;
|
||||
s->from = (Industry*)fr.from - _industries;
|
||||
s->to = (fr.cargo == CT_GOODS || fr.cargo == CT_FOOD) ? ((Town*)fr.to)->index : (Industry*)fr.to - _industries;
|
||||
s->from = ((Industry*)fr.from)->index;
|
||||
s->to = (fr.cargo == CT_GOODS || fr.cargo == CT_FOOD) ? ((Town*)fr.to)->index : ((Industry*)fr.to)->index;
|
||||
add_subsidy:
|
||||
if (!CheckSubsidyDuplicate(s)) {
|
||||
s->age = 0;
|
||||
@@ -1062,12 +1062,14 @@ no_add:;
|
||||
static const byte _subsidies_desc[] = {
|
||||
SLE_VAR(Subsidy,cargo_type, SLE_UINT8),
|
||||
SLE_VAR(Subsidy,age, SLE_UINT8),
|
||||
SLE_VAR(Subsidy,from, SLE_UINT8),
|
||||
SLE_VAR(Subsidy,to, SLE_UINT8),
|
||||
SLE_CONDVAR(Subsidy,from, SLE_FILE_U8 | SLE_VAR_U16, 0, 4),
|
||||
SLE_CONDVAR(Subsidy,from, SLE_UINT16, 5, 255),
|
||||
SLE_CONDVAR(Subsidy,to, SLE_FILE_U8 | SLE_VAR_U16, 0, 4),
|
||||
SLE_CONDVAR(Subsidy,to, SLE_UINT16, 5, 255),
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
static void Save_SUBS()
|
||||
static void Save_SUBS(void)
|
||||
{
|
||||
int i;
|
||||
Subsidy *s;
|
||||
@@ -1081,7 +1083,7 @@ static void Save_SUBS()
|
||||
}
|
||||
}
|
||||
|
||||
static void Load_SUBS()
|
||||
static void Load_SUBS(void)
|
||||
{
|
||||
int index;
|
||||
while ((index = SlIterateArray()) != -1)
|
||||
@@ -1125,7 +1127,7 @@ static void DeliverGoodsToIndustry(TileIndex xy, byte cargo_type, int num_pieces
|
||||
* the cargo */
|
||||
best = NULL;
|
||||
u = _patches.station_spread + 8;
|
||||
for(ind = _industries; ind != endof(_industries); ind++) {
|
||||
FOR_ALL_INDUSTRIES(ind) {
|
||||
if (ind->xy != 0 && (cargo_type == ind->accepts_cargo[0] || cargo_type
|
||||
== ind->accepts_cargo[1] || cargo_type == ind->accepts_cargo[2]) &&
|
||||
ind->produced_cargo[0] != 0xFF &&
|
||||
@@ -1165,18 +1167,18 @@ static bool CheckSubsidised(Station *from, Station *to, byte cargo_type)
|
||||
|
||||
/* Check distance from source */
|
||||
if (cargo_type == CT_PASSENGERS || cargo_type == CT_MAIL) {
|
||||
xy = DEREF_TOWN(s->from)->xy;
|
||||
xy = GetTown(s->from)->xy;
|
||||
} else {
|
||||
xy = (DEREF_INDUSTRY(s->from))->xy;
|
||||
xy = (GetIndustry(s->from))->xy;
|
||||
}
|
||||
if (GetTileDist1D(xy, from->xy) > 9)
|
||||
continue;
|
||||
|
||||
/* Check distance from dest */
|
||||
if (cargo_type == CT_PASSENGERS || cargo_type == CT_MAIL || cargo_type == CT_GOODS || cargo_type == CT_FOOD) {
|
||||
xy = DEREF_TOWN(s->to)->xy;
|
||||
xy = GetTown(s->to)->xy;
|
||||
} else {
|
||||
xy = (DEREF_INDUSTRY(s->to))->xy;
|
||||
xy = (GetIndustry(s->to))->xy;
|
||||
}
|
||||
|
||||
if (GetTileDist1D(xy, to->xy) > 9)
|
||||
@@ -1222,8 +1224,8 @@ static int32 DeliverGoods(int num_pieces, byte cargo_type, byte source, byte des
|
||||
}
|
||||
|
||||
// Get station pointers.
|
||||
s_from = DEREF_STATION(source);
|
||||
s_to = DEREF_STATION(dest);
|
||||
s_from = GetStation(source);
|
||||
s_to = GetStation(dest);
|
||||
|
||||
// Check if a subsidy applies.
|
||||
subsidised = CheckSubsidised(s_from, s_to, cargo_type);
|
||||
@@ -1296,7 +1298,7 @@ static bool LoadWait(const Vehicle *v, const Vehicle *u) {
|
||||
}
|
||||
|
||||
FOR_ALL_VEHICLES(x) {
|
||||
if ((x->type != VEH_Train || x->subtype == 0) && // for all locs
|
||||
if ((x->type != VEH_Train || x->subtype == TS_Front_Engine) && // for all locs
|
||||
u->last_station_visited == x->last_station_visited && // at the same station
|
||||
!(x->vehstatus & VS_STOPPED) && // not stopped
|
||||
x->current_order.type == OT_LOADING && // loading
|
||||
@@ -1347,7 +1349,7 @@ int LoadUnloadVehicle(Vehicle *v)
|
||||
old_player = _current_player;
|
||||
_current_player = v->owner;
|
||||
|
||||
st = DEREF_STATION(last_visited = v->last_station_visited);
|
||||
st = GetStation(last_visited = v->last_station_visited);
|
||||
|
||||
for (; v != NULL; v = v->next) {
|
||||
if (v->cargo_cap == 0) continue;
|
||||
@@ -1472,7 +1474,7 @@ int LoadUnloadVehicle(Vehicle *v)
|
||||
return result;
|
||||
}
|
||||
|
||||
void PlayersMonthlyLoop()
|
||||
void PlayersMonthlyLoop(void)
|
||||
{
|
||||
PlayersGenStatistics();
|
||||
if (_patches.inflation)
|
||||
@@ -1517,6 +1519,7 @@ static void DoAcquireCompany(Player *p)
|
||||
p->is_active = false;
|
||||
|
||||
DeletePlayerWindows(pi);
|
||||
RebuildVehicleLists(); //Updates the open windows to add the newly acquired vehicles to the lists
|
||||
}
|
||||
|
||||
extern int GetAmountOwnedBy(Player *p, byte owner);
|
||||
@@ -1531,9 +1534,20 @@ int32 CmdBuyShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
SET_EXPENSES_TYPE(EXPENSES_OTHER);
|
||||
p = DEREF_PLAYER(p1);
|
||||
|
||||
|
||||
if (_cur_year - p->inaugurated_year < 6) {
|
||||
_error_message = STR_7080_PROTECTED;
|
||||
return CMD_ERROR;
|
||||
}
|
||||
|
||||
/* Check if buying shares is allowed (protection against modified clients */
|
||||
if (!_patches.allow_shares)
|
||||
return CMD_ERROR;
|
||||
|
||||
/* Those lines are here for network-protection (clients can be slow) */
|
||||
if (GetAmountOwnedBy(p, OWNER_SPECTATOR) == 0)
|
||||
return 0;
|
||||
|
||||
/* We can not buy out a real player in networking */
|
||||
if (GetAmountOwnedBy(p, OWNER_SPECTATOR) == 1 && !p->is_ai)
|
||||
return 0;
|
||||
@@ -1565,6 +1579,10 @@ int32 CmdSellShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
SET_EXPENSES_TYPE(EXPENSES_OTHER);
|
||||
p = DEREF_PLAYER(p1);
|
||||
|
||||
/* Check if selling shares is allowed (protection against modified clients */
|
||||
if (!_patches.allow_shares)
|
||||
return CMD_ERROR;
|
||||
|
||||
/* Those lines are here for network-protection (clients can be slow) */
|
||||
if (GetAmountOwnedBy(p, _current_player) == 0)
|
||||
return 0;
|
||||
@@ -1594,14 +1612,14 @@ int32 CmdBuyCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
}
|
||||
|
||||
// Prices
|
||||
static void SaveLoad_PRIC()
|
||||
static void SaveLoad_PRIC(void)
|
||||
{
|
||||
SlArray(&_price, NUM_PRICES, SLE_INT32);
|
||||
SlArray(&_price_frac, NUM_PRICES, SLE_UINT16);
|
||||
}
|
||||
|
||||
// Cargo payment rates
|
||||
static void SaveLoad_CAPR()
|
||||
static void SaveLoad_CAPR(void)
|
||||
{
|
||||
SlArray(&_cargo_payment_rates, NUM_CARGO, SLE_INT32);
|
||||
SlArray(&_cargo_payment_rates_frac, NUM_CARGO, SLE_UINT16);
|
||||
@@ -1618,7 +1636,7 @@ static const byte _economy_desc[] = {
|
||||
};
|
||||
|
||||
// Economy variables
|
||||
static void SaveLoad_ECMY()
|
||||
static void SaveLoad_ECMY(void)
|
||||
{
|
||||
SlObject(&_economy, &_economy_desc);
|
||||
}
|
||||
|
||||
@@ -18,8 +18,8 @@ VARDEF Economy _economy;
|
||||
typedef struct Subsidy {
|
||||
byte cargo_type;
|
||||
byte age;
|
||||
byte from;
|
||||
byte to;
|
||||
uint16 from;
|
||||
uint16 to;
|
||||
} Subsidy;
|
||||
|
||||
|
||||
@@ -68,8 +68,8 @@ void UpdatePlayerHouse(Player *p, uint score);
|
||||
|
||||
VARDEF Subsidy _subsidies[MAX_PLAYERS];
|
||||
Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode);
|
||||
void DeleteSubsidyWithIndustry(byte index);
|
||||
void DeleteSubsidyWithStation(byte index);
|
||||
void DeleteSubsidyWithIndustry(uint16 index);
|
||||
void DeleteSubsidyWithStation(uint16 index);
|
||||
void RemoteSubsidyAdd(Subsidy *s_new);
|
||||
|
||||
int32 GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, byte cargo_type);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "table/strings.h"
|
||||
#include "engine.h"
|
||||
#include "table/engines.h"
|
||||
#include "gfx.h"
|
||||
#include "player.h"
|
||||
#include "command.h"
|
||||
#include "vehicle.h"
|
||||
@@ -49,7 +50,7 @@ byte _local_cargo_id_landscape[NUM_CID] = {
|
||||
|
||||
void ShowEnginePreviewWindow(int engine);
|
||||
|
||||
void DeleteCustomEngineNames()
|
||||
void DeleteCustomEngineNames(void)
|
||||
{
|
||||
uint i;
|
||||
StringID old;
|
||||
@@ -63,13 +64,13 @@ void DeleteCustomEngineNames()
|
||||
_vehicle_design_names &= ~1;
|
||||
}
|
||||
|
||||
void LoadCustomEngineNames()
|
||||
void LoadCustomEngineNames(void)
|
||||
{
|
||||
// XXX: not done */
|
||||
DEBUG(misc, 1) ("LoadCustomEngineNames: not done");
|
||||
}
|
||||
|
||||
static void SetupEngineNames()
|
||||
static void SetupEngineNames(void)
|
||||
{
|
||||
uint i;
|
||||
|
||||
@@ -80,7 +81,7 @@ static void SetupEngineNames()
|
||||
LoadCustomEngineNames();
|
||||
}
|
||||
|
||||
static void AdjustAvailAircraft()
|
||||
static void AdjustAvailAircraft(void)
|
||||
{
|
||||
uint16 date = _date;
|
||||
byte avail = 0;
|
||||
@@ -115,16 +116,39 @@ static void CalcEngineReliability(Engine *e)
|
||||
}
|
||||
}
|
||||
|
||||
void StartupEngines()
|
||||
void AddTypeToEngines(void)
|
||||
{
|
||||
Engine *e;
|
||||
uint32 counter = 0;
|
||||
|
||||
for(e=_engines; e != endof(_engines); e++, counter++) {
|
||||
|
||||
e->type = VEH_Train;
|
||||
if (counter >= ROAD_ENGINES_INDEX) {
|
||||
e->type = VEH_Road;
|
||||
if (counter >= SHIP_ENGINES_INDEX) {
|
||||
e->type = VEH_Ship;
|
||||
if (counter >= AIRCRAFT_ENGINES_INDEX) {
|
||||
e->type = VEH_Aircraft;
|
||||
if (counter >= TOTAL_NUM_ENGINES) {
|
||||
e->type = VEH_Special;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void StartupEngines(void)
|
||||
{
|
||||
Engine *e;
|
||||
const EngineInfo *ei;
|
||||
uint32 r;
|
||||
uint32 r, counter = 0;
|
||||
|
||||
SetupEngineNames();
|
||||
|
||||
for(e=_engines, ei=_engine_info; e != endof(_engines); e++, ei++, counter++) {
|
||||
|
||||
for(e=_engines, ei=_engine_info; e != endof(_engines); e++,ei++) {
|
||||
e->age = 0;
|
||||
e->railtype = ei->railtype_climates >> 4;
|
||||
e->flags = 0;
|
||||
@@ -164,6 +188,12 @@ void StartupEngines()
|
||||
e->flags |= ENGINE_AVAILABLE;
|
||||
e->player_avail = 0;
|
||||
}
|
||||
|
||||
/* This sets up type for the engine
|
||||
It is needed if you want to ask the engine what type it is
|
||||
It should hopefully be the same as when you ask a vehicle what it is
|
||||
but using this, you can ask what type an engine number is
|
||||
even if it is not a vehicle (yet)*/
|
||||
}
|
||||
|
||||
AdjustAvailAircraft();
|
||||
@@ -376,8 +406,8 @@ ResolveVehicleSpriteGroup(struct SpriteGroup *spritegroup, struct Vehicle *veh,
|
||||
veh_prop(0x57, veh->profit_last_year & 0xFF);
|
||||
veh_prop(0x58, veh->profit_last_year);
|
||||
veh_prop(0x59, veh->profit_last_year & 0xFF);
|
||||
veh_prop(0x5A, veh->next_in_chain_old);
|
||||
veh_prop(0x5B, veh->next_in_chain_old & 0xFF);
|
||||
/* veh_prop(0x5A, veh->next_in_chain_old);
|
||||
veh_prop(0x5B, veh->next_in_chain_old & 0xFF);*/
|
||||
veh_prop(0x5C, veh->value);
|
||||
veh_prop(0x5D, veh->value & 0xFFFFFF);
|
||||
veh_prop(0x5E, veh->value & 0xFFFF);
|
||||
@@ -621,9 +651,10 @@ void AcceptEnginePreview(Engine *e, int player)
|
||||
|
||||
e->preview_player = 0xFF;
|
||||
InvalidateWindowClasses(WC_BUILD_VEHICLE);
|
||||
InvalidateWindowClasses(WC_REPLACE_VEHICLE);
|
||||
}
|
||||
|
||||
void EnginesDailyLoop()
|
||||
void EnginesDailyLoop(void)
|
||||
{
|
||||
Engine *e;
|
||||
int i,num;
|
||||
@@ -688,14 +719,9 @@ int32 CmdWantEnginePreview(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
}
|
||||
|
||||
// Determine if an engine type is a wagon (and not a loco)
|
||||
bool isWagon(byte index)
|
||||
static bool IsWagon(byte index)
|
||||
{
|
||||
if (index < NUM_TRAIN_ENGINES) {
|
||||
const RailVehicleInfo *rvi = &_rail_vehicle_info[index];
|
||||
if(rvi->flags & RVI_WAGON)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return index < NUM_TRAIN_ENGINES && RailVehInfo(index)->flags & RVI_WAGON;
|
||||
}
|
||||
|
||||
static void NewVehicleAvailable(Engine *e)
|
||||
@@ -708,17 +734,22 @@ static void NewVehicleAvailable(Engine *e)
|
||||
// prevent that player from getting future intro periods for a while.
|
||||
if (e->flags&ENGINE_INTRODUCING) {
|
||||
FOR_ALL_PLAYERS(p) {
|
||||
uint block_preview = p->block_preview;
|
||||
|
||||
if (!HASBIT(e->player_avail,p->index))
|
||||
continue;
|
||||
|
||||
for(v=_vehicles;;) {
|
||||
/* We assume the user did NOT build it.. prove me wrong ;) */
|
||||
p->block_preview = 20;
|
||||
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->type == VEH_Train || v->type == VEH_Road || v->type == VEH_Ship ||
|
||||
(v->type == VEH_Aircraft && v->subtype <= 2)) {
|
||||
if (v->owner == p->index && v->engine_type == index) break;
|
||||
}
|
||||
if (++v == endof(_vehicles)) {
|
||||
p->block_preview = 20;
|
||||
break;
|
||||
if (v->owner == p->index && v->engine_type == index) {
|
||||
/* The user did prove me wrong, so restore old value */
|
||||
p->block_preview = block_preview;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -726,12 +757,13 @@ static void NewVehicleAvailable(Engine *e)
|
||||
|
||||
e->flags = (e->flags & ~ENGINE_INTRODUCING) | ENGINE_AVAILABLE;
|
||||
InvalidateWindowClasses(WC_BUILD_VEHICLE);
|
||||
InvalidateWindowClasses(WC_REPLACE_VEHICLE);
|
||||
|
||||
// Now available for all players
|
||||
e->player_avail = (byte)-1;
|
||||
|
||||
// Do not introduce new rail wagons
|
||||
if(isWagon(index))
|
||||
if (IsWagon(index))
|
||||
return;
|
||||
|
||||
// make maglev / monorail available
|
||||
@@ -751,7 +783,7 @@ static void NewVehicleAvailable(Engine *e)
|
||||
}
|
||||
}
|
||||
|
||||
void EnginesMonthlyLoop()
|
||||
void EnginesMonthlyLoop(void)
|
||||
{
|
||||
Engine *e;
|
||||
|
||||
@@ -771,7 +803,7 @@ void EnginesMonthlyLoop()
|
||||
e->flags |= ENGINE_INTRODUCING;
|
||||
|
||||
// Do not introduce new rail wagons
|
||||
if(!isWagon(e - _engines))
|
||||
if (!IsWagon(e - _engines))
|
||||
e->preview_player = 1; // Give to the player with the highest rating.
|
||||
}
|
||||
}
|
||||
@@ -846,7 +878,7 @@ static const byte _engine_desc[] = {
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
static void Save_ENGN()
|
||||
static void Save_ENGN(void)
|
||||
{
|
||||
Engine *e;
|
||||
int i;
|
||||
@@ -856,7 +888,7 @@ static void Save_ENGN()
|
||||
}
|
||||
}
|
||||
|
||||
static void Load_ENGN()
|
||||
static void Load_ENGN(void)
|
||||
{
|
||||
int index;
|
||||
while ((index = SlIterateArray()) != -1) {
|
||||
@@ -864,7 +896,7 @@ static void Load_ENGN()
|
||||
}
|
||||
}
|
||||
|
||||
static void LoadSave_ENGS()
|
||||
static void LoadSave_ENGS(void)
|
||||
{
|
||||
SlArray(_engine_name_strings, lengthof(_engine_name_strings), SLE_STRINGID);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ typedef struct AircraftVehicleInfo {
|
||||
byte acceleration;
|
||||
byte max_speed;
|
||||
byte mail_capacity;
|
||||
uint16 passanger_capacity;
|
||||
uint16 passenger_capacity;
|
||||
} AircraftVehicleInfo;
|
||||
|
||||
typedef struct RoadVehicleInfo {
|
||||
@@ -70,6 +70,7 @@ typedef struct Engine {
|
||||
byte preview_wait;
|
||||
byte railtype;
|
||||
byte player_avail;
|
||||
byte type; // type, ie VEH_Road, VEH_Train, etc. Same as in vehicle.h
|
||||
} Engine;
|
||||
|
||||
|
||||
@@ -79,7 +80,8 @@ enum {
|
||||
};
|
||||
|
||||
|
||||
void StartupEngines();
|
||||
void AddTypeToEngines(void);
|
||||
void StartupEngines(void);
|
||||
|
||||
|
||||
extern byte _global_cargo_id[NUM_LANDSCAPE][NUM_CARGO];
|
||||
@@ -128,8 +130,8 @@ void DrawAircraftEngineInfo(int engine, int x, int y, int maxw);
|
||||
|
||||
void AcceptEnginePreview(Engine *e, int player);
|
||||
|
||||
void LoadCustomEngineNames();
|
||||
void DeleteCustomEngineNames();
|
||||
void LoadCustomEngineNames(void);
|
||||
void DeleteCustomEngineNames(void);
|
||||
|
||||
|
||||
enum {
|
||||
|
||||
@@ -9,11 +9,8 @@
|
||||
#include "command.h"
|
||||
#include "news.h"
|
||||
|
||||
void DrawShipEngine(int x, int y, int engine, uint32 image_ormod);
|
||||
void DrawShipEngineInfo(int engine, int x, int y, int maxw);
|
||||
|
||||
|
||||
StringID GetEngineCategoryName(byte engine)
|
||||
static StringID GetEngineCategoryName(byte engine)
|
||||
{
|
||||
if (engine < NUM_TRAIN_ENGINES) {
|
||||
switch (_engines[engine].railtype) {
|
||||
@@ -36,11 +33,11 @@ StringID GetEngineCategoryName(byte engine)
|
||||
}
|
||||
|
||||
static const Widget _engine_preview_widgets[] = {
|
||||
{ WWT_TEXTBTN, 5, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 5, 11, 299, 0, 13, STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, 5, 0, 299, 14, 191, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, 5, 85, 144, 172, 183, STR_00C9_NO, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, 5, 155, 214, 172, 183, STR_00C8_YES, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 5, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 5, 11, 299, 0, 13, STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 5, 0, 299, 14, 191, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 5, 85, 144, 172, 183, STR_00C9_NO, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 5, 155, 214, 172, 183, STR_00C8_YES, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "stdafx.h"
|
||||
#include "ttd.h"
|
||||
#if defined(UNIX)
|
||||
#include "fileio.h"
|
||||
#if defined(UNIX) || defined(__OS2__)
|
||||
#include <ctype.h> // required for tolower()
|
||||
#endif
|
||||
|
||||
@@ -21,7 +22,7 @@ typedef struct {
|
||||
static Fio _fio;
|
||||
|
||||
// Get current position in file
|
||||
uint32 FioGetPos()
|
||||
uint32 FioGetPos(void)
|
||||
{
|
||||
return _fio.pos + (_fio.buffer - _fio.buffer_start) - FIO_BUFFER_SIZE;
|
||||
}
|
||||
@@ -42,7 +43,7 @@ void FioSeekToFile(uint32 pos)
|
||||
FioSeekTo(pos & 0xFFFFFF, SEEK_SET);
|
||||
}
|
||||
|
||||
byte FioReadByte()
|
||||
byte FioReadByte(void)
|
||||
{
|
||||
if (_fio.buffer == _fio.buffer_end) {
|
||||
_fio.pos += FIO_BUFFER_SIZE;
|
||||
@@ -64,13 +65,13 @@ void FioSkipBytes(int n)
|
||||
}
|
||||
|
||||
|
||||
uint16 FioReadWord()
|
||||
uint16 FioReadWord(void)
|
||||
{
|
||||
byte b = FioReadByte();
|
||||
return (FioReadByte() << 8) | b;
|
||||
}
|
||||
|
||||
uint32 FioReadDword()
|
||||
uint32 FioReadDword(void)
|
||||
{
|
||||
uint b = FioReadWord();
|
||||
return (FioReadWord() << 16) | b;
|
||||
@@ -83,16 +84,20 @@ void FioReadBlock(void *ptr, uint size)
|
||||
fread(ptr, 1, size, _fio.cur_fh);
|
||||
}
|
||||
|
||||
void FioCloseAll()
|
||||
static inline void FioCloseFile(int slot)
|
||||
{
|
||||
if (_fio.handles[slot] != NULL) {
|
||||
fclose(_fio.handles[slot]);
|
||||
_fio.handles[slot] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void FioCloseAll(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0; i!=lengthof(_fio.handles); i++) {
|
||||
if (_fio.handles[i] != NULL) {
|
||||
fclose(_fio.handles[i]);
|
||||
_fio.handles[i] = NULL;
|
||||
}
|
||||
}
|
||||
for (i = 0; i != lengthof(_fio.handles); i++)
|
||||
FioCloseFile(i);
|
||||
}
|
||||
|
||||
void FioOpenFile(int slot, const char *filename)
|
||||
@@ -110,7 +115,7 @@ void FioOpenFile(int slot, const char *filename)
|
||||
for(s=buf + strlen(_path.data_dir) - 1; *s != 0; s++)
|
||||
*s = tolower(*s);
|
||||
f = fopen(buf, "rb");
|
||||
|
||||
|
||||
#if defined SECOND_DATA_DIR
|
||||
// tries in the 2nd data directory
|
||||
if (f == NULL) {
|
||||
@@ -126,6 +131,7 @@ void FioOpenFile(int slot, const char *filename)
|
||||
if (f == NULL)
|
||||
error("Cannot open file '%s'", buf);
|
||||
|
||||
FioCloseFile(slot); // if file was opened before, close it
|
||||
_fio.handles[slot] = f;
|
||||
FioSeekToFile(slot << 24);
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
void FioSeekTo(uint32 pos, int mode);
|
||||
void FioSeekToFile(uint32 pos);
|
||||
uint32 FioGetPos();
|
||||
byte FioReadByte();
|
||||
uint16 FioReadWord();
|
||||
uint32 FioReadDword();
|
||||
void FioCloseAll();
|
||||
uint32 FioGetPos(void);
|
||||
byte FioReadByte(void);
|
||||
uint16 FioReadWord(void);
|
||||
uint32 FioReadDword(void);
|
||||
void FioCloseAll(void);
|
||||
void FioOpenFile(int slot, const char *filename);
|
||||
void FioReadBlock(void *ptr, uint size);
|
||||
void FioSkipBytes(int n);
|
||||
|
||||
@@ -16,7 +16,7 @@ void DoClearSquare(uint tile);
|
||||
void CDECL ModifyTile(uint tile, uint flags, ...);
|
||||
void SetMapExtraBits(uint tile, byte flags);
|
||||
uint GetMapExtraBits(uint tile);
|
||||
void RunTileLoop();
|
||||
void RunTileLoop(void);
|
||||
|
||||
uint GetPartialZ(int x, int y, int corners);
|
||||
uint GetSlopeZ(int x, int y);
|
||||
@@ -58,10 +58,10 @@ static inline Point RemapCoords2(int x, int y)
|
||||
byte *GetString(byte *buffr, uint16 string);
|
||||
void InjectDparam(int amount);
|
||||
|
||||
int32 GetParamInt32();
|
||||
int GetParamInt16();
|
||||
int GetParamInt8();
|
||||
int GetParamUint16();
|
||||
int32 GetParamInt32(void);
|
||||
int GetParamInt16(void);
|
||||
int GetParamInt8(void);
|
||||
int GetParamUint16(void);
|
||||
|
||||
|
||||
/* clear_land.c */
|
||||
@@ -113,17 +113,17 @@ void NORETURN CDECL error(const char *str, ...);
|
||||
|
||||
#ifdef RANDOM_DEBUG
|
||||
#define Random() DoRandom(__LINE__, __FILE__)
|
||||
uint32 DoRandom(uint line, char *file);
|
||||
uint32 DoRandom(int line, const char *file);
|
||||
#define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
|
||||
uint DoRandomRange(uint max, uint line, char *file);
|
||||
uint DoRandomRange(uint max, int line, const char *file);
|
||||
#else
|
||||
uint32 Random();
|
||||
uint32 Random(void);
|
||||
uint RandomRange(uint max);
|
||||
#endif
|
||||
|
||||
void InitPlayerRandoms();
|
||||
void InitPlayerRandoms(void);
|
||||
|
||||
uint32 InteractiveRandom(); /* Used for random sequences that are not the same on the other end of the multiplayer link */
|
||||
uint32 InteractiveRandom(void); /* Used for random sequences that are not the same on the other end of the multiplayer link */
|
||||
uint InteractiveRandomRange(uint max);
|
||||
|
||||
void SetDate(uint date);
|
||||
@@ -131,21 +131,21 @@ void SetDate(uint date);
|
||||
void DrawPlayerFace(uint32 face, int color, int x, int y);
|
||||
|
||||
/* texteff.c */
|
||||
void MoveAllTextEffects();
|
||||
void MoveAllTextEffects(void);
|
||||
void AddTextEffect(StringID msg, int x, int y, uint16 duration);
|
||||
void InitTextEffects();
|
||||
void InitTextEffects(void);
|
||||
void DrawTextEffects(DrawPixelInfo *dpi);
|
||||
|
||||
void InitTextMessage();
|
||||
void DrawTextMessage();
|
||||
void InitTextMessage(void);
|
||||
void DrawTextMessage(void);
|
||||
void CDECL AddTextMessage(uint16 color, uint8 duration, const char *message, ...);
|
||||
void UndrawTextMessage();
|
||||
void TextMessageDailyLoop();
|
||||
void UndrawTextMessage(void);
|
||||
void TextMessageDailyLoop(void);
|
||||
|
||||
bool AddAnimatedTile(uint tile);
|
||||
void DeleteAnimatedTile(uint tile);
|
||||
void AnimateAnimatedTiles();
|
||||
void InitializeAnimatedTiles();
|
||||
void AnimateAnimatedTiles(void);
|
||||
void InitializeAnimatedTiles(void);
|
||||
|
||||
/* tunnelbridge_cmd.c */
|
||||
bool CheckTunnelInWay(uint tile, int z);
|
||||
@@ -158,18 +158,18 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
|
||||
/* network.c */
|
||||
void NetworkUDPClose(void);
|
||||
void NetworkStartUp();
|
||||
void NetworkStartUp(void);
|
||||
void NetworkShutDown(void);
|
||||
void NetworkGameLoop(void);
|
||||
void NetworkUDPGameLoop(void);
|
||||
bool NetworkServerStart(void);
|
||||
bool NetworkClientConnectGame(const byte* host, unsigned short port);
|
||||
void NetworkReboot();
|
||||
void NetworkDisconnect();
|
||||
void NetworkReboot(void);
|
||||
void NetworkDisconnect(void);
|
||||
void NetworkSend_Command(uint32 tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback);
|
||||
|
||||
/* misc_cmd.c */
|
||||
void PlaceTreesRandomly();
|
||||
void PlaceTreesRandomly(void);
|
||||
|
||||
uint GetTileDist(TileIndex xy1, TileIndex xy2);
|
||||
uint GetTileDist1D(TileIndex xy1, TileIndex xy2);
|
||||
@@ -201,11 +201,12 @@ void InvalidateWindow(byte cls, WindowNumber number);
|
||||
void InvalidateWindowWidget(byte cls, WindowNumber number, byte widget_index);
|
||||
void InvalidateWindowClasses(byte cls);
|
||||
void DeleteWindowById(WindowClass cls, WindowNumber number);
|
||||
void DeleteWindowByClass(WindowClass cls);
|
||||
|
||||
void SetObjectToPlaceWnd(int icon, byte mode, Window *w);
|
||||
void SetObjectToPlace(int icon, byte mode, byte window_class, uint16 window_num);
|
||||
void SetObjectToPlace(int icon, byte mode, WindowClass window_class, WindowNumber window_num);
|
||||
|
||||
void ResetObjectToPlace();
|
||||
void ResetObjectToPlace(void);
|
||||
|
||||
bool ScrollWindowToTile(TileIndex tile, Window * w);
|
||||
bool ScrollWindowTo(int x, int y, Window * w);
|
||||
@@ -213,11 +214,11 @@ bool ScrollWindowTo(int x, int y, Window * w);
|
||||
bool ScrollMainWindowToTile(TileIndex tile);
|
||||
bool ScrollMainWindowTo(int x, int y);
|
||||
void DrawSprite(uint32 img, int x, int y);
|
||||
uint GetCorrectTileHeight(TileIndex tile);
|
||||
bool EnsureNoVehicle(TileIndex tile);
|
||||
bool EnsureNoVehicleZ(TileIndex tile, byte z);
|
||||
void MarkAllViewportsDirty(int left, int top, int right, int bottom);
|
||||
void ShowCostOrIncomeAnimation(int x, int y, int z, int32 cost);
|
||||
void MarkWholeScreenDirty();
|
||||
|
||||
void DrawFoundation(TileInfo *ti, uint f);
|
||||
|
||||
@@ -227,15 +228,14 @@ void ChangeTownRating(Town *t, int add, int max);
|
||||
|
||||
uint GetRoadBitsByTile(TileIndex tile);
|
||||
int GetTownRadiusGroup(Town *t, uint tile);
|
||||
int32 GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, byte cargo_type);
|
||||
void ShowNetworkChatQueryWindow(byte desttype, byte dest);
|
||||
void ShowNetworkGiveMoneyWindow(byte player);
|
||||
void ShowNetworkNeedGamePassword();
|
||||
void ShowNetworkNeedCompanyPassword();
|
||||
void ShowRenameSignWindow(SignStruct *ss);
|
||||
void ShowNetworkNeedGamePassword(void);
|
||||
void ShowNetworkNeedCompanyPassword(void);
|
||||
void ShowRenameWaypointWindow(Waypoint *cp);
|
||||
int FindFirstBit(uint32 x);
|
||||
void ShowHighscoreTable(int tbl);
|
||||
void ShowHighscoreTable(int difficulty, int8 rank);
|
||||
void ShowEndGameChart(void);
|
||||
TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
|
||||
|
||||
enum SaveOrLoadResult {
|
||||
@@ -252,11 +252,11 @@ enum SaveOrLoadMode {
|
||||
|
||||
int SaveOrLoad(const char *filename, int mode);
|
||||
|
||||
void AfterLoadTown();
|
||||
void AskExitGame();
|
||||
void AskExitToGameMenu();
|
||||
void AfterLoadTown(void);
|
||||
void AskExitGame(void);
|
||||
void AskExitToGameMenu(void);
|
||||
|
||||
void RedrawAutosave();
|
||||
void RedrawAutosave(void);
|
||||
|
||||
StringID RemapOldStringID(StringID s);
|
||||
|
||||
@@ -271,24 +271,25 @@ enum {
|
||||
};
|
||||
void ShowSaveLoadDialog(int mode);
|
||||
|
||||
void ttd_strlcpy(char *dst, const char *src, size_t len);
|
||||
void ttd_strlcpy(char *dst, const char *src, size_t size);
|
||||
void ttd_strlcat(char *dst, const char *src, size_t size);
|
||||
|
||||
// callback from drivers that is called if the game size changes dynamically
|
||||
void GameSizeChanged();
|
||||
void GameSizeChanged(void);
|
||||
bool FileExists(const char *filename);
|
||||
bool ReadLanguagePack(int index);
|
||||
void InitializeLanguagePacks();
|
||||
void InitializeLanguagePacks(void);
|
||||
byte *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize);
|
||||
int GetLanguageList(char **languages, int max);
|
||||
|
||||
void CheckSwitchToEuro();
|
||||
void CheckSwitchToEuro(void);
|
||||
|
||||
void LoadFromConfig();
|
||||
void SaveToConfig();
|
||||
void LoadFromConfig(void);
|
||||
void SaveToConfig(void);
|
||||
int ttd_main(int argc, char* argv[]);
|
||||
byte GetOSVersion();
|
||||
byte GetOSVersion(void);
|
||||
|
||||
void DeterminePaths();
|
||||
void DeterminePaths(void);
|
||||
char * CDECL str_fmt(const char *str, ...);
|
||||
|
||||
#endif /* FUNCTIONS_H */
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "hal.h"
|
||||
|
||||
static void GfxMainBlitter(byte *sprite, int x, int y, int mode);
|
||||
void GfxInitPalettes();
|
||||
|
||||
static int _stringwidth_out;
|
||||
static byte _cursor_backup[64*64];
|
||||
@@ -24,11 +23,11 @@ void memcpy_pitch(void *d, void *s, int w, int h, int spitch, int dpitch)
|
||||
byte *sp = (byte*)s;
|
||||
|
||||
assert(h >= 0);
|
||||
if (h != 0) do {
|
||||
for (; h != 0; --h) {
|
||||
memcpy(dp, sp, w);
|
||||
dp += dpitch;
|
||||
sp += spitch;
|
||||
} while (--h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -291,7 +290,8 @@ void DrawStringCenterUnderline(int x, int y, uint16 str, uint16 color)
|
||||
GfxFillRect(x-(w>>1), y+10, x-(w>>1)+w, y+10, _string_colorremap[1]);
|
||||
}
|
||||
|
||||
uint32 FormatStringLinebreaks(byte *str, int maxw) {
|
||||
static uint32 FormatStringLinebreaks(byte *str, int maxw)
|
||||
{
|
||||
int num = 0;
|
||||
int base = _stringwidth_base;
|
||||
int w;
|
||||
@@ -1484,9 +1484,9 @@ static void GfxScalePalette(int pal, byte scaling)
|
||||
}
|
||||
#endif
|
||||
|
||||
void DoPaletteAnimations();
|
||||
void DoPaletteAnimations(void);
|
||||
|
||||
void GfxInitPalettes()
|
||||
void GfxInitPalettes(void)
|
||||
{
|
||||
int pal = _use_dos_palette?1:0;
|
||||
memcpy(_cur_palette, _palettes[pal], 256*3);
|
||||
@@ -1500,14 +1500,14 @@ void GfxInitPalettes()
|
||||
#define EXTR2(p,q) (((uint16)(~_timer_counter * (p)) * (q)) >> 16)
|
||||
#define COPY_TRIPLET do {d[0]=s[0+j]; d[1]=s[1+j]; d[2]=s[2+j];d+=3;}while(0)
|
||||
|
||||
void DoPaletteAnimations()
|
||||
void DoPaletteAnimations(void)
|
||||
{
|
||||
const byte *s;
|
||||
byte *d;
|
||||
/* Amount of colors to be rotated.
|
||||
* A few more for the DOS palette, because the water colors are
|
||||
* 245-254 for DOS and 217-226 for Windows. */
|
||||
int c = _use_dos_palette?38:28;
|
||||
int c = _use_dos_palette?38:28;
|
||||
int j;
|
||||
int i;
|
||||
const ExtraPaletteValues *ev = &_extra_palette_values;
|
||||
@@ -1594,7 +1594,7 @@ void DoPaletteAnimations()
|
||||
j+=3;
|
||||
if (j == 15) j = 0;
|
||||
}
|
||||
|
||||
|
||||
// Glittery water DOS
|
||||
s = ev->b;
|
||||
if (_opt.landscape == LT_CANDY) s = ev->bc;
|
||||
@@ -1613,7 +1613,7 @@ void DoPaletteAnimations()
|
||||
}
|
||||
|
||||
|
||||
void LoadStringWidthTable()
|
||||
void LoadStringWidthTable(void)
|
||||
{
|
||||
int i;
|
||||
byte *b;
|
||||
@@ -1634,7 +1634,7 @@ void LoadStringWidthTable()
|
||||
}
|
||||
}
|
||||
|
||||
void ScreenSizeChanged()
|
||||
void ScreenSizeChanged(void)
|
||||
{
|
||||
// check the dirty rect
|
||||
if (_invalid_rect.right >= _screen.width) _invalid_rect.right = _screen.width;
|
||||
@@ -1644,7 +1644,7 @@ void ScreenSizeChanged()
|
||||
_cursor.visible = false;
|
||||
}
|
||||
|
||||
void UndrawMouseCursor()
|
||||
void UndrawMouseCursor(void)
|
||||
{
|
||||
if (_cursor.visible) {
|
||||
_cursor.visible = false;
|
||||
@@ -1657,7 +1657,7 @@ void UndrawMouseCursor()
|
||||
}
|
||||
}
|
||||
|
||||
void DrawMouseCursor()
|
||||
void DrawMouseCursor(void)
|
||||
{
|
||||
int x,y,w,h;
|
||||
|
||||
@@ -1684,7 +1684,7 @@ void DrawMouseCursor()
|
||||
_cursor.draw_pos.y = y;
|
||||
_cursor.draw_size.y = h;
|
||||
|
||||
assert(w*h < sizeof(_cursor_backup));
|
||||
assert(w*h < (int) sizeof(_cursor_backup));
|
||||
|
||||
// Make backup of stuff below cursor
|
||||
memcpy_pitch(
|
||||
@@ -1740,7 +1740,7 @@ void RedrawScreenRect(int left, int top, int right, int bottom)
|
||||
_video_driver->make_dirty(left, top, right-left, bottom-top);
|
||||
}
|
||||
|
||||
void DrawDirtyBlocks()
|
||||
void DrawDirtyBlocks(void)
|
||||
{
|
||||
byte *b = _dirty_blocks;
|
||||
int x=0,y=0;
|
||||
@@ -1846,7 +1846,7 @@ void SetDirtyBlocks(int left, int top, int right, int bottom)
|
||||
} while (--height);
|
||||
}
|
||||
|
||||
void MarkWholeScreenDirty()
|
||||
void MarkWholeScreenDirty(void)
|
||||
{
|
||||
SetDirtyBlocks(0, 0, _screen.width, _screen.height);
|
||||
}
|
||||
@@ -1915,7 +1915,7 @@ static void SetCursorSprite(uint cursor)
|
||||
cv->dirty = true;
|
||||
}
|
||||
|
||||
static void SwitchAnimatedCursor()
|
||||
static void SwitchAnimatedCursor(void)
|
||||
{
|
||||
CursorVars *cv = &_cursor;
|
||||
const uint16 *cur;
|
||||
@@ -1931,7 +1931,8 @@ static void SwitchAnimatedCursor()
|
||||
SetCursorSprite(sprite);
|
||||
}
|
||||
|
||||
void CursorTick() {
|
||||
void CursorTick(void)
|
||||
{
|
||||
CursorVars *cv = &_cursor;
|
||||
if (cv->animate_timeout && !--cv->animate_timeout)
|
||||
SwitchAnimatedCursor();
|
||||
|
||||
@@ -53,14 +53,14 @@ void DrawFrameRect(int left, int top, int right, int bottom, int color, int flag
|
||||
uint16 GetDrawStringPlayerColor(byte player);
|
||||
|
||||
int GetStringWidth(const byte *str);
|
||||
void LoadStringWidthTable();
|
||||
void LoadStringWidthTable(void);
|
||||
void DrawStringMultiCenter(int x, int y, uint16 str, int maxw);
|
||||
void DrawStringMultiLine(int x, int y, uint16 str, int maxw);
|
||||
void DrawDirtyBlocks();
|
||||
void DrawDirtyBlocks(void);
|
||||
void SetDirtyBlocks(int left, int top, int right, int bottom);
|
||||
void MarkWholeScreenDirty();
|
||||
void MarkWholeScreenDirty(void);
|
||||
|
||||
void GfxInitPalettes();
|
||||
void GfxInitPalettes(void);
|
||||
|
||||
bool FillDrawPixelInfo(DrawPixelInfo *n, DrawPixelInfo *o, int left, int top, int width, int height);
|
||||
|
||||
@@ -70,14 +70,14 @@ void DrawOverlappedWindowForAll(int left, int top, int right, int bottom);
|
||||
/* spritecache.c */
|
||||
byte *GetSpritePtr(uint sprite);
|
||||
void GfxInitSpriteMem(byte *ptr, uint32 size);
|
||||
void GfxLoadSprites();
|
||||
void GfxLoadSprites(void);
|
||||
|
||||
void SetMouseCursor(uint cursor);
|
||||
void SetAnimatedMouseCursor(const uint16 *table);
|
||||
void CursorTick();
|
||||
void DrawMouseCursor();
|
||||
void ScreenSizeChanged();
|
||||
void UndrawMouseCursor();
|
||||
void CursorTick(void);
|
||||
void DrawMouseCursor(void);
|
||||
void ScreenSizeChanged(void);
|
||||
void UndrawMouseCursor(void);
|
||||
bool ChangeResInGame(int w, int h);
|
||||
void ToggleFullScreen(const bool full_screen);
|
||||
|
||||
|
||||
@@ -4,31 +4,30 @@
|
||||
#include "window.h"
|
||||
|
||||
/* main_gui.c */
|
||||
void SetupColorsAndInitialWindow();
|
||||
void SetupColorsAndInitialWindow(void);
|
||||
void CcPlaySound10(bool success, uint tile, uint32 p1, uint32 p2);
|
||||
void PlaceProc_Sign(uint tile);
|
||||
|
||||
/* settings_gui.c */
|
||||
void ShowGameOptions();
|
||||
void ShowGameDifficulty();
|
||||
void ShowPatchesSelection();
|
||||
void ShowNewgrf();
|
||||
void ShowCustCurrency();
|
||||
void ShowGameOptions(void);
|
||||
void ShowGameDifficulty(void);
|
||||
void ShowPatchesSelection(void);
|
||||
void ShowNewgrf(void);
|
||||
void ShowCustCurrency(void);
|
||||
|
||||
/* graph_gui.c */
|
||||
void ShowOperatingProfitGraph();
|
||||
void ShowIncomeGraph();
|
||||
void ShowDeliveredCargoGraph();
|
||||
void ShowPerformanceHistoryGraph();
|
||||
void ShowCompanyValueGraph();
|
||||
void ShowCargoPaymentRates();
|
||||
void ShowCompanyLeagueTable();
|
||||
void ShowPerformanceRatingDetail();
|
||||
void ShowOperatingProfitGraph(void);
|
||||
void ShowIncomeGraph(void);
|
||||
void ShowDeliveredCargoGraph(void);
|
||||
void ShowPerformanceHistoryGraph(void);
|
||||
void ShowCompanyValueGraph(void);
|
||||
void ShowCargoPaymentRates(void);
|
||||
void ShowCompanyLeagueTable(void);
|
||||
void ShowPerformanceRatingDetail(void);
|
||||
|
||||
/* news_gui.c */
|
||||
void ShowLastNewsMessage();
|
||||
void ShowMessageOptions();
|
||||
void ShowMessageHistory();
|
||||
void ShowLastNewsMessage(void);
|
||||
void ShowMessageOptions(void);
|
||||
void ShowMessageHistory(void);
|
||||
|
||||
/* traintoolb_gui.c */
|
||||
void ShowBuildRailToolbar(int index, int button);
|
||||
@@ -43,18 +42,18 @@ void ShowOrdersWindow(Vehicle *v);
|
||||
void ShowRoadVehViewWindow(Vehicle *v);
|
||||
|
||||
/* road_gui.c */
|
||||
void ShowBuildRoadToolbar();
|
||||
void ShowBuildRoadScenToolbar();
|
||||
void ShowBuildRoadToolbar(void);
|
||||
void ShowBuildRoadScenToolbar(void);
|
||||
void ShowPlayerRoadVehicles(int player, int station);
|
||||
|
||||
/* dock_gui.c */
|
||||
void ShowBuildDocksToolbar();
|
||||
void ShowBuildDocksToolbar(void);
|
||||
void ShowPlayerShips(int player, int station);
|
||||
|
||||
void ShowShipViewWindow(Vehicle *v);
|
||||
|
||||
/* aircraft_gui.c */
|
||||
void ShowBuildAirToolbar();
|
||||
void ShowBuildAirToolbar(void);
|
||||
void ShowPlayerAircraft(int player, int station);
|
||||
|
||||
/* terraform_gui.c */
|
||||
@@ -62,16 +61,16 @@ void PlaceProc_DemolishArea(uint tile);
|
||||
void PlaceProc_LowerLand(uint tile);
|
||||
void PlaceProc_RaiseLand(uint tile);
|
||||
void PlaceProc_LevelLand(uint tile);
|
||||
void ShowTerraformToolbar();
|
||||
void ShowTerraformToolbar(void);
|
||||
|
||||
/* misc_gui.c */
|
||||
void PlaceLandBlockInfo();
|
||||
void ShowAboutWindow();
|
||||
void ShowBuildTreesToolbar();
|
||||
void ShowBuildTreesScenToolbar();
|
||||
void ShowTownDirectory();
|
||||
void ShowIndustryDirectory();
|
||||
void ShowSubsidiesList();
|
||||
void PlaceLandBlockInfo(void);
|
||||
void ShowAboutWindow(void);
|
||||
void ShowBuildTreesToolbar(void);
|
||||
void ShowBuildTreesScenToolbar(void);
|
||||
void ShowTownDirectory(void);
|
||||
void ShowIndustryDirectory(void);
|
||||
void ShowSubsidiesList(void);
|
||||
void ShowPlayerStations(int player);
|
||||
void ShowPlayerFinances(int player);
|
||||
void ShowPlayerCompany(int player);
|
||||
@@ -82,19 +81,20 @@ void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y);
|
||||
void DrawStationCoverageAreaText(int sx, int sy, uint mask,int rad);
|
||||
void CheckRedrawStationCoverage(Window *w);
|
||||
|
||||
void ShowSmallMap();
|
||||
void ShowExtraViewPortWindow();
|
||||
void ShowSmallMap(void);
|
||||
void ShowExtraViewPortWindow(void);
|
||||
void SetVScrollCount(Window *w, int num);
|
||||
void SetVScroll2Count(Window *w, int num);
|
||||
void SetHScrollCount(Window *w, int num);
|
||||
int HandleEditBoxKey(Window *w, int wid, WindowEvent *we);
|
||||
|
||||
void ShowCheatWindow();
|
||||
void AskForNewGameToStart();
|
||||
void ShowCheatWindow(void);
|
||||
void AskForNewGameToStart(void);
|
||||
|
||||
void DrawEditBox(Window *w, int wid);
|
||||
void HandleEditBox(Window *w, int wid);
|
||||
|
||||
void BuildFileList();
|
||||
void BuildFileList(void);
|
||||
void SetFiosType(const byte fiostype);
|
||||
|
||||
/* FIOS_TYPE_FILE, FIOS_TYPE_OLDFILE etc. different colours */
|
||||
@@ -102,7 +102,7 @@ static const byte _fios_colors[] = {13, 9, 9, 6, 5, 6, 5};
|
||||
|
||||
|
||||
/* network gui */
|
||||
void ShowNetworkGameWindow();
|
||||
void ShowNetworkGameWindow(void);
|
||||
void ShowChatWindow(StringID str, StringID caption, int maxlen, int maxwidth, byte window_class, uint16 window_number);
|
||||
|
||||
/* bridge_gui.c */
|
||||
@@ -115,9 +115,9 @@ enum {
|
||||
};
|
||||
|
||||
bool DoZoomInOutWindow(int how, Window * w);
|
||||
void ShowBuildIndustryWindow();
|
||||
void ShowBuildIndustryWindow(void);
|
||||
void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, byte window_class, uint16 window_number);
|
||||
void ShowMusicWindow();
|
||||
void ShowMusicWindow(void);
|
||||
|
||||
/* main_gui.c */
|
||||
VARDEF byte _newspaper_flag;
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
|
||||
typedef struct {
|
||||
char *(*start)(char **parm);
|
||||
void (*stop)();
|
||||
void (*stop)(void);
|
||||
} HalCommonDriver;
|
||||
|
||||
typedef struct {
|
||||
const char *(*start)(char **parm);
|
||||
void (*stop)();
|
||||
void (*stop)(void);
|
||||
void (*make_dirty)(int left, int top, int width, int height);
|
||||
int (*main_loop)();
|
||||
int (*main_loop)(void);
|
||||
bool (*change_resolution)(int w, int h);
|
||||
} HalVideoDriver;
|
||||
|
||||
@@ -21,16 +21,16 @@ enum {
|
||||
|
||||
typedef struct {
|
||||
char *(*start)(char **parm);
|
||||
void (*stop)();
|
||||
void (*stop)(void);
|
||||
} HalSoundDriver;
|
||||
|
||||
typedef struct {
|
||||
char *(*start)(char **parm);
|
||||
void (*stop)();
|
||||
void (*stop)(void);
|
||||
|
||||
void (*play_song)(const char *filename);
|
||||
void (*stop_song)();
|
||||
bool (*is_song_playing)();
|
||||
void (*stop_song)(void);
|
||||
bool (*is_song_playing)(void);
|
||||
void (*set_volume)(byte vol);
|
||||
} HalMusicDriver;
|
||||
|
||||
@@ -71,6 +71,10 @@ extern const HalMusicDriver _extmidi_music_driver;
|
||||
extern const HalMusicDriver _bemidi_music_driver;
|
||||
#endif
|
||||
|
||||
#if defined(__OS2__)
|
||||
extern const HalMusicDriver _os2_music_driver;
|
||||
#endif
|
||||
|
||||
extern const HalVideoDriver _dedicated_video_driver;
|
||||
|
||||
enum DriverType {
|
||||
@@ -79,7 +83,7 @@ enum DriverType {
|
||||
MUSIC_DRIVER = 2,
|
||||
};
|
||||
|
||||
extern void GameLoop();
|
||||
extern void GameLoop(void);
|
||||
extern bool _dbg_screen_rect;
|
||||
|
||||
void LoadDriver(int driver, const char *name);
|
||||
@@ -137,7 +141,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode);
|
||||
// Get a list of scenarios
|
||||
FiosItem *FiosGetScenarioList(int *num, int mode);
|
||||
// Free the list of savegames
|
||||
void FiosFreeSavegameList();
|
||||
void FiosFreeSavegameList(void);
|
||||
// Browse to. Returns a filename w/path if we reached a file.
|
||||
char *FiosBrowseTo(const FiosItem *item);
|
||||
// Get descriptive texts.
|
||||
@@ -149,6 +153,6 @@ void FiosDelete(const char *name);
|
||||
// Make a filename from a name
|
||||
void FiosMakeSavegameName(char *buf, const char *name);
|
||||
|
||||
void CreateConsole();
|
||||
void CreateConsole(void);
|
||||
|
||||
#endif /* HAL_H */
|
||||
|
||||
@@ -23,11 +23,25 @@ struct Industry {
|
||||
byte color_map;
|
||||
byte last_prod_year;
|
||||
byte was_cargo_delivered;
|
||||
|
||||
uint16 index;
|
||||
};
|
||||
|
||||
VARDEF int _total_industries; // For the AI: the amount of industries active
|
||||
|
||||
VARDEF Industry _industries[90];
|
||||
#define DEREF_INDUSTRY(i) (&_industries[i])
|
||||
VARDEF uint _industries_size;
|
||||
|
||||
VARDEF uint16 *_industry_sort;
|
||||
|
||||
static inline Industry *GetIndustry(uint index)
|
||||
{
|
||||
assert(index < _industries_size);
|
||||
return &_industries[index];
|
||||
}
|
||||
|
||||
#define FOR_ALL_INDUSTRIES(i) for(i = _industries; i != &_industries[_industries_size]; i++)
|
||||
|
||||
VARDEF bool _industry_sort_dirty;
|
||||
void DeleteIndustry(Industry *is);
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ typedef struct DrawIndustrySpec4Struct {
|
||||
|
||||
|
||||
typedef struct IndustryTileTable {
|
||||
TileIndexDiff ti;
|
||||
TileIndexDiffC ti;
|
||||
byte map5;
|
||||
} IndustryTileTable;
|
||||
|
||||
@@ -282,7 +282,7 @@ static void DrawTile_Industry(TileInfo *ti)
|
||||
uint32 image, ormod;
|
||||
|
||||
/* Pointer to industry */
|
||||
ind = DEREF_INDUSTRY(_map2[ti->tile]);
|
||||
ind = GetIndustry(_map2[ti->tile]);
|
||||
ormod = (ind->color_map+0x307)<<16;
|
||||
|
||||
/* Retrieve pointer to the draw industry tile struct */
|
||||
@@ -358,7 +358,7 @@ static void GetAcceptedCargo_Industry(uint tile, AcceptedCargo ac)
|
||||
|
||||
static void GetTileDesc_Industry(uint tile, TileDesc *td)
|
||||
{
|
||||
Industry *i = DEREF_INDUSTRY(_map2[tile]);
|
||||
Industry *i = GetIndustry(_map2[tile]);
|
||||
|
||||
td->owner = i->owner;
|
||||
td->str = STR_4802_COAL_MINE + i->type;
|
||||
@@ -370,7 +370,7 @@ static void GetTileDesc_Industry(uint tile, TileDesc *td)
|
||||
|
||||
static int32 ClearTile_Industry(uint tile, byte flags)
|
||||
{
|
||||
Industry *i = DEREF_INDUSTRY(_map2[tile]);
|
||||
Industry *i = GetIndustry(_map2[tile]);
|
||||
|
||||
/* * water can destroy industries
|
||||
* in editor you can bulldoze industries
|
||||
@@ -395,9 +395,11 @@ static int32 ClearTile_Industry(uint tile, byte flags)
|
||||
int32 CmdDestroyIndustry(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
uint tile = TILE_FROM_XY(x,y);
|
||||
Industry *i = DEREF_INDUSTRY((uint16)p1);
|
||||
Industry *i = GetIndustry((uint16)p1);
|
||||
Town *t = ClosestTownFromTile(tile, (uint)-1); // find closest town to penaltize (ALWAYS penaltize)
|
||||
|
||||
SET_EXPENSES_TYPE(EXPENSES_OTHER);
|
||||
|
||||
// check if you're allowed to remove the industry. Minimum amount
|
||||
// of ratings to remove the industry depends on difficulty setting
|
||||
if (!CheckforTownRating(tile, flags, t, INDUSTRY_REMOVE))
|
||||
@@ -406,7 +408,7 @@ int32 CmdDestroyIndustry(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
if (flags & DC_EXEC) {
|
||||
DeleteIndustry(i);
|
||||
CreateEffectVehicleAbove(x + 8,y + 8, 2, EV_DEMOLISH);
|
||||
ChangeTownRating(t, -1500, -1000); // penalty is 1500
|
||||
ChangeTownRating(t, RATING_INDUSTRY_DOWN_STEP, RATING_INDUSTRY_MINIMUM);
|
||||
}
|
||||
|
||||
return (_price.build_industry >> 5) * _industry_type_costs[i->type]*2;
|
||||
@@ -428,7 +430,7 @@ static void TransportIndustryGoods(uint tile)
|
||||
uint cw, am;
|
||||
byte m5;
|
||||
|
||||
i = DEREF_INDUSTRY(_map2[tile]);
|
||||
i = GetIndustry(_map2[tile]);
|
||||
|
||||
type = i->type;
|
||||
cw = min(i->cargo_waiting[0], 255);
|
||||
@@ -626,7 +628,7 @@ static void AnimateTile_Industry(uint tile)
|
||||
static void MakeIndustryTileBiggerCase8(uint tile)
|
||||
{
|
||||
TileInfo ti;
|
||||
FindLandscapeHeight(&ti, GET_TILE_X(tile)*16, GET_TILE_Y(tile)*16);
|
||||
FindLandscapeHeight(&ti, TileX(tile) * 16, TileY(tile) * 16);
|
||||
CreateEffectVehicle(ti.x + 15, ti.y + 14, ti.z + 59 + (ti.tileh != 0 ? 8 : 0), EV_INDUSTRYSMOKE);
|
||||
}
|
||||
|
||||
@@ -690,8 +692,8 @@ static void TileLoopIndustryCase161(uint tile)
|
||||
dir = Random() & 3;
|
||||
|
||||
v = CreateEffectVehicleAbove(
|
||||
GET_TILE_X(tile)*16 + _tileloop_ind_case_161[dir + 0],
|
||||
GET_TILE_Y(tile)*16 + _tileloop_ind_case_161[dir + 4],
|
||||
TileX(tile) * 16 + _tileloop_ind_case_161[dir + 0],
|
||||
TileY(tile) * 16 + _tileloop_ind_case_161[dir + 4],
|
||||
_tileloop_ind_case_161[dir + 8],
|
||||
EV_INDUSTRY_SMOKE
|
||||
);
|
||||
@@ -777,12 +779,12 @@ static void TileLoop_Industry(uint tile)
|
||||
break;
|
||||
|
||||
case 49: {
|
||||
CreateEffectVehicleAbove(GET_TILE_X(tile)*16 + 6, GET_TILE_Y(tile)*16 + 6, 43, EV_SMOKE_3);
|
||||
CreateEffectVehicleAbove(TileX(tile) * 16 + 6, TileY(tile) * 16 + 6, 43, EV_SMOKE_3);
|
||||
} break;
|
||||
|
||||
|
||||
case 143: {
|
||||
Industry *i = DEREF_INDUSTRY(_map2[tile]);
|
||||
Industry *i = GetIndustry(_map2[tile]);
|
||||
if (i->was_cargo_delivered) {
|
||||
i->was_cargo_delivered = false;
|
||||
if ((_map3_hi[tile]|_map3_lo[tile]) != 0)
|
||||
@@ -821,7 +823,7 @@ static uint32 GetTileTrackStatus_Industry(uint tile, TransportType mode)
|
||||
|
||||
static void GetProducedCargo_Industry(uint tile, byte *b)
|
||||
{
|
||||
Industry *i = DEREF_INDUSTRY(_map2[tile]);
|
||||
Industry *i = GetIndustry(_map2[tile]);
|
||||
b[0] = i->produced_cargo[0];
|
||||
b[1] = i->produced_cargo[1];
|
||||
}
|
||||
@@ -833,52 +835,54 @@ static void ChangeTileOwner_Industry(uint tile, byte old_player, byte new_player
|
||||
|
||||
void DeleteIndustry(Industry *i)
|
||||
{
|
||||
int index = i - _industries;
|
||||
|
||||
BEGIN_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
|
||||
if (IS_TILETYPE(tile_cur, MP_INDUSTRY)) {
|
||||
if (_map2[tile_cur] == (byte)index) {
|
||||
BEGIN_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
|
||||
if (IsTileType(tile_cur, MP_INDUSTRY)) {
|
||||
if (_map2[tile_cur] == i->index) {
|
||||
DoClearSquare(tile_cur);
|
||||
}
|
||||
} else if (IS_TILETYPE(tile_cur, MP_STATION) && _map5[tile_cur] == 0x4B) {
|
||||
} else if (IsTileType(tile_cur, MP_STATION) && _map5[tile_cur] == 0x4B) {
|
||||
DeleteOilRig(tile_cur);
|
||||
}
|
||||
END_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
|
||||
END_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
|
||||
|
||||
i->xy = 0;
|
||||
_industry_sort_dirty = true;
|
||||
DeleteSubsidyWithIndustry(index);
|
||||
DeleteWindowById(WC_INDUSTRY_VIEW, index);
|
||||
DeleteSubsidyWithIndustry(i->index);
|
||||
DeleteWindowById(WC_INDUSTRY_VIEW, i->index);
|
||||
InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
|
||||
}
|
||||
|
||||
static const byte _plantfarmfield_type[] = {1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6};
|
||||
|
||||
static bool IsBadFarmFieldTile(uint tile)
|
||||
static bool IsBadFarmFieldTile(TileIndex tile)
|
||||
{
|
||||
if (IS_TILETYPE(tile,MP_CLEAR)) {
|
||||
byte m5 = _map5[tile] & 0x1C;
|
||||
if (m5 == 0xC || m5 == 0x10)
|
||||
switch (TileType(tile)) {
|
||||
case MP_CLEAR: {
|
||||
byte m5 = _map5[tile] & 0x1C;
|
||||
return m5 == 0xC || m5 == 0x10;
|
||||
}
|
||||
|
||||
case MP_TREES:
|
||||
return false;
|
||||
|
||||
default:
|
||||
return true;
|
||||
return false;
|
||||
} else if (IS_TILETYPE(tile,MP_TREES)) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
static bool IsBadFarmFieldTile2(uint tile)
|
||||
static bool IsBadFarmFieldTile2(TileIndex tile)
|
||||
{
|
||||
if (IS_TILETYPE(tile,MP_CLEAR)) {
|
||||
byte m5 = _map5[tile] & 0x1C;
|
||||
if (m5 == 0x10)
|
||||
switch (TileType(tile)) {
|
||||
case MP_CLEAR: {
|
||||
byte m5 = _map5[tile] & 0x1C;
|
||||
return m5 == 0x10;
|
||||
}
|
||||
|
||||
case MP_TREES:
|
||||
return false;
|
||||
|
||||
default:
|
||||
return true;
|
||||
return false;
|
||||
} else if (IS_TILETYPE(tile,MP_TREES)) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -889,7 +893,7 @@ static void SetupFarmFieldFence(uint tile, int size, byte type, int direction)
|
||||
do {
|
||||
tile = TILE_MASK(tile);
|
||||
|
||||
if (IS_TILETYPE(tile, MP_CLEAR) || IS_TILETYPE(tile, MP_TREES)) {
|
||||
if (IsTileType(tile, MP_CLEAR) || IsTileType(tile, MP_TREES)) {
|
||||
|
||||
or = type;
|
||||
if (or == 1 && (uint16)Random() <= 9362) or = 2;
|
||||
@@ -980,7 +984,12 @@ static void MaybePlantFarmField(Industry *i)
|
||||
|
||||
static void ChopLumberMillTrees(Industry *i)
|
||||
{
|
||||
static const TileIndexDiff _chop_dir[4] = { TILE_XY(0,1), TILE_XY(1,0), TILE_XY(0,-1), TILE_XY(-1,0) };
|
||||
static const TileIndexDiffC _chop_dir[] = {
|
||||
{ 0, 1},
|
||||
{ 1, 0},
|
||||
{ 0, -1},
|
||||
{-1, 0}
|
||||
};
|
||||
|
||||
uint tile = i->xy;
|
||||
int dir, a, j;
|
||||
@@ -994,7 +1003,7 @@ static void ChopLumberMillTrees(Industry *i)
|
||||
j = a;
|
||||
do {
|
||||
tile = TILE_MASK(tile);
|
||||
if (IS_TILETYPE(tile, MP_TREES)) {
|
||||
if (IsTileType(tile, MP_TREES)) {
|
||||
uint old_player = _current_player;
|
||||
/* found a tree */
|
||||
|
||||
@@ -1011,7 +1020,7 @@ static void ChopLumberMillTrees(Industry *i)
|
||||
_current_player = old_player;
|
||||
return;
|
||||
}
|
||||
tile += _chop_dir[dir];
|
||||
tile += ToTileIndexDiff(_chop_dir[dir]);
|
||||
} while (--j);
|
||||
}
|
||||
tile -= TILE_XY(1,1);
|
||||
@@ -1087,7 +1096,7 @@ static void ProduceIndustryGoods(Industry *i)
|
||||
}
|
||||
}
|
||||
|
||||
void OnTick_Industry()
|
||||
void OnTick_Industry(void)
|
||||
{
|
||||
Industry *i;
|
||||
|
||||
@@ -1105,7 +1114,7 @@ void OnTick_Industry()
|
||||
if (_game_mode == GM_EDITOR)
|
||||
return;
|
||||
|
||||
for(i=_industries; i != endof(_industries); i++) {
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if (i->xy != 0)
|
||||
ProduceIndustryGoods(i);
|
||||
}
|
||||
@@ -1140,8 +1149,8 @@ static bool CheckNewIndustry_Oilwell(uint tile, int type)
|
||||
if (type != IT_OIL_RIG && _game_mode == GM_EDITOR)
|
||||
return true;
|
||||
|
||||
x = GET_TILE_X(tile);
|
||||
y = GET_TILE_Y(tile);
|
||||
x = TileX(tile);
|
||||
y = TileY(tile);
|
||||
|
||||
if ( x < 15 || y < 15 || x > 238 || y > 238)
|
||||
return true;
|
||||
@@ -1212,10 +1221,10 @@ static CheckNewIndustryProc * const _check_new_industry_procs[] = {
|
||||
|
||||
static bool CheckSuitableIndustryPos(uint tile)
|
||||
{
|
||||
int x = GET_TILE_X(tile);
|
||||
int y = GET_TILE_Y(tile);
|
||||
uint x = TileX(tile);
|
||||
uint y = TileY(tile);
|
||||
|
||||
if ( x < 2 || y < 2 || x > TILE_X_MAX - 3 || y > TILE_Y_MAX - 3) {
|
||||
if ( x < 2 || y < 2 || x > MapMaxX() - 3 || y > MapMaxY() - 3) {
|
||||
_error_message = STR_0239_SITE_UNSUITABLE;
|
||||
return false;
|
||||
}
|
||||
@@ -1233,7 +1242,7 @@ static Town *CheckMultipleIndustryInTown(uint tile, int type)
|
||||
if (_patches.multiple_industry_per_town)
|
||||
return t;
|
||||
|
||||
for(i=_industries; i != endof(_industries); i++) {
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if (i->xy != 0 &&
|
||||
i->type == (byte)type &&
|
||||
i->town == t) {
|
||||
@@ -1278,7 +1287,7 @@ static bool CheckIfIndustryTilesAreFree(uint tile, const IndustryTileTable *it,
|
||||
_error_message = STR_0239_SITE_UNSUITABLE;
|
||||
|
||||
do {
|
||||
cur_tile = tile + it->ti;
|
||||
cur_tile = tile + ToTileIndexDiff(it->ti);
|
||||
if (!IsValidTile(cur_tile)) {
|
||||
if (it->map5 == 0xff)
|
||||
continue;
|
||||
@@ -1351,7 +1360,7 @@ do_clear:
|
||||
}
|
||||
}
|
||||
}
|
||||
} while ( (++it)->ti != -0x8000);
|
||||
} while ((++it)->ti.x != -0x80);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1366,12 +1375,15 @@ static bool CheckIfTooCloseToIndustry(uint tile, int type)
|
||||
if (_patches.same_industry_close && (spec->accepts_cargo[0] == 0xFF) )
|
||||
return true;
|
||||
|
||||
for(i=_industries; i != endof(_industries); i++) {
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
// check if an industry that accepts the same goods is nearby
|
||||
if (i->xy != 0 &&
|
||||
(GetTileDist1D(tile, i->xy) <= 14) &&
|
||||
spec->accepts_cargo[0] != 0xFF &&
|
||||
spec->accepts_cargo[0] == i->accepts_cargo[0]) {
|
||||
spec->accepts_cargo[0] == i->accepts_cargo[0] &&
|
||||
!(_game_mode == GM_EDITOR &&
|
||||
_patches.same_industry_close &&
|
||||
_patches.multiple_industry_per_town)) {
|
||||
_error_message = STR_INDUSTRY_TOO_CLOSE;
|
||||
return false;
|
||||
}
|
||||
@@ -1387,14 +1399,15 @@ static bool CheckIfTooCloseToIndustry(uint tile, int type)
|
||||
return true;
|
||||
}
|
||||
|
||||
static Industry *AllocateIndustry()
|
||||
static Industry *AllocateIndustry(void)
|
||||
{
|
||||
Industry *i;
|
||||
|
||||
for(i=_industries; i != endof(_industries); i++) {
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if (i->xy == 0) {
|
||||
int index = i - _industries;
|
||||
if (index > _total_industries) _total_industries = index;
|
||||
if (i->index > _total_industries)
|
||||
_total_industries = i->index;
|
||||
|
||||
return i;
|
||||
}
|
||||
}
|
||||
@@ -1454,24 +1467,24 @@ static void DoCreateNewIndustry(Industry *i, uint tile, int type, const Industry
|
||||
i->prod_level = 0x10;
|
||||
|
||||
do {
|
||||
cur_tile = tile + it->ti;
|
||||
cur_tile = tile + ToTileIndexDiff(it->ti);
|
||||
|
||||
if (it->map5 != 0xFF) {
|
||||
byte size;
|
||||
|
||||
size = GET_TILE_X((TileIndex)it->ti);
|
||||
size = it->ti.x;
|
||||
if (size > i->width) i->width = size;
|
||||
size = GET_TILE_Y((TileIndex)it->ti);
|
||||
size = it->ti.y;
|
||||
if (size > i->height)i->height = size;
|
||||
|
||||
DoCommandByTile(cur_tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
|
||||
_map_type_and_height[cur_tile] = (_map_type_and_height[cur_tile]&~0xF0) | (MP_INDUSTRY<<4);
|
||||
SetTileType(cur_tile, MP_INDUSTRY);
|
||||
_map5[cur_tile] = it->map5;
|
||||
_map2[cur_tile] = i - _industries;
|
||||
_map2[cur_tile] = i->index;
|
||||
_map_owner[cur_tile] = _generating_world ? 0x1E : 0; /* maturity */
|
||||
}
|
||||
} while ( (++it)->ti != -0x8000);
|
||||
} while ((++it)->ti.x != -0x80);
|
||||
|
||||
i->width++;
|
||||
i->height++;
|
||||
@@ -1601,7 +1614,7 @@ static void PlaceInitialIndustry(byte type, int amount)
|
||||
}
|
||||
}
|
||||
|
||||
void GenerateIndustries()
|
||||
void GenerateIndustries(void)
|
||||
{
|
||||
const byte *b;
|
||||
|
||||
@@ -1704,7 +1717,7 @@ static void UpdateIndustryStatistics(Industry *i)
|
||||
|
||||
|
||||
if ( i->produced_cargo[0] != 0xFF || i->produced_cargo[1] != 0xFF )
|
||||
InvalidateWindow(WC_INDUSTRY_VIEW, i - _industries);
|
||||
InvalidateWindow(WC_INDUSTRY_VIEW, i->index);
|
||||
|
||||
if (i->prod_level == 0)
|
||||
DeleteIndustry(i);
|
||||
@@ -1801,18 +1814,18 @@ add_news:
|
||||
}
|
||||
}
|
||||
|
||||
void IndustryMonthlyLoop()
|
||||
void IndustryMonthlyLoop(void)
|
||||
{
|
||||
Industry *i;
|
||||
byte old_player = _current_player;
|
||||
_current_player = OWNER_NONE;
|
||||
|
||||
for(i=_industries; i != endof(_industries); i++) {
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if (i->xy != 0)
|
||||
UpdateIndustryStatistics(i);
|
||||
}
|
||||
|
||||
i = DEREF_INDUSTRY(RandomRange(lengthof(_industries)));
|
||||
i = GetIndustry(RandomRange(_industries_size));
|
||||
|
||||
if (i->xy == 0) {
|
||||
uint32 r;
|
||||
@@ -1830,9 +1843,17 @@ void IndustryMonthlyLoop()
|
||||
}
|
||||
|
||||
|
||||
void InitializeIndustries()
|
||||
void InitializeIndustries(void)
|
||||
{
|
||||
memset(_industries, 0, sizeof(_industries));
|
||||
Industry *i;
|
||||
int j;
|
||||
|
||||
memset(_industries, 0, sizeof(_industries[0]) * _industries_size);
|
||||
|
||||
j = 0;
|
||||
FOR_ALL_INDUSTRIES(i)
|
||||
i->index = j++;
|
||||
|
||||
_total_industries = 0;
|
||||
_industry_sort_dirty = true;
|
||||
}
|
||||
@@ -1884,25 +1905,27 @@ static const byte _industry_desc[] = {
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
static void Save_INDY()
|
||||
static void Save_INDY(void)
|
||||
{
|
||||
Industry *ind;
|
||||
int i;
|
||||
|
||||
// Write the vehicles
|
||||
for(ind=_industries,i=0; i!=lengthof(_industries); ind++,i++) {
|
||||
FOR_ALL_INDUSTRIES(ind) {
|
||||
if (ind->xy != 0) {
|
||||
SlSetArrayIndex(i);
|
||||
SlSetArrayIndex(ind->index);
|
||||
SlObject(ind, _industry_desc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Load_INDY()
|
||||
static void Load_INDY(void)
|
||||
{
|
||||
int index;
|
||||
_total_industries = 0;
|
||||
while ((index = SlIterateArray()) != -1) {
|
||||
SlObject(DEREF_INDUSTRY(index), _industry_desc);
|
||||
Industry *i = GetIndustry(index);
|
||||
|
||||
SlObject(i, _industry_desc);
|
||||
if (index > _total_industries) _total_industries = index;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,10 @@ static const byte _build_industry_types[4][12] = {
|
||||
|
||||
extern const byte _industry_type_costs[37];
|
||||
|
||||
static void UpdateIndustryProduction(Industry *i);
|
||||
extern void DrawArrowButtons(int x, int y, int state);
|
||||
extern void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, byte window_class, uint16 window_number);
|
||||
|
||||
static void BuildIndustryWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch(e->event) {
|
||||
@@ -53,130 +57,130 @@ static void BuildIndustryWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _build_industry_land0_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 169, 14, 115, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _build_industry_land1_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 169, 14, 115, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _build_industry_land2_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 169, 14, 115, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _build_industry_land3_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 169, 14, 115, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _build_industry_land0_widgets_extra[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY,STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 169, 14, 187, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY,STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 187, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0241_POWER_STATION,STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION,STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
|
||||
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 84, 95, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 97, 108, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 110, 121, STR_0245_OIL_RIG, STR_CONSTRUCT_OIL_RIG_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 123, 134, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 136, 147, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 149, 160, STR_0249_IRON_ORE_MINE, STR_CONSTRUCT_IRON_ORE_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 84, 95, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 97, 108, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 110, 121, STR_0245_OIL_RIG, STR_CONSTRUCT_OIL_RIG_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 123, 134, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 136, 147, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 149, 160, STR_0249_IRON_ORE_MINE, STR_CONSTRUCT_IRON_ORE_MINE_TIP},
|
||||
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _build_industry_land1_widgets_extra[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 169, 14, 174, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 174, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
|
||||
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 81+3, 92+3, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 94+3, 105+3, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 107+3, 118+3, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 120+3, 131+3, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 133+3, 144+3, STR_024F_GOLD_MINE, STR_CONSTRUCT_GOLD_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 81+3, 92+3, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 94+3, 105+3, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 107+3, 118+3, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 120+3, 131+3, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 133+3, 144+3, STR_024F_GOLD_MINE, STR_CONSTRUCT_GOLD_MINE_TIP},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _build_industry_land2_widgets_extra[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 169, 14, 200, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 200, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
|
||||
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 81+3, 92+3, STR_024A_OIL_WELLS,STR_CONSTRUCT_OIL_WELLS_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 94+3, 105+3, STR_0255_DIAMOND_MINE, STR_CONSTRUCT_DIAMOND_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 107+3, 118+3, STR_0256_COPPER_ORE_MINE, STR_CONSTRUCT_COPPER_ORE_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 120+3, 131+3, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 133+3, 144+3, STR_0251_FRUIT_PLANTATION, STR_CONSTRUCT_FRUIT_PLANTATION_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 146+3, 157+3, STR_0252_RUBBER_PLANTATION,STR_CONSTRUCT_RUBBER_PLANTATION_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 159+3, 170+3, STR_0253_WATER_SUPPLY, STR_CONSTRUCT_WATER_SUPPLY_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 81+3, 92+3, STR_024A_OIL_WELLS,STR_CONSTRUCT_OIL_WELLS_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 94+3, 105+3, STR_0255_DIAMOND_MINE, STR_CONSTRUCT_DIAMOND_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 107+3, 118+3, STR_0256_COPPER_ORE_MINE, STR_CONSTRUCT_COPPER_ORE_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 120+3, 131+3, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 133+3, 144+3, STR_0251_FRUIT_PLANTATION, STR_CONSTRUCT_FRUIT_PLANTATION_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 146+3, 157+3, STR_0252_RUBBER_PLANTATION,STR_CONSTRUCT_RUBBER_PLANTATION_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 159+3, 170+3, STR_0253_WATER_SUPPLY, STR_CONSTRUCT_WATER_SUPPLY_TIP},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _build_industry_land3_widgets_extra[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 169, 14, 187, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 187, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
|
||||
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 68+3, 79+3, STR_0257_COTTON_CANDY_FOREST,STR_CONSTRUCT_COTTON_CANDY_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 81+3, 92+3, STR_0259_BATTERY_FARM, STR_CONSTRUCT_BATTERY_FARM_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 94+3, 105+3, STR_025A_COLA_WELLS, STR_CONSTRUCT_COLA_WELLS_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 107+3, 118+3, STR_025D_PLASTIC_FOUNTAINS,STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 120+3, 131+3, STR_025F_BUBBLE_GENERATOR, STR_CONSTRUCT_BUBBLE_GENERATOR_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 133+3, 144+3, STR_0260_TOFFEE_QUARRY, STR_CONSTRUCT_TOFFEE_QUARRY_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 167, 146+3, 157+3, STR_0261_SUGAR_MINE, STR_CONSTRUCT_SUGAR_MINE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68+3, 79+3, STR_0257_COTTON_CANDY_FOREST,STR_CONSTRUCT_COTTON_CANDY_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 81+3, 92+3, STR_0259_BATTERY_FARM, STR_CONSTRUCT_BATTERY_FARM_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 94+3, 105+3, STR_025A_COLA_WELLS, STR_CONSTRUCT_COLA_WELLS_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 107+3, 118+3, STR_025D_PLASTIC_FOUNTAINS,STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 120+3, 131+3, STR_025F_BUBBLE_GENERATOR, STR_CONSTRUCT_BUBBLE_GENERATOR_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 133+3, 144+3, STR_0260_TOFFEE_QUARRY, STR_CONSTRUCT_TOFFEE_QUARRY_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 146+3, 157+3, STR_0261_SUGAR_MINE, STR_CONSTRUCT_SUGAR_MINE_TIP},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -260,33 +264,37 @@ static const WindowDesc * const _industry_window_desc[2][4] = {
|
||||
},
|
||||
};
|
||||
|
||||
void ShowBuildIndustryWindow()
|
||||
void ShowBuildIndustryWindow(void)
|
||||
{
|
||||
AllocateWindowDescFront(_industry_window_desc[_patches.build_rawmaterial_ind][_opt.landscape],0);
|
||||
}
|
||||
|
||||
#define NEED_ALTERB (_game_mode == GM_EDITOR && i->accepts_cargo[0] == CT_INVALID)
|
||||
static void IndustryViewWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
Industry *i;
|
||||
StringID str;
|
||||
// WP(w,vp2_d).data_1 is for the editbox line
|
||||
// WP(w,vp2_d).data_2 is for the clickline
|
||||
// WP(w,vp2_d).data_3 is for the click pos (left or right)
|
||||
|
||||
switch(e->event) {
|
||||
case WE_PAINT:
|
||||
case WE_PAINT: {
|
||||
const Industry *i;
|
||||
StringID str;
|
||||
// in editor, use bulldoze to destroy industry
|
||||
// Destroy Industry button costing money removed per request of dominik
|
||||
//w->disabled_state = (_patches.extra_dynamite && !_networking && _game_mode != GM_EDITOR) ? 0 : (1 << 6);
|
||||
i = DEREF_INDUSTRY(w->window_number);
|
||||
i = GetIndustry(w->window_number);
|
||||
SetDParam(0, i->town->index);
|
||||
SetDParam(1, i->type + STR_4802_COAL_MINE);
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
if (i->accepts_cargo[0] != 0xFF) {
|
||||
if (i->accepts_cargo[0] != CT_INVALID) {
|
||||
SetDParam(0, _cargoc.names_s[i->accepts_cargo[0]]);
|
||||
str = STR_4827_REQUIRES;
|
||||
if (i->accepts_cargo[1] != 0xFF) {
|
||||
if (i->accepts_cargo[1] != CT_INVALID) {
|
||||
SetDParam(1, _cargoc.names_s[i->accepts_cargo[1]]);
|
||||
str++;
|
||||
if (i->accepts_cargo[2] != 0xFF) {
|
||||
if (i->accepts_cargo[2] != CT_INVALID) {
|
||||
SetDParam(2, _cargoc.names_s[i->accepts_cargo[2]]);
|
||||
str++;
|
||||
}
|
||||
@@ -294,34 +302,92 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
|
||||
DrawString(2, 107, str, 0);
|
||||
}
|
||||
|
||||
if (i->produced_cargo[0] != 0xFF) {
|
||||
if (i->produced_cargo[0] != CT_INVALID) {
|
||||
DrawString(2, 117, STR_482A_PRODUCTION_LAST_MONTH, 0);
|
||||
|
||||
SetDParam(1, i->total_production[0]);
|
||||
SetDParam(0, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
|
||||
SetDParam(2, i->pct_transported[0] * 100 >> 8);
|
||||
DrawString(4, 127, STR_482B_TRANSPORTED, 0);
|
||||
DrawString(4 + (NEED_ALTERB ? 30 : 0), 127, STR_482B_TRANSPORTED, 0);
|
||||
// Let's put out those buttons..
|
||||
if (NEED_ALTERB)
|
||||
DrawArrowButtons(5, 127, (WP(w,vp2_d).data_2 == 1 ? WP(w,vp2_d).data_3 : 0));
|
||||
|
||||
if (i->produced_cargo[1] != 0xFF) {
|
||||
if (i->produced_cargo[1] != CT_INVALID) {
|
||||
SetDParam(1, i->total_production[1]);
|
||||
SetDParam(0, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
|
||||
SetDParam(2, i->pct_transported[1] * 100 >> 8);
|
||||
DrawString(4, 137, STR_482B_TRANSPORTED, 0);
|
||||
DrawString(4 + (NEED_ALTERB ? 30 : 0), 137, STR_482B_TRANSPORTED, 0);
|
||||
// Let's put out those buttons..
|
||||
if (NEED_ALTERB)
|
||||
DrawArrowButtons(5, 137, (WP(w,vp2_d).data_2 == 2 ? WP(w,vp2_d).data_3 : 0));
|
||||
}
|
||||
}
|
||||
|
||||
DrawWindowViewport(w);
|
||||
}
|
||||
break;
|
||||
|
||||
case WE_CLICK:
|
||||
case WE_CLICK: {
|
||||
Industry *i;
|
||||
|
||||
switch(e->click.widget) {
|
||||
case 5: {
|
||||
int line;
|
||||
int x;
|
||||
byte b;
|
||||
|
||||
i = GetIndustry(w->window_number);
|
||||
|
||||
// We should only work in editor
|
||||
if (_game_mode != GM_EDITOR)
|
||||
return;
|
||||
|
||||
// And if the industry is raw-material producer
|
||||
if (i->accepts_cargo[0] != CT_INVALID)
|
||||
return;
|
||||
|
||||
x = e->click.pt.x;
|
||||
line = (e->click.pt.y - 127) / 10;
|
||||
if (e->click.pt.y >= 127 && IS_INT_INSIDE(line, 0, 2) && i->produced_cargo[line]) {
|
||||
if (IS_INT_INSIDE(x, 5, 25) ) {
|
||||
// clicked buttons
|
||||
if (x < 15) {
|
||||
// decrease
|
||||
i->production_rate[line] /= 2;
|
||||
if (i->production_rate[line] < 4)
|
||||
i->production_rate[line] = 4;
|
||||
} else {
|
||||
// increase
|
||||
b = i->production_rate[line] * 2;
|
||||
if (i->production_rate[line] >= 128)
|
||||
b=255;
|
||||
i->production_rate[line] = b;
|
||||
}
|
||||
UpdateIndustryProduction(i);
|
||||
SetWindowDirty(w);
|
||||
w->flags4 |= 5 << WF_TIMEOUT_SHL;
|
||||
WP(w,vp2_d).data_2 = line+1;
|
||||
WP(w,vp2_d).data_3 = (x < 15 ? 1 : 2);
|
||||
} else if (IS_INT_INSIDE(x, 34, 160)) {
|
||||
// clicked the text
|
||||
WP(w,vp2_d).data_1 = line;
|
||||
SetDParam(0, i->production_rate[line] * 8);
|
||||
ShowQueryString(STR_CONFIG_PATCHES_INT32,
|
||||
STR_CONFIG_GAME_PRODUCTION,
|
||||
10, 100, w->window_class,
|
||||
w->window_number);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
i = DEREF_INDUSTRY(w->window_number);
|
||||
i = GetIndustry(w->window_number);
|
||||
ScrollMainWindowToTile(i->xy + TILE_XY(1,1));
|
||||
break;
|
||||
case 7:
|
||||
// Destroy Industry button costing money removed per request of dominik
|
||||
//i = DEREF_INDUSTRY(w->window_number);
|
||||
//i = GetIndustry(w->window_number);
|
||||
/* passing only i->xy is not safe if industry has a weird shape like:
|
||||
_ X X
|
||||
X X X
|
||||
@@ -331,21 +397,54 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
|
||||
//DoCommandP(i->xy, w->window_number, 0, CcPlaySound10, CMD_DESTROY_INDUSTRY | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WE_TIMEOUT:
|
||||
WP(w,vp2_d).data_2 = 0;
|
||||
WP(w,vp2_d).data_3 = 0;
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
|
||||
case WE_ON_EDIT_TEXT:
|
||||
if (*e->edittext.str) {
|
||||
Industry *i;
|
||||
int val;
|
||||
int line;
|
||||
|
||||
i = GetIndustry(w->window_number);
|
||||
line = WP(w,vp2_d).data_1;
|
||||
val = atoi(e->edittext.str);
|
||||
if (!IS_INT_INSIDE(val, 32, 2040)) {
|
||||
if (val < 32) val = 32;
|
||||
else val = 2040;
|
||||
}
|
||||
i->production_rate[line] = (byte)(val / 8);
|
||||
UpdateIndustryProduction(i);
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void UpdateIndustryProduction(Industry *i)
|
||||
{
|
||||
if (i->produced_cargo[0] != CT_INVALID)
|
||||
i->total_production[0] = 8 * i->production_rate[0];
|
||||
|
||||
if (i->produced_cargo[1] != CT_INVALID)
|
||||
i->total_production[1] = 8 * i->production_rate[1];
|
||||
}
|
||||
|
||||
static const Widget _industry_view_widgets[] = {
|
||||
{ WWT_TEXTBTN, 9, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 9, 11, 247, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, 9, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_IMGBTN, 9, 0, 259, 14, 105, 0x0, STR_NULL},
|
||||
{ WWT_6, 9, 2, 257, 16, 103, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 9, 0, 259, 106, 147, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, 9, 0, 129, 148, 159, STR_00E4_LOCATION, STR_482C_CENTER_THE_MAIN_VIEW_ON},
|
||||
{ WWT_IMGBTN, 9, 130, 259, 148, 159, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 9, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 9, 11, 247, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 9, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 9, 0, 259, 14, 105, 0x0, STR_NULL},
|
||||
{ WWT_6, RESIZE_NONE, 9, 2, 257, 16, 103, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 9, 0, 259, 106, 147, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 9, 0, 129, 148, 159, STR_00E4_LOCATION, STR_482C_CENTER_THE_MAIN_VIEW_ON},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 9, 130, 259, 148, 159, 0x0, STR_NULL},
|
||||
// Destroy Industry button costing money removed per request of dominik
|
||||
//{ WWT_PUSHTXTBTN, 9, 130, 259, 148, 159, STR_INDUSTRYDIR_DESTROY, STR_482C_DESTROY_INDUSTRY},
|
||||
//{ WWT_PUSHTXTBTN, RESIZE_NONE, 9, 130, 259, 148, 159, STR_INDUSTRYDIR_DESTROY, STR_482C_DESTROY_INDUSTRY},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -365,30 +464,33 @@ void ShowIndustryViewWindow(int industry)
|
||||
w = AllocateWindowDescFront(&_industry_view_desc, industry);
|
||||
if (w) {
|
||||
w->flags4 |= WF_DISABLE_VP_SCROLL;
|
||||
i = DEREF_INDUSTRY(w->window_number);
|
||||
WP(w,vp2_d).data_1 = 0;
|
||||
WP(w,vp2_d).data_2 = 0;
|
||||
WP(w,vp2_d).data_3 = 0;
|
||||
i = GetIndustry(w->window_number);
|
||||
AssignWindowViewport(w, 3, 17, 0xFE, 0x56, i->xy + TILE_XY(1,1), 1);
|
||||
}
|
||||
}
|
||||
|
||||
static const Widget _industry_directory_widgets[] = {
|
||||
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 13, 11, 495, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, 13, 496, 507, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PUSHTXTBTN, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, 13, 301, 400, 14, 25, STR_SORT_BY_TRANSPORTED, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PANEL, 13, 401, 496, 14, 25, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 13, 0, 496, 26, 189, 0x0, STR_200A_TOWN_NAMES_CLICK_ON_NAME},
|
||||
{ WWT_SCROLLBAR, 13, 497, 507, 14, 189, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 13, 11, 495, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 13, 496, 507, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 301, 400, 14, 25, STR_SORT_BY_TRANSPORTED, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PANEL, RESIZE_NONE, 13, 401, 495, 14, 25, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_BOTTOM, 13, 0, 495, 26, 189, 0x0, STR_200A_TOWN_NAMES_CLICK_ON_NAME},
|
||||
{ WWT_SCROLLBAR, RESIZE_BOTTOM, 13, 496, 507, 14, 177, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_RESIZEBOX, RESIZE_TB, 13, 496, 507, 178, 189, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static byte _industry_sort[lengthof(_industries)];
|
||||
static uint _num_industry_sort;
|
||||
|
||||
static char _bufcache[96];
|
||||
static byte _last_industry_idx;
|
||||
static uint16 _last_industry_idx;
|
||||
|
||||
static byte _industry_sort_order;
|
||||
|
||||
@@ -396,8 +498,8 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
|
||||
{
|
||||
char buf1[96];
|
||||
byte val;
|
||||
Industry *i = DEREF_INDUSTRY(*(const byte*)a);
|
||||
Industry *j = DEREF_INDUSTRY(*(const byte*)b);
|
||||
Industry *i = GetIndustry(*(const uint16*)a);
|
||||
Industry *j = GetIndustry(*(const uint16*)b);
|
||||
int r = 0;
|
||||
|
||||
switch (_industry_sort_order >> 1) {
|
||||
@@ -441,7 +543,7 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
|
||||
SetDParam(0, i->town->townnameparts);
|
||||
GetString(buf1, i->town->townnametype);
|
||||
|
||||
if ( (val=*(const byte*)b) != _last_industry_idx) {
|
||||
if ( (val=*(const uint16*)b) != _last_industry_idx) {
|
||||
_last_industry_idx = val;
|
||||
SetDParam(0, j->town->townnameparts);
|
||||
GetString(_bufcache, j->town->townnametype);
|
||||
@@ -453,19 +555,24 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
|
||||
return r;
|
||||
}
|
||||
|
||||
static void MakeSortedIndustryList()
|
||||
static void MakeSortedIndustryList(void)
|
||||
{
|
||||
Industry *i;
|
||||
int n = 0, index = 0;
|
||||
int n = 0;
|
||||
|
||||
for(i=_industries; i != endof(_industries); i++) {
|
||||
if(i->xy) _industry_sort[n++] = index;
|
||||
index++;
|
||||
/* Create array for sorting */
|
||||
_industry_sort = realloc(_industry_sort, _industries_size * sizeof(_industry_sort[0]));
|
||||
if (_industry_sort == NULL)
|
||||
error("Could not allocate memory for the industry-sorting-list");
|
||||
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
if(i->xy)
|
||||
_industry_sort[n++] = i->index;
|
||||
}
|
||||
_num_industry_sort = n;
|
||||
_last_industry_idx = 255; // used for "cache"
|
||||
_last_industry_idx = 0xFFFF; // used for "cache"
|
||||
|
||||
qsort(_industry_sort, n, 1, GeneralIndustrySorter);
|
||||
qsort(_industry_sort, n, sizeof(_industry_sort[0]), GeneralIndustrySorter);
|
||||
|
||||
DEBUG(misc, 1) ("Resorting Industries list...");
|
||||
}
|
||||
@@ -494,7 +601,7 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
|
||||
n = 0;
|
||||
|
||||
while (p < _num_industry_sort) {
|
||||
i = DEREF_INDUSTRY(_industry_sort[p]);
|
||||
i = GetIndustry(_industry_sort[p]);
|
||||
SetDParam(0, i->town->index);
|
||||
SetDParam(1, i->type + STR_4802_COAL_MINE);
|
||||
if (i->produced_cargo[0] != 0xFF) {
|
||||
@@ -515,7 +622,7 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
|
||||
DrawString(4, 28+n*10, STR_INDUSTRYDIR_ITEM_NOPROD, 0);
|
||||
}
|
||||
p++;
|
||||
if (++n == 16)
|
||||
if (++n == w->vscroll.cap)
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
@@ -548,14 +655,14 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
case 8: {
|
||||
int y = (e->click.pt.y - 28) / 10;
|
||||
byte p;
|
||||
uint16 p;
|
||||
Industry *c;
|
||||
|
||||
if (!IS_INT_INSIDE(y, 0, 16))
|
||||
if (!IS_INT_INSIDE(y, 0, w->vscroll.cap))
|
||||
return;
|
||||
p = y + w->vscroll.pos;
|
||||
if (p < _num_industry_sort) {
|
||||
c = DEREF_INDUSTRY(_industry_sort[p]);
|
||||
c = GetIndustry(_industry_sort[p]);
|
||||
ScrollMainWindowToTile(c->xy);
|
||||
}
|
||||
} break;
|
||||
@@ -565,6 +672,10 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
|
||||
case WE_4:
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
|
||||
case WE_RESIZE:
|
||||
w->vscroll.cap += e->sizing.diff.y / 10;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -573,14 +684,14 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
|
||||
static const WindowDesc _industry_directory_desc = {
|
||||
-1, -1, 508, 190,
|
||||
WC_INDUSTRY_DIRECTORY,0,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
|
||||
_industry_directory_widgets,
|
||||
IndustryDirectoryWndProc
|
||||
};
|
||||
|
||||
|
||||
|
||||
void ShowIndustryDirectory()
|
||||
void ShowIndustryDirectory(void)
|
||||
{
|
||||
/* Industry List */
|
||||
Window *w;
|
||||
@@ -588,6 +699,8 @@ void ShowIndustryDirectory()
|
||||
w = AllocateWindowDescFront(&_industry_directory_desc, 0);
|
||||
if (w) {
|
||||
w->vscroll.cap = 16;
|
||||
w->resize.height = w->height - 6 * 10; // minimum 10 items
|
||||
w->resize.step_height = 10;
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,28 +19,28 @@ static void ShowSelectTutorialWindow()
|
||||
*/
|
||||
|
||||
static const Widget _select_game_widgets[] = {
|
||||
{ WWT_CAPTION, 13, 0, 335, 0, 13, STR_0307_OPENTTD, STR_NULL},
|
||||
{ WWT_IMGBTN, 13, 0, 335, 14, 196, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, 12, 10, 167, 22, 33, STR_0140_NEW_GAME, STR_02FB_START_A_NEW_GAME},
|
||||
{ WWT_PUSHTXTBTN, 12, 168, 325, 22, 33, STR_0141_LOAD_GAME, STR_02FC_LOAD_A_SAVED_GAME},
|
||||
//{ WWT_PUSHTXTBTN, 12, 10, 167, 177, 188, STR_0142_TUTORIAL_DEMONSTRATION, STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS},
|
||||
{ WWT_PUSHTXTBTN, 12, 10, 167, 177, 188, STR_CONFIG_PATCHES, STR_CONFIG_PATCHES_TIP},
|
||||
{ WWT_PUSHTXTBTN, 12, 10, 167, 40, 51, STR_0220_CREATE_SCENARIO,STR_02FE_CREATE_A_CUSTOMIZED_GAME},
|
||||
{ WWT_PUSHTXTBTN, 12, 10, 167, 136, 147, STR_SINGLE_PLAYER, STR_02FF_SELECT_SINGLE_PLAYER_GAME},
|
||||
{ WWT_PUSHTXTBTN, 12, 168, 325, 136, 147, STR_MULTIPLAYER, STR_0300_SELECT_MULTIPLAYER_GAME},
|
||||
{ WWT_PUSHTXTBTN, 12, 10, 167, 159, 170, STR_0148_GAME_OPTIONS, STR_0301_DISPLAY_GAME_OPTIONS},
|
||||
{ WWT_PUSHTXTBTN, 12, 168, 325, 159, 170, STR_01FE_DIFFICULTY, STR_0302_DISPLAY_DIFFICULTY_OPTIONS},
|
||||
{ WWT_PUSHTXTBTN, 12, 168, 325, 40, 51, STR_029A_PLAY_SCENARIO, STR_0303_START_A_NEW_GAME_USING},
|
||||
{ WWT_PUSHTXTBTN, 12, 168, 325, 177, 188, STR_0304_QUIT, STR_0305_QUIT_OPENTTD},
|
||||
{ WWT_PANEL_2, 12, 10, 85, 69, 122, 0x1312, STR_030E_SELECT_TEMPERATE_LANDSCAPE},
|
||||
{ WWT_PANEL_2, 12, 90, 165, 69, 122, 0x1314, STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE},
|
||||
{ WWT_PANEL_2, 12, 170, 245, 69, 122, 0x1316, STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE},
|
||||
{ WWT_PANEL_2, 12, 250, 325, 69, 122, 0x1318, STR_0311_SELECT_TOYLAND_LANDSCAPE},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 13, 0, 335, 0, 13, STR_0307_OPENTTD, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 13, 0, 335, 14, 196, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 22, 33, STR_0140_NEW_GAME, STR_02FB_START_A_NEW_GAME},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 22, 33, STR_0141_LOAD_GAME, STR_02FC_LOAD_A_SAVED_GAME},
|
||||
//{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 177, 188, STR_0142_TUTORIAL_DEMONSTRATION, STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 177, 188, STR_CONFIG_PATCHES, STR_CONFIG_PATCHES_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 40, 51, STR_0220_CREATE_SCENARIO,STR_02FE_CREATE_A_CUSTOMIZED_GAME},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 136, 147, STR_SINGLE_PLAYER, STR_02FF_SELECT_SINGLE_PLAYER_GAME},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 136, 147, STR_MULTIPLAYER, STR_0300_SELECT_MULTIPLAYER_GAME},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 159, 170, STR_0148_GAME_OPTIONS, STR_0301_DISPLAY_GAME_OPTIONS},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 159, 170, STR_01FE_DIFFICULTY, STR_0302_DISPLAY_DIFFICULTY_OPTIONS},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 40, 51, STR_029A_PLAY_SCENARIO, STR_0303_START_A_NEW_GAME_USING},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 177, 188, STR_0304_QUIT, STR_0305_QUIT_OPENTTD},
|
||||
{ WWT_PANEL_2, RESIZE_NONE, 12, 10, 85, 69, 122, 0x1312, STR_030E_SELECT_TEMPERATE_LANDSCAPE},
|
||||
{ WWT_PANEL_2, RESIZE_NONE, 12, 90, 165, 69, 122, 0x1314, STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE},
|
||||
{ WWT_PANEL_2, RESIZE_NONE, 12, 170, 245, 69, 122, 0x1316, STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE},
|
||||
{ WWT_PANEL_2, RESIZE_NONE, 12, 250, 325, 69, 122, 0x1318, STR_0311_SELECT_TOYLAND_LANDSCAPE},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
extern void HandleOnEditText(WindowEvent *e);
|
||||
extern void HandleOnEditTextCancel();
|
||||
extern void HandleOnEditTextCancel(void);
|
||||
|
||||
static void SelectGameWndProc(Window *w, WindowEvent *e) {
|
||||
switch(e->event) {
|
||||
@@ -94,7 +94,7 @@ static const WindowDesc _select_game_desc = {
|
||||
SelectGameWndProc
|
||||
};
|
||||
|
||||
void ShowSelectGameWindow()
|
||||
void ShowSelectGameWindow(void)
|
||||
{
|
||||
AllocateWindowDesc(&_select_game_desc);
|
||||
}
|
||||
@@ -177,11 +177,11 @@ int32 CmdStartScenario(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
|
||||
|
||||
static const Widget _ask_abandon_game_widgets[] = {
|
||||
{ WWT_TEXTBTN, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 4, 11, 179, 0, 13, STR_00C7_QUIT, STR_NULL},
|
||||
{ WWT_IMGBTN, 4, 0, 179, 14, 91, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
|
||||
{ WWT_TEXTBTN, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 179, 0, 13, STR_00C7_QUIT, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 4, 0, 179, 14, 91, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -197,8 +197,10 @@ static void AskAbandonGameWndProc(Window *w, WindowEvent *e) {
|
||||
SetDParam(0, STR_OSNAME_BEOS);
|
||||
#elif defined(__MORPHOS__)
|
||||
SetDParam(0, STR_OSNAME_MORPHOS);
|
||||
#elif defined(__AMIGA__)
|
||||
#elif defined(__AMIGA__)
|
||||
SetDParam(0, STR_OSNAME_AMIGAOS);
|
||||
#elif defined(__OS2__)
|
||||
SetDParam(0, STR_OSNAME_OS2);
|
||||
#else
|
||||
SetDParam(0, STR_0134_UNIX);
|
||||
#endif
|
||||
@@ -230,18 +232,18 @@ static const WindowDesc _ask_abandon_game_desc = {
|
||||
AskAbandonGameWndProc
|
||||
};
|
||||
|
||||
void AskExitGame()
|
||||
void AskExitGame(void)
|
||||
{
|
||||
AllocateWindowDescFront(&_ask_abandon_game_desc, 0);
|
||||
}
|
||||
|
||||
|
||||
static const Widget _ask_quit_game_widgets[] = {
|
||||
{ WWT_TEXTBTN, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 4, 11, 179, 0, 13, STR_0161_QUIT_GAME, STR_NULL},
|
||||
{ WWT_IMGBTN, 4, 0, 179, 14, 91, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
|
||||
{ WWT_TEXTBTN, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 179, 0, 13, STR_0161_QUIT_GAME, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 4, 0, 179, 14, 91, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -283,7 +285,7 @@ static const WindowDesc _ask_quit_game_desc = {
|
||||
};
|
||||
|
||||
|
||||
void AskExitToGameMenu()
|
||||
void AskExitToGameMenu(void)
|
||||
{
|
||||
AllocateWindowDescFront(&_ask_quit_game_desc, 0);
|
||||
}
|
||||
|
||||
@@ -11,56 +11,63 @@ go to: http://www.tt-forums.net/viewtopic.php?t=9576
|
||||
Of course if you have more knowledge about any of these bugs, have more
|
||||
specifics, we welcome you to report them. React to the given bug indicated
|
||||
by the number below on http://sourceforge.net/tracker/?group_id=103924&atid=636365
|
||||
If the the bug-report is closed, it has been fixed, which then can be verified
|
||||
If the the bug report is closed, it has been fixed, which then can be verified
|
||||
in the latest SVN version.
|
||||
|
||||
Bugs for 0.3.5
|
||||
Bugs for 0.3.6
|
||||
------------------------------------------------------------------------
|
||||
URL: http://sourceforge.net/tracker/?atid=636365&group_id=103924&func=browse
|
||||
-1108615 Catchment area mis-behaving
|
||||
-1108610 console logging file type
|
||||
-1108442 autorenew takes precedence over autoreplace
|
||||
-1107889 server crash and assertion error
|
||||
-1106356 re-offered prototypes
|
||||
-1104670 Vans in the depot
|
||||
-1104519 train pathfinding with new patch
|
||||
-1104105 script error (r1547)
|
||||
-1103068 game crashes after reversing train in deport
|
||||
-1101874 load savegames (and autosave) with dedicated server
|
||||
-1099694 incorrect player colors
|
||||
-1099233 production down before it's working
|
||||
-1098696 Airport shadow remains after crashing
|
||||
-1098238 Crash after lone wagon sighting
|
||||
-1093191 2 problems with multiplayer savegames
|
||||
-1085486 Subsidies: Only count when station is in right suburb
|
||||
-1084797 building stretch leaves gap
|
||||
-1084789 delivered cargo bug
|
||||
-1083941 Train gui crash assertion error
|
||||
-1083717 graphical glitch
|
||||
-1083710 Reverse train in depot crashes OpenTTD
|
||||
-1074623 bus pathfinding inadequacies
|
||||
-1074610 overtaking at signals bug
|
||||
-1065168 accept iron ore doesn't produce steel
|
||||
-1060686 changing (load) order doesn't take effect immediately
|
||||
-1053339 depot/station looping
|
||||
-1050990 Buying trains sometimes accounted for incorrectly
|
||||
-1040119 Flood and wagons in depot
|
||||
-1034778 train breaksdown, when breaks set to none
|
||||
-1033300 signal bug
|
||||
-1030918 Negative city population
|
||||
-1030502 Buying up a company isn't complete
|
||||
-1024703 Infinite access of A: when saving and no disk in drive
|
||||
-997251 Realistic acceleration: Trains don't slow down in curves
|
||||
-996503 Sound volume bug
|
||||
-992677 BeOS MIDI does not initialise on newer BeOS releases
|
||||
-985475 Different kinds of signals in same tile? [Bug]
|
||||
-980271 Realistic acceleration bug / Lev4 Chimaera becomes useless
|
||||
-978372 Inconsistent stopping.
|
||||
-985475 Different kinds of signals in same tile?
|
||||
-978372 Inconsistent stopping
|
||||
-968036 Ship blocked at the edge
|
||||
|
||||
Minor Bugs for 0.3.5
|
||||
Minor Bugs for 0.3.6
|
||||
------------------------------------------------------------------------
|
||||
URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
|
||||
|
||||
-1106889 Chat Interface enhancements
|
||||
-1104968 void order message
|
||||
-1104358 train lost message - history
|
||||
-1102174 Bug if 3 people buy 25% shares in one company
|
||||
-1099429 show vehicle speed, text too long
|
||||
-1090495 Bridges and straight lakesides
|
||||
-1087407 wrong message in history
|
||||
-1084620 Minor bug considering buses/trucks
|
||||
-1034310 color mauve in diagrams
|
||||
-1031451 Catchment area shows when buying sign.
|
||||
-1031184 Smoke visible through tunnel
|
||||
-1030661 It's possible to build a tunnel under oil wells
|
||||
-1009171 Canals and locks at sea level cause flooding
|
||||
-998902 Annoying out-of-date message
|
||||
-993516 Canal + bouy -> wrong graphics.
|
||||
-987891 Large UFO destruction bug
|
||||
-987884 farm fences
|
||||
-987883 Aircraft landing/taking off
|
||||
-987880 company league table updating
|
||||
-985927 many carriages in depot
|
||||
-985924 aircraft taxi speed
|
||||
-980276 Overflow in factory directory
|
||||
-976824 transmitter base
|
||||
|
||||
@@ -45,20 +45,20 @@ uint GetTileSlope(uint tile, int *h)
|
||||
uint a,b,c,d,min;
|
||||
int r;
|
||||
|
||||
if (GET_TILE_X(tile) == TILE_X_MAX || GET_TILE_Y(tile) == TILE_Y_MAX) {
|
||||
if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY()) {
|
||||
if (h)
|
||||
*h = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
assert(tile < TILES_X * TILES_Y && GET_TILE_X(tile) != TILE_X_MAX && GET_TILE_Y(tile) != TILE_Y_MAX);
|
||||
assert(tile < MapSize() && TileX(tile) != MapMaxX() && TileY(tile) != MapMaxY());
|
||||
|
||||
min = a = _map_type_and_height[tile] & 0xF;
|
||||
b = _map_type_and_height[tile+TILE_XY(1,0)] & 0xF;
|
||||
min = a = TileHeight(tile);
|
||||
b = TileHeight(tile + TILE_XY(1,0));
|
||||
if (min >= b) min = b;
|
||||
c = _map_type_and_height[tile+TILE_XY(0,1)] & 0xF;
|
||||
c = TileHeight(tile + TILE_XY(0,1));
|
||||
if (min >= c) min = c;
|
||||
d = _map_type_and_height[tile+TILE_XY(1,1)] & 0xF;
|
||||
d = TileHeight(tile + TILE_XY(1,1));
|
||||
if (min >= d) min = d;
|
||||
|
||||
r = 0;
|
||||
@@ -82,10 +82,9 @@ int GetTileZ(uint tile)
|
||||
|
||||
void FindLandscapeHeightByTile(TileInfo *ti, uint tile)
|
||||
{
|
||||
if (GET_TILE_X(tile) == TILE_X_MAX ||
|
||||
GET_TILE_Y(tile) == TILE_Y_MAX) {
|
||||
if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY()) {
|
||||
ti->tileh = 0;
|
||||
ti->type = MP_STRANGE;
|
||||
ti->type = MP_VOID;
|
||||
ti->tile = 0;
|
||||
ti->map5 = 0;
|
||||
ti->z = 0;
|
||||
@@ -94,7 +93,7 @@ void FindLandscapeHeightByTile(TileInfo *ti, uint tile)
|
||||
|
||||
ti->tile = tile;
|
||||
ti->map5 = _map5[tile];
|
||||
ti->type = GET_TILETYPE(tile);
|
||||
ti->type = TileType(tile);
|
||||
ti->tileh = GetTileSlope(tile, &ti->z);
|
||||
// ti->z = min * 8;
|
||||
}
|
||||
@@ -107,9 +106,9 @@ void FindLandscapeHeight(TileInfo *ti, uint x, uint y)
|
||||
ti->x = x;
|
||||
ti->y = y;
|
||||
|
||||
if (x >= TILE_X_MAX*16-1 || y >= TILE_Y_MAX*16-1) {
|
||||
if (x >= MapMaxX() * 16 - 1 || y >= MapMaxY() * 16 - 1) {
|
||||
ti->tileh = 0;
|
||||
ti->type = MP_STRANGE;
|
||||
ti->type = MP_VOID;
|
||||
ti->tile = 0;
|
||||
ti->map5 = 0;
|
||||
ti->z = 0;
|
||||
@@ -235,7 +234,7 @@ uint GetSlopeZ(int x, int y)
|
||||
|
||||
// direction=true: check for foundation in east and south corner
|
||||
// direction=false: check for foundation in west and south corner
|
||||
bool hasFoundation(TileInfo *ti, bool direction)
|
||||
static bool hasFoundation(TileInfo *ti, bool direction)
|
||||
{
|
||||
bool south, other; // southern corner and east/west corner
|
||||
uint slope = _tile_type_procs[ti->type]->get_slope_tileh_proc(ti);
|
||||
@@ -296,28 +295,28 @@ void DoClearSquare(uint tile)
|
||||
|
||||
uint32 GetTileTrackStatus(uint tile, TransportType mode)
|
||||
{
|
||||
return _tile_type_procs[GET_TILETYPE(tile)]->get_tile_track_status_proc(tile, mode);
|
||||
return _tile_type_procs[TileType(tile)]->get_tile_track_status_proc(tile, mode);
|
||||
}
|
||||
|
||||
void ChangeTileOwner(uint tile, byte old_player, byte new_player)
|
||||
{
|
||||
_tile_type_procs[GET_TILETYPE(tile)]->change_tile_owner_proc(tile, old_player, new_player);
|
||||
_tile_type_procs[TileType(tile)]->change_tile_owner_proc(tile, old_player, new_player);
|
||||
}
|
||||
|
||||
void GetAcceptedCargo(uint tile, AcceptedCargo ac)
|
||||
{
|
||||
memset(ac, 0, sizeof(AcceptedCargo));
|
||||
_tile_type_procs[GET_TILETYPE(tile)]->get_accepted_cargo_proc(tile, ac);
|
||||
_tile_type_procs[TileType(tile)]->get_accepted_cargo_proc(tile, ac);
|
||||
}
|
||||
|
||||
void AnimateTile(uint tile)
|
||||
{
|
||||
_tile_type_procs[GET_TILETYPE(tile)]->animate_tile_proc(tile);
|
||||
_tile_type_procs[TileType(tile)]->animate_tile_proc(tile);
|
||||
}
|
||||
|
||||
void ClickTile(uint tile)
|
||||
{
|
||||
_tile_type_procs[GET_TILETYPE(tile)]->click_tile_proc(tile);
|
||||
_tile_type_procs[TileType(tile)]->click_tile_proc(tile);
|
||||
}
|
||||
|
||||
void DrawTile(TileInfo *ti)
|
||||
@@ -327,7 +326,7 @@ void DrawTile(TileInfo *ti)
|
||||
|
||||
void GetTileDesc(uint tile, TileDesc *td)
|
||||
{
|
||||
_tile_type_procs[GET_TILETYPE(tile)]->get_tile_desc_proc(tile, td);
|
||||
_tile_type_procs[TileType(tile)]->get_tile_desc_proc(tile, td);
|
||||
}
|
||||
|
||||
/* Clear a piece of landscape
|
||||
@@ -341,7 +340,7 @@ int32 CmdLandscapeClear(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
|
||||
|
||||
tile = TILE_FROM_XY(x,y);
|
||||
return _tile_type_procs[GET_TILETYPE(tile)]->clear_tile_proc(tile, flags);
|
||||
return _tile_type_procs[TileType(tile)]->clear_tile_proc(tile, flags);
|
||||
}
|
||||
|
||||
// p1 = end tile
|
||||
@@ -352,9 +351,11 @@ int32 CmdClearArea(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
|
||||
int x,y;
|
||||
bool success = false;
|
||||
|
||||
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
|
||||
|
||||
// make sure sx,sy are smaller than ex,ey
|
||||
sx = GET_TILE_X(p1)*16;
|
||||
sy = GET_TILE_Y(p1)*16;
|
||||
sx = TileX(p1) * 16;
|
||||
sy = TileY(p1) * 16;
|
||||
if (ex < sx) intswap(ex, sx);
|
||||
if (ey < sy) intswap(ey, sy);
|
||||
|
||||
@@ -399,7 +400,7 @@ void CDECL ModifyTile(uint tile, uint flags, ...)
|
||||
va_start(va, flags);
|
||||
|
||||
if ((i = (flags >> 8) & 0xF) != 0) {
|
||||
_map_type_and_height[tile] = (_map_type_and_height[tile]&~0xF0)|((i-1) << 4);
|
||||
SetTileType(tile, i - 1);
|
||||
}
|
||||
|
||||
if (flags & (MP_MAP2_CLEAR | MP_MAP2)) {
|
||||
@@ -444,15 +445,16 @@ void SetMapExtraBits(uint tile, byte bits)
|
||||
|
||||
uint GetMapExtraBits(uint tile)
|
||||
{
|
||||
return (_map_extra_bits[tile >> 2] >> (tile&3)*2)&3;
|
||||
assert(tile < MapSize());
|
||||
return (_map_extra_bits[tile >> 2] >> (tile & 3) * 2) & 3;
|
||||
}
|
||||
|
||||
#define TILELOOP_BITS 4
|
||||
#define TILELOOP_SIZE (1 << TILELOOP_BITS)
|
||||
#define TILELOOP_ASSERTMASK ((TILELOOP_SIZE-1) + ((TILELOOP_SIZE-1) << TILE_X_BITS))
|
||||
#define TILELOOP_CHKMASK (((1 << (TILE_X_BITS - TILELOOP_BITS))-1) << TILELOOP_BITS)
|
||||
#define TILELOOP_ASSERTMASK ((TILELOOP_SIZE-1) + ((TILELOOP_SIZE-1) << MapLogX()))
|
||||
#define TILELOOP_CHKMASK (((1 << (MapLogX() - TILELOOP_BITS))-1) << TILELOOP_BITS)
|
||||
|
||||
void RunTileLoop()
|
||||
void RunTileLoop(void)
|
||||
{
|
||||
uint tile;
|
||||
uint count;
|
||||
@@ -460,57 +462,59 @@ void RunTileLoop()
|
||||
tile = _cur_tileloop_tile;
|
||||
|
||||
assert( (tile & ~TILELOOP_ASSERTMASK) == 0);
|
||||
count = (TILES_X/TILELOOP_SIZE) * (TILES_Y/TILELOOP_SIZE);
|
||||
count = (MapSizeX() / TILELOOP_SIZE) * (MapSizeY() / TILELOOP_SIZE);
|
||||
do {
|
||||
_tile_type_procs[GET_TILETYPE(tile)]->tile_loop_proc(tile);
|
||||
_tile_type_procs[TileType(tile)]->tile_loop_proc(tile);
|
||||
|
||||
if ( GET_TILE_X(tile) < TILES_X - TILELOOP_SIZE) {
|
||||
if (TileX(tile) < MapSizeX() - TILELOOP_SIZE) {
|
||||
tile += TILELOOP_SIZE; /* no overflow */
|
||||
} else {
|
||||
tile = TILE_MASK(tile - TILELOOP_SIZE * (TILES_X/TILELOOP_SIZE-1) + TILE_XY(0, TILELOOP_SIZE)); /* x would overflow, also increase y */
|
||||
tile = TILE_MASK(tile - TILELOOP_SIZE * (MapSizeX() / TILELOOP_SIZE-1) + TILE_XY(0, TILELOOP_SIZE)); /* x would overflow, also increase y */
|
||||
}
|
||||
} while (--count);
|
||||
assert( (tile & ~TILELOOP_ASSERTMASK) == 0);
|
||||
|
||||
tile += 9;
|
||||
if (tile & TILELOOP_CHKMASK)
|
||||
tile = (tile + TILES_X) & TILELOOP_ASSERTMASK;
|
||||
tile = (tile + MapSizeX()) & TILELOOP_ASSERTMASK;
|
||||
_cur_tileloop_tile = tile;
|
||||
}
|
||||
|
||||
void InitializeLandscape()
|
||||
void InitializeLandscape(void)
|
||||
{
|
||||
uint map_size = MapSize();
|
||||
int i;
|
||||
uint i;
|
||||
|
||||
memset(_map_owner, OWNER_NONE, map_size);
|
||||
memset(_map2, 0, map_size);
|
||||
memset(_map2, 0, map_size * sizeof(uint16));
|
||||
memset(_map3_lo, 0, map_size);
|
||||
memset(_map3_hi, 0, map_size);
|
||||
memset(_map_extra_bits, 0, map_size / 4);
|
||||
memset(_map_type_and_height, MP_WATER << 4, map_size);
|
||||
memset(_map_type_and_height, MP_CLEAR << 4, map_size);
|
||||
|
||||
for(i=0; i!=TILES_Y-1; i++)
|
||||
memset(_map_type_and_height + i*TILES_X, 0, TILES_X-1);
|
||||
// create void tiles on the border
|
||||
for (i = 0; i != MapMaxY(); i++)
|
||||
_map_type_and_height[ i * MapSizeX() + MapMaxY() ] = MP_VOID << 4;
|
||||
memset(_map_type_and_height + MapMaxY() * MapSizeX(), MP_VOID << 4, MapSizeX());
|
||||
|
||||
memset(_map5, 3, map_size);
|
||||
}
|
||||
|
||||
void ConvertGroundTilesIntoWaterTiles()
|
||||
void ConvertGroundTilesIntoWaterTiles(void)
|
||||
{
|
||||
uint tile = 0;
|
||||
int h;
|
||||
|
||||
while(true) {
|
||||
if (IS_TILETYPE(tile, MP_CLEAR) && GetTileSlope(tile, &h) == 0 && h == 0) {
|
||||
_map_type_and_height[tile] = MP_WATER << 4;
|
||||
if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == 0 && h == 0) {
|
||||
SetTileType(tile, MP_WATER);
|
||||
_map5[tile] = 0;
|
||||
_map_owner[tile] = OWNER_WATER;
|
||||
}
|
||||
tile++;
|
||||
if (GET_TILE_X(tile) == TILE_X_MAX) {
|
||||
tile += TILE_XY(-TILE_X_MAX, 1);
|
||||
if (GET_TILE_Y(tile) == TILE_Y_MAX)
|
||||
if (TileX(tile) == MapMaxX()) {
|
||||
tile += TILE_XY(-(int)MapMaxX(), 1);
|
||||
if (TileY(tile) == MapMaxY())
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -522,7 +526,7 @@ static const byte _genterrain_tbl_2[5] = { 0, 0, 0, 0, 33 };
|
||||
static void GenerateTerrain(int type, int flag)
|
||||
{
|
||||
uint32 r;
|
||||
int x,y;
|
||||
uint x,y;
|
||||
int w,h;
|
||||
byte *p,*tile;
|
||||
byte direction;
|
||||
@@ -530,8 +534,8 @@ static void GenerateTerrain(int type, int flag)
|
||||
r = Random();
|
||||
p = GetSpritePtr((((r >> 24) * _genterrain_tbl_1[type]) >> 8) + _genterrain_tbl_2[type] + 4845);
|
||||
|
||||
x = r & TILE_X_MAX;
|
||||
y = (r >> TILE_X_BITS) & TILE_Y_MAX;
|
||||
x = r & MapMaxX();
|
||||
y = (r >> MapLogX()) & MapMaxY();
|
||||
|
||||
|
||||
if (x < 2 || y < 2)
|
||||
@@ -563,10 +567,10 @@ static void GenerateTerrain(int type, int flag)
|
||||
}
|
||||
}
|
||||
|
||||
if (x + w >= TILE_X_MAX-1)
|
||||
if (x + w >= MapMaxX() - 1)
|
||||
return;
|
||||
|
||||
if (y + h >= TILE_Y_MAX-1)
|
||||
if (y + h >= MapMaxY() - 1)
|
||||
return;
|
||||
|
||||
tile = &_map_type_and_height[TILE_XY(x,y)];
|
||||
@@ -623,41 +627,37 @@ static void GenerateTerrain(int type, int flag)
|
||||
|
||||
#include "table/genland.h"
|
||||
|
||||
static void CreateDesertOrRainForest()
|
||||
static void CreateDesertOrRainForest(void)
|
||||
{
|
||||
uint tile;
|
||||
const TileIndexDiff *data;
|
||||
byte mt;
|
||||
const TileIndexDiffC *data;
|
||||
int i;
|
||||
|
||||
tile = 0;
|
||||
do {
|
||||
data = _make_desert_or_rainforest_data;
|
||||
do {
|
||||
if ((i = *data++) == MDORD_LAST) {
|
||||
SetMapExtraBits(tile, 1);
|
||||
break;
|
||||
}
|
||||
mt = _map_type_and_height[TILE_MASK(tile + i)];
|
||||
} while ((mt & 0xC) == 0 && (mt >> 4) != MP_WATER);
|
||||
} while (++tile != TILES_X*TILES_Y);
|
||||
for (tile = 0; tile != MapSize(); ++tile) {
|
||||
for (data = _make_desert_or_rainforest_data;
|
||||
data != endof(_make_desert_or_rainforest_data); ++data) {
|
||||
TileIndex t = tile + ToTileIndexDiff(*data);
|
||||
if (TileHeight(t) >= 4 || IsTileType(t, MP_WATER)) break;
|
||||
}
|
||||
if (data == endof(_make_desert_or_rainforest_data))
|
||||
SetMapExtraBits(tile, 1);
|
||||
}
|
||||
|
||||
for(i=0; i!=256; i++)
|
||||
RunTileLoop();
|
||||
|
||||
tile = 0;
|
||||
do {
|
||||
data = _make_desert_or_rainforest_data;
|
||||
do {
|
||||
if ((i = *data++) == MDORD_LAST) {
|
||||
SetMapExtraBits(tile, 2);
|
||||
break;
|
||||
}
|
||||
} while ( !IS_TILETYPE(TILE_MASK(tile+i), MP_CLEAR) || (_map5[TILE_MASK(tile + i)]&0x1C) != 0x14);
|
||||
} while (++tile != TILES_X*TILES_Y);
|
||||
for (tile = 0; tile != MapSize(); ++tile) {
|
||||
for (data = _make_desert_or_rainforest_data;
|
||||
data != endof(_make_desert_or_rainforest_data); ++data) {
|
||||
TileIndex t = TILE_MASK(tile + ToTileIndexDiff(*data));
|
||||
if (IsTileType(t, MP_CLEAR) && (_map5[t] & 0x1c) == 0x14) break;
|
||||
}
|
||||
if (data == endof(_make_desert_or_rainforest_data))
|
||||
SetMapExtraBits(tile, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void GenerateLandscape()
|
||||
void GenerateLandscape(void)
|
||||
{
|
||||
int i,flag;
|
||||
uint32 r;
|
||||
@@ -706,15 +706,15 @@ void GenerateLandscape()
|
||||
CreateDesertOrRainForest();
|
||||
}
|
||||
|
||||
void OnTick_Town();
|
||||
void OnTick_Trees();
|
||||
void OnTick_Station();
|
||||
void OnTick_Industry();
|
||||
void OnTick_Town(void);
|
||||
void OnTick_Trees(void);
|
||||
void OnTick_Station(void);
|
||||
void OnTick_Industry(void);
|
||||
|
||||
void OnTick_Players();
|
||||
void OnTick_Train();
|
||||
void OnTick_Players(void);
|
||||
void OnTick_Train(void);
|
||||
|
||||
void CallLandscapeTick()
|
||||
void CallLandscapeTick(void)
|
||||
{
|
||||
OnTick_Town();
|
||||
OnTick_Trees();
|
||||
@@ -731,8 +731,8 @@ TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng)
|
||||
uint32 r = Random();
|
||||
|
||||
return TILE_XY(
|
||||
GET_TILE_X(a) + ((byte)r * rn * 2 >> 8) - rn,
|
||||
GET_TILE_Y(a) + ((byte)(r>>8) * rn * 2 >> 8) - rn
|
||||
TileX(a) + ((byte)r * rn * 2 >> 8) - rn,
|
||||
TileY(a) + ((byte)(r >> 8) * rn * 2 >> 8) - rn
|
||||
);
|
||||
}
|
||||
|
||||
@@ -744,12 +744,12 @@ TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng)
|
||||
// the result will be tile + TILE_XY(addx, addy)
|
||||
uint TileAddWrap(TileIndex tile, int addx, int addy)
|
||||
{
|
||||
int x, y;
|
||||
x = GET_TILE_X(tile) + addx;
|
||||
y = GET_TILE_Y(tile) + addy;
|
||||
uint x, y;
|
||||
x = TileX(tile) + addx;
|
||||
y = TileY(tile) + addy;
|
||||
|
||||
// Are we about to wrap?
|
||||
if (x > 0 && x < TILE_X_MAX && y > 0 && y < TILE_Y_MAX)
|
||||
if (x < MapMaxX() && y < MapMaxY())
|
||||
return tile + TILE_XY(addx, addy);
|
||||
|
||||
return TILE_WRAPPED;
|
||||
@@ -757,5 +757,5 @@ uint TileAddWrap(TileIndex tile, int addx, int addy)
|
||||
|
||||
bool IsValidTile(uint tile)
|
||||
{
|
||||
return (tile < TILES_X * TILE_Y_MAX && GET_TILE_X(tile) != TILE_X_MAX);
|
||||
return (tile < MapSizeX() * MapMaxY() && TileX(tile) != MapMaxX());
|
||||
}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Can't do this....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Can't clear this area....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Original design by Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graphics by Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Special thanks go out to:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signals and Semaphores {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Foundations for Tracks on Slopes {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Canal/Lock graphics {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
|
||||
STR_TRANSLATED_BY :{BLACK} Translator(s) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperial (miles)
|
||||
STR_013A_METRIC_KILOMETERS :Metric (kilometers)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Can't change servicing interval...
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Close window
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window
|
||||
STR_STICKY_BUTTON :{BLACK}Mark this window as undeletable for the 'Close All Windows' key
|
||||
STR_RESIZE_BUTTON :{BLACK}Click and drag to resize this window
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Lower a corner of land
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Raise a corner of land
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Changes of cargo acceptance
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subsidies
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}General information
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...too far from previous destination
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached 2050{}({STRING} Level)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached {NUMU16}{}({STRING} Level)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Company League Table in {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Businessman
|
||||
STR_0214_ENTREPRENEUR :Entrepreneur
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalist
|
||||
STR_0217_MAGNATE :Magnate
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon of the Century
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} achieves '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} of {STRING} achieves '{STRING}' status!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} achieves '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} of {STRING} achieves '{STRING}' status!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf settings
|
||||
STR_NEWGRF_SETTINGS2 :Newgrf settings
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Close ALL windows
|
||||
STR_CLOSE_ALL_WINDOWS2 :Close ALL windows
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Town names displayed
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Town names displayed
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Station names displayed
|
||||
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subsidies
|
||||
STR_02DE_MAP_OF_WORLD :Map of world
|
||||
STR_EXTRA_VIEW_PORT :Extra viewport
|
||||
STR_02DF_TOWN_DIRECTORY :Town directory
|
||||
STR_TOWN_POPULATION :{BLACK}World population: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copy to viewport
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copy the location of the global view to this viewport
|
||||
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fund new industry
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fund new industry
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...can only be built in rainforest areas
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...can only be built in desert areas
|
||||
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :English
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :English
|
||||
STR_TOWNNAME_FRENCH :French
|
||||
STR_TOWNNAME_GERMAN :German
|
||||
STR_TOWNNAME_AMERICAN :American
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :English (Additional)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latin-American
|
||||
STR_TOWNNAME_SILLY :Silly
|
||||
STR_TOWNNAME_SWEDISH :Swedish
|
||||
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Dutch
|
||||
STR_TOWNNAME_FINNISH :Finnish
|
||||
STR_TOWNNAME_POLISH :Polish
|
||||
STR_TOWNNAME_SLOVAKISH :Slovakish
|
||||
STR_TOWNNAME_NORWEGIAN :Norwegian
|
||||
STR_TOWNNAME_HUNGARIAN :Hungarian
|
||||
STR_TOWNNAME_AUSTRIAN :Austrian
|
||||
STR_TOWNNAME_ROMANIAN :Romanian
|
||||
STR_TOWNNAME_CZECH :Czech
|
||||
STR_TOWNNAME_SWISS :Swiss
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pounds ({POUNDSIGN})
|
||||
@@ -981,7 +981,7 @@ STR_CONFIG_PATCHES_ON :On
|
||||
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Show vehicle speed in status bar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Allow building on slopes and coasts: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Allow more realistically sized catchment areas: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, tunnels, etc: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, etc: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Enable building very long trains: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Enable realistic acceleration for trains: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Join train stations built next to each other: {ORANGE}{STRING}
|
||||
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenew vehicle when it gets
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenew when vehice is {ORANGE}{STRING}{LTBLUE} months before/after max age
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autorenew minimum needed money for renew: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duration of error message: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Show town population in the town name label: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Invisible trees (with transparent buildings): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snow line height: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max station spread: {ORANGE}{STRING} {RED}Warning: High setting slows game
|
||||
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Default service interval for air
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Default service interval for aircraft: {ORANGE}disabled
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Default service interval for ships: {ORANGE}{STRING} days
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Default service interval for ships: {ORANGE}disabled
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Disable servicing when breakdowns set to none: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Colored news appears in: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Starting date: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}End game in: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Enable smooth economy (more, smaller changes)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Allow buying shares from other companies
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging place signals every: {ORANGE}{STRING} tile(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position of main toolbar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Left
|
||||
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Can't build locks here...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Build locks
|
||||
STR_LANDINFO_LOCK :Lock
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... buoy is in use!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
|
||||
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Select type of cargo for train to c
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Refit train to carry highlighted cargo type
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Can't refit train...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervals are in percents: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Change production
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Welcome to this new AI, in progress. You can expect problems. When you do, make a screenshot and post it at the forum. Enjoy!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Warning: this new AI is still alpha! Currently, only trucks and busses work!
|
||||
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Language: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Map size: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Password protected!
|
||||
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} We made a protocol-error and our conne
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} The revision of this client does not match the revision of the server.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Wrong password.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} The server is full
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} You are banned from this server
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} You are kicked out of the server
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating is not allowed on this server
|
||||
|
||||
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Road/rail level crossing
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Towns
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Can't sell 25% share in this company
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% owned by {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% owned by {STRING}{} {COMMA16}% owned by {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} has been taken over by {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}This company does not trade shares yet...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Steam)
|
||||
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} from {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Train {COMMA16} is waiting in depot
|
||||
STR_8815_NEW_VEHICLES :{BLACK}New Vehicles
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Weight: {GOLD}{COMMA16}t{}{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{COMMA16}hp{}{BLACK}Running Cost: {GOLD}{CURRENCY}/yr{}{BLACK}Capacity: {GOLD}{STRING}{}{BLACK}Designed: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} years{}{BLACK}Max. Reliability: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Weight: {GOLD}{COMMA16}t{}{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{COMMA32}hp{}{BLACK}Running Cost: {GOLD}{CURRENCY}/yr{}{BLACK}Capacity: {GOLD}{STRING}{}{BLACK}Designed: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} years{}{BLACK}Max. Reliability: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Information
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Train too long
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Trains can only be altered when stopped inside a depot
|
||||
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Can't name aircraft...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Name aircraft
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Citizens celebrate . . .{}First aircraft arrives at {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Plane Crash!{}{COMMA16} die in fireball at {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Plane Crash!{}Aircraft ran out of fuel, {COMMA16} die in fireball!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinations:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Rename
|
||||
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Show all trains which have this station on
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Show all road vehicles which have this station on their schedule
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Show all aircraft which have this station on their schedule
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Show all ships which have this station on their schedule
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Replace Vehicles
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace Vehicles
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Start Replacing Vehicles
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop Replacing Vehicles
|
||||
STR_NOT_REPLACING :{BLACK}Not replacing
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No vehicle selected
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Select the engine type to replace
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Select the new engine type you would like to use in place of the left selected engine type
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Press to stop the replacement of the engine type selected on the left
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Press to begin replacement of the left selected engine type with the right selected engine type
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Choose the railtype you want to replace engines for
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Displays which engine the left selected engine is being replaced with, if any
|
||||
STR_REPLACE_HELP :{BLACK}This allows you to replace one engine type with another type, when trains of the original type enter a depot
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Rail Vehicles
|
||||
STR_MONORAIL_VEHICLES :Monorail Vehicles
|
||||
STR_MAGLEV_VEHICLES :Maglev Vehicles
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}No es pot fer aix
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}No es pot netejar l'àrea....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright Original {COPYRIGHT} 1995 Chris Sawyer, Tots els Drets reservats
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versió {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Disseny Original per Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Gràfics Originals per Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Agreïments especials a:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Senyals i Semàfors {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fonaments per Pistes en Desnivells {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Gràfics de Canals/Rescloses {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
|
||||
STR_TRANSLATED_BY :{BLACK} Traductor(s) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Britànic (milles)
|
||||
STR_013A_METRIC_KILOMETERS :Mètric (kilómetres)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}No es pot canviar l'interval del man
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Tancar finestra
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Títol de finestra - arrosega aixó per moure la finestra
|
||||
STR_STICKY_BUTTON :{BLACK}Marca aquesta finestra com a no eliminable per a la clau 'Tancar totes les Finestres'
|
||||
STR_RESIZE_BUTTON :{BLACK}Prem i arrosega per canviar el tamany de la finestra
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolició d'edificis etc. en un quadre de terreny
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Rebaixar una cantonada del terreny
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar una cantonada del terreny
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Canvis en admisi
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subvencions
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Informació General
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...massa lluny del destí previ
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Principals empreses en asolir el 2050{}(Nivell {STRING})
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Principals Empreses en asolir el Nivell {NUMU16}{}({STRING} )
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Taula de Lliga d'Empreses a {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Empresari
|
||||
STR_0214_ENTREPRENEUR :Emprenedor
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalista
|
||||
STR_0217_MAGNATE :Magnate
|
||||
STR_0218_MOGUL :Gran Magnate
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Magnate del Segle
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} asoleix l'estat '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de {STRING} asoleix l'estat '{STRING}'!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} asoleix l'estat '{STRING}' !
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} de {STRING} asoleix l'estat '{STRING}' !
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Configuracions de Newgrf
|
||||
STR_NEWGRF_SETTINGS2 :Configuracions de Newgrf
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Tancar TOTES les finestres
|
||||
STR_CLOSE_ALL_WINDOWS2 :Tancar TOTES les finestres
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostrats noms de poblacions
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Mostrats noms de poblacions
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostrats noms d'estacions
|
||||
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fundar nova ind
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fundar nova indústria
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...només es pot construir en poblacions
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...només es pot construir en àrees de selva tropical
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...només es pot construir en àrees de desert
|
||||
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Anglès
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglès
|
||||
STR_TOWNNAME_FRENCH :Francès
|
||||
STR_TOWNNAME_GERMAN :Alemany
|
||||
STR_TOWNNAME_AMERICAN :Americà
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglès (Adicional)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latinoamericà
|
||||
STR_TOWNNAME_SILLY :Tonto
|
||||
STR_TOWNNAME_SWEDISH :Suec
|
||||
@@ -862,10 +859,12 @@ STR_TOWNNAME_DUTCH :Holand
|
||||
STR_TOWNNAME_FINNISH :Finès
|
||||
STR_TOWNNAME_POLISH :Polac
|
||||
STR_TOWNNAME_SLOVAKISH :Eslovac
|
||||
STR_TOWNNAME_NORWEGIAN :Noruec
|
||||
STR_TOWNNAME_HUNGARIAN :Húngar
|
||||
STR_TOWNNAME_AUSTRIAN :Austríac
|
||||
STR_TOWNNAME_ROMANIAN :Romanès
|
||||
STR_TOWNNAME_CZECH :Txec
|
||||
STR_TOWNNAME_SWISS :Suís
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Lliures ({POUNDSIGN})
|
||||
@@ -1019,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenova el vehicle quan sigu
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenova el vehicle quan tingui {ORANGE}{STRING}{LTBLUE} mesos abans/després antig. max.
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autorenovació: mínim de diners per renovar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duració del missatge d'error: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Mostra els habitants a la etiqueta del nom de població: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Arbres invisibles (amb edificis transparents): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Alçada de la cota de neu: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max extensió de estacions: {ORANGE}{STRING}{RED}Avís: Un valor alt enlenteix el joc
|
||||
@@ -1044,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Interval de manteniment per defe
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Interval de manteniment per defecte de les aeronaus: {ORANGE}desactivat
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Interval de manteniment per defecte dels vaixells: {ORANGE}{STRING} díes/%
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Interval de manteniment per defecte dels vaixells: {ORANGE}desactivat
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Desactivar manteniment quan les averíes s'estableixen a cap: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Les noticies en color apareixen en: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Data d'inici: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Fi del joc en: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Activar economia suau (més canvis però més petits)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permetre comprar participadions d'altres empreses
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}En arrosegant, sitúa senyals cada: {ORANGE}{STRING} quadre(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posició de la barra d'eines principal: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Esquerra
|
||||
@@ -1137,6 +1140,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}No es pot construir resclosa aqui...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Construir rescloses
|
||||
STR_LANDINFO_LOCK :Resclosa
|
||||
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordenades: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}No es pot treure part de la estació...
|
||||
@@ -1188,6 +1192,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Selecciona tipus de c
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Remodelar tren per transportar el tipus de càrrega seleccionat
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}No es pot remodelar el tren...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Els intervals de manteniment estàn en percentatges: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Canvi de producció
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Benvingut a aquest nou AI, en desenvolupament. Pot ser que tinguis problemes. Quan en tinguis, fes una còpia de pantalla i publícala al forums. Disfruta!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Atenció: aquest nou AI encara està en versió alfa! Actualment, només funcionen els autobusos i camions!
|
||||
@@ -1225,7 +1230,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Tamany del mapa: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Versió del servidor: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adreça del servidor: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adreça del servidor: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Data inicial: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Data actual: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Protegit per contrasenya!
|
||||
@@ -1341,6 +1346,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} S'ha obtingut un error de protocol i s
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} La revisió d'aquest client no concorda amb la revisió del servidor.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Contrasenya incorrecta.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} El servidor és plé
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Estàs exclòs d'aquest servidor
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} T'han fet fora del servidor
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} No es permet usar codis trampa en aquest servidor
|
||||
|
||||
@@ -1481,6 +1487,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Pas a nivell
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Poblacions
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2094,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}No pots vendre el 25% de participaci
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% propietat de {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% propietat de {STRING}{} {COMMA16}% propietat de {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} ha estat absorbida per {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Aquesta Empresa ja no negocía participacions...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor)
|
||||
@@ -2385,7 +2393,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} procedent de {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tren {COMMA16} en espera en cotxeres
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nous Vehicles
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Pes: {GOLD}{COMMA16}t{}{BLACK}Velocitat: {GOLD}{VELOCITY}{BLACK} Potència: {GOLD}{COMMA16}hp{}{BLACK}Cost de circulació: {GOLD}{CURRENCY}/any{}{BLACK}Capacitat: {GOLD}{STRING}{}{BLACK}Dissenyat en: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anys{}{BLACK}Max. Rendibilitat: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Pes: {GOLD}{COMMA16}t{}{BLACK}Velocitat: {GOLD}{VELOCITY}{BLACK} Potència: {GOLD}{COMMA32}hp{}{BLACK}Cost de Circulació: {GOLD}{CURRENCY}/any{}{BLACK}Capacitat: {GOLD}{STRING}{}{BLACK}Dissenyat: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anys{}{BLACK}Max. Rendiment: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informació
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Tren massa llarg
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Els trens només es poden modificar quan s'han parat dintre d'una cotxera
|
||||
@@ -2666,6 +2674,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}No es pot anomenar aeronaus...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Anomenar aeronaus
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebració popular . . .{}La primera aeronau arriba a {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Accident d'avió!{}{COMMA16} moren en una bola de foc a {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accident d'aviació!{}Aeronau sense combustible, {COMMA16} morts en una bola de foc!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinacions:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Reanomena
|
||||
@@ -2739,6 +2748,7 @@ STR_CURRENCY_WINDOW :{WHITE}Moneda personalitzada
|
||||
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Canvi de moneda: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
|
||||
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
|
||||
STR_CURRENCY_PREFIX :{LTBLUE}Prefix:
|
||||
STR_CURRENCY_SUFFIX :{LTBLUE}Sufix:
|
||||
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Canvi a Euro: {ORANGE}{INT32}
|
||||
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Canvi a Euro: {ORANGE}mai
|
||||
STR_CURRENCY_PREVIEW :{LTBLUE}Vista prèvia: {ORANGE}{CURRENCY}
|
||||
@@ -2758,3 +2768,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostra tots els trens que tinguin aquesta e
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostra tots els vehicles que tinguin aquesta estació al seu itinerari
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostra totes les aeronaus que tinguin aquest aeroport al seu itinerari
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostra tots els vaixells que tinguin aquest port al seu itinerari
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Reemplaçar Vehicles
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplaçar Vehicles
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Inici de reemplaçament de Vehicles
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Fi de reemplaçament de Vehicles
|
||||
STR_NOT_REPLACING :{BLACK}No reemplaçar
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No hi ha cap vehicle seleccionat
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecciona el tipus de motor a reemplaçar
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecciona el nou tipus de motor que vols fer servir en lloc del seleccionat
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Prem per aturar el reemplaçament del tipus de motor seleccionat a l'esquerra
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Prem per iniciar el reemplaçament del tipus de motor seleccionat a l'esquerra pel seleccionat a la dreta
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Tria el tipus de via pel que vols reemplaçar motors
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mosyta quin motor dels seleccionats a l'esquerra es reemplaça, si hi ha
|
||||
STR_REPLACE_HELP :{BLACK}Et permet reemplaçar un tipus de motor amb un altre, quan els trens del tipus original entrin a cotxeres
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Trens
|
||||
STR_MONORAIL_VEHICLES :Monorrails
|
||||
STR_MAGLEV_VEHICLES :Vehicles Maglev
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Tohle neumuzes udelat...
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Nemuzes vycistit tuto oblast...
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Puvodni copyright: {COPYRIGHT} 1995 Chris Sawyer, vsechna práva vyhrazena
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD verze {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Puvodni design: Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Puvodni grafika: Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Zvlastni podekovani:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signals (predo-navesti) a semafory {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Podklady pro trate a silnice na svazích: {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Grafika pro umele pruplavy a zdymadla: {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 Tým OpenTTD
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Tým OpenTTD
|
||||
STR_TRANSLATED_BY :{BLACK} Prekladatel(e) - Hadez, iSteve (kdo jste byli driv, napiste Hádovi PM na tt-forums.net)
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperiální (míle)
|
||||
STR_013A_METRIC_KILOMETERS :Metrické (kilometry)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nelze zmenit interval oprav...
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Zavrit okno
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titulek okna - tahej pro posun okna
|
||||
STR_STICKY_BUTTON :{BLACK}Oznacit toto okno, aby se nedalo zavrit klávesou 'Zavrit vsechna okna'
|
||||
STR_RESIZE_BUTTON :{BLACK}Pro zmenu velikosti okna tady uchop a táhni
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolice budov, atd.
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Snizit roh zeme
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Zvysit roh zeme
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Zmeny prijmu zbozi
|
||||
STR_020E_SUBSIDIES :{YELLOW}Dotace
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Obecné informace
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...prilis daleko od predchazejiciho cile
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Nejlepsi spolecnosti, které dosáhly roku 2050{}({STRING} uroven)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Nejlepsi spolecnosti, které dosáhly {NUMU16}{}({STRING} uroven)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tabulka spolecnosti v roce {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Obchodník
|
||||
STR_0214_ENTREPRENEUR :Manazer
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalista
|
||||
STR_0217_MAGNATE :Magnát
|
||||
STR_0218_MOGUL :Velemagnát
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Magnát století
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} dosahuje hodnosti '{STRING}' !
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} z {STRING} dosahuje hodnosti '{STRING}' !
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} získal oznaceni '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} z {STRING} získal oznaceni '{STRING}' status!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Nastaven
|
||||
STR_NEWGRF_SETTINGS2 :Nastavení newgrf
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Zavrit VSECHNA okna
|
||||
STR_CLOSE_ALL_WINDOWS2 :Zavrit VSECHNA okna
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazení jmen mest
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Zobrazení jmen mest
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazení jmen stanic
|
||||
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Dotace
|
||||
STR_02DE_MAP_OF_WORLD :Mapa sveta
|
||||
STR_EXTRA_VIEW_PORT :Dalsi pohled
|
||||
STR_02DF_TOWN_DIRECTORY :Seznam mest
|
||||
STR_TOWN_POPULATION :{BLACK}Populace sveta: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pohled {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Nastavit jako pohled
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Nastavit soucasne zorné pole jako pohled
|
||||
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Investovat do prumyslu
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Investovat do prumyslu
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...muze být budováno jen ve mestech
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...muze být budováno jen v pralesech
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...muze být budováno jen v poustich
|
||||
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Anglická
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglická (puvodni)
|
||||
STR_TOWNNAME_FRENCH :Francouzská
|
||||
STR_TOWNNAME_GERMAN :Nemecka
|
||||
STR_TOWNNAME_AMERICAN :Americká
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglická (dalsi)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latinskoamerická
|
||||
STR_TOWNNAME_SILLY :Legracni (anglická)
|
||||
STR_TOWNNAME_SWEDISH :Svedska
|
||||
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Holandsk
|
||||
STR_TOWNNAME_FINNISH :Finská
|
||||
STR_TOWNNAME_POLISH :Polská
|
||||
STR_TOWNNAME_SLOVAKISH :Slovenská
|
||||
STR_TOWNNAME_NORWEGIAN :Norská
|
||||
STR_TOWNNAME_HUNGARIAN :Madarska
|
||||
STR_TOWNNAME_AUSTRIAN :Rakouská
|
||||
STR_TOWNNAME_ROMANIAN :Rumunská
|
||||
STR_TOWNNAME_CZECH :Ceska
|
||||
STR_TOWNNAME_SWISS :Svycarska
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Libry ({POUNDSIGN})
|
||||
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automaticky obnovit dopravn
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Obnovit vozidlo {ORANGE}{STRING}{LTBLUE} mesicu pred / po dosazeni maximálního stari
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimální castka pro automatické obnovení: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Doba zobrazení chybové zprávy: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Zobrazovat populaci mesta v jeho popisku: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Neviditelné stromy (spolecne s pruhlednymi budovami): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Vyska snehove cary: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Nejvetsi rozsah stanice: {ORANGE}{STRING} {RED}Varování: Vysoké nastavení zpomaluje hru
|
||||
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Z
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Základní servisní interval pro letadla: {ORANGE}vypnuto
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Základní servisní interval pro lode: {ORANGE}{STRING} dní
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Základní servisní interval pro lode: {ORANGE}vypnuto
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Vypnout servisy kdyz jsou vypnuty poruchy: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Barevné noviny se objeví: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Pocatecni datum: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Ukoncit hru v roce: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Plynulé zmeny ekonomiky (více mensich zmen)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Povolit kupování podilu z ostatních spolecnosti
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Pri tazeni umistovat signály kazdych(e): {ORANGE}{STRING} dilku(y)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Umisteni hlavní listy: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vlevo
|
||||
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Zde nemohu postavit zdymadlo...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Stavet zdymadlo
|
||||
STR_LANDINFO_LOCK :Zdymadlo
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... bojka je pouzivana!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Souradnice: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nemohu odstranit cast stanice...
|
||||
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Zvolit typ n
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Prestavet vlak na oznaceny typ nákladu
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nelze prestavet vlak...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Intervaly servisu v procentech: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmenit produkci
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Predstavujeme ti novou umelou inteligenci (pracovní). Není jeste OK, takze s ním jsou jeste problémy. Kdykoli muzes, udelej screenshot a prispej s ním do fóra. At se ti líbí!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Pozor: tato nová umela inteligence je jeste v alpha verzi (= nebyla moc testována)! Zatím umí pracovat jen se silnicnimi vozidly!
|
||||
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Jazyk: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Prostredi: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Velikost mapy: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Verze hry na serveru: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa serveru: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa serveru: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Pocatecni datum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Momentální datum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Chraneno heslem!
|
||||
@@ -1334,13 +1341,14 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} Server neodpovedel na pozadavek
|
||||
STR_NETWORK_ERR_DESYNC :{WHITE} Sit - synchronizace hry selhala
|
||||
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Sit - spojení ztraceno
|
||||
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Nemohu nahrát ulozenou hru ze serveru
|
||||
STR_NETWORK_ERR_SERVER_START :{WHITE} Nemohu spustit server.
|
||||
STR_NETWORK_ERR_CLIENT_START :{WHITE} Nemohu se pripojit.
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE} U spojení c. {NUMU16} byl prekrocen cekaci limit.
|
||||
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vznikla chyba v protokolu a nase spojení je preruseno.
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revize hry tohoto klienta neodpovídá revizi hry na serveru.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Spatne heslo.
|
||||
STR_NETWORK_ERR_SERVER_START :{WHITE} Nemohu spustit server
|
||||
STR_NETWORK_ERR_CLIENT_START :{WHITE} Nemohu se pripojit
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE} U spojení c. {NUMU16} byl prekrocen cekaci limit
|
||||
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vznikla chyba v protokolu a nase spojení je preruseno
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revize hry tohoto klienta neodpovídá revizi hry na serveru
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Spatne heslo
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Server je plný
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Jsi blokován serverem
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Byl jsi vyhozen ze hry
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Pouzivani cheatu není na tomto serveru povoleno
|
||||
|
||||
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Zeleznicni prejezd
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Mesta
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Nemohu prodat 25% pod
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% vlastneno {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% vlastneno {STRING}{} {COMMA16}% vlastneno {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} byla prevzata {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Tato spolecnost zatím neobchoduje s akciemi...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (parní)
|
||||
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} z {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Vlak {COMMA16} ceka v depu
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nová vozidla
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Hmotnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Výkon: {GOLD}{COMMA16} koní{}{BLACK}Provoz stojí: {GOLD}{CURRENCY} rocne{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Vyvinuto: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} let{}{BLACK}Max. spolehlivost: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Hmotnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Výkon: {GOLD}{COMMA32} koní{}{BLACK}Provoz stojí: {GOLD}{CURRENCY} rocne{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Vyvinuto: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} let{}{BLACK}Max. spolehlivost: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informace
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Prilis dlouhý vlak
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Vlaky lze menit, jen kdyz stojí uvnitr depa
|
||||
@@ -2447,7 +2457,7 @@ STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Uk
|
||||
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Ukázat detaily jednotlivých vagonu
|
||||
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Ukázat kapacity jednotlivých vagonu
|
||||
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Ukázat celkovou kapacitu vlaku, rozdelenou dle nákladu
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Seznam prikazu - stiskni prikaz pro oznaceni
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Seznam prikazu - stiskni prikaz pro oznaceni. Kliknutím na prikaz se stisknutým CTRL se nastaví pohled na stanici
|
||||
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Preskocit prikaz a jit na dalsi
|
||||
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Smazat oznaceny prikaz
|
||||
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Provest oznaceny prikaz bez zastaveni
|
||||
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nelze prejmenovat letadlo
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Prejmenovat letadlo
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První letadlo pristalo v {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Pád letadla!{}{COMMA16} zahynulo v plamenech v {STATION}.
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Letecká havárie!{}Kvuli vycerpani paliva zemrelo {COMMA16} lidí v ohnivém pekle!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Cíle:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Prejmenovat
|
||||
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Zobrazit vsechny vlaky, kter
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Zobrazit vsechna silnicni vozidla, která mají tuto stanici v jízdním radu
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Zobrazit vsechna letadla, která mají tuto stanici v jízdním radu
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Zobrazit vsechny lode, které mají tuto stanici v jízdním radu
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Vymenovani vozidel
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Vymenovani vozidel
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Zapnout zamenovani
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Vypnout zamenovani
|
||||
STR_NOT_REPLACING :{BLACK}(nezamenuje se)
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Není oznaceno zadne vozidlo
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vyber typ lokomotivy na vymenu
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vyber typ nové lokomotivy, kterou chces pouzit místo vybrané v levém seznamu
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Zmackni toto tlacitko, kdyz nechces zamenovat typ lokomotivy vybraný v levém seznamu
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Zmackni toto tlacitko, kdyz chces zamenovat typ lokomotivy vybraný v levém seznamu lokomotivou vybranou v pravém seznamu
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Vyber typ kolejí, pro které chces vybírat lokomotivy na zamenu
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Tady je zobrazeno, za jakou lokomotivu se ta v levém seznamu zamenuje
|
||||
STR_REPLACE_HELP :{BLACK}Tato moznost hry ti umoznuje vybrat typ lokomotivy, který nechá vymenit za jiný. To se bude automaticky provadet, kdyz lokomotiva zajede do depa.
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Zeleznicni lokomotivy
|
||||
STR_MONORAIL_VEHICLES :Lokomotivy pro monorail
|
||||
STR_MAGLEV_VEHICLES :Lokomotivy pro maglev
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -145,7 +145,36 @@ STR_008B_BATTERIES :{COMMA16} batterier
|
||||
STR_008C_OF_PLASTIC :{VOLUME} plastik
|
||||
STR_008D_FIZZY_DRINKS :{COMMA16} sodavand
|
||||
STR_008E :
|
||||
STR_008F_PS :{TINYFONT}PS
|
||||
STR_0090_CL :{TINYFONT}CL
|
||||
STR_0091_ML :{TINYFONT}ML
|
||||
STR_0092_OL :{TINYFONT}OL
|
||||
STR_0093_LV :{TINYFONT}LV
|
||||
STR_0094_GD :{TINYFONT}GD
|
||||
STR_0095_GR :{TINYFONT}GR
|
||||
STR_0096_WD :{TINYFONT}WD
|
||||
STR_0097_OR :{TINYFONT}OR
|
||||
STR_0098_ST :{TINYFONT}ST
|
||||
STR_0099_VL :{TINYFONT}VL
|
||||
STR_009A_CO :{TINYFONT}CO
|
||||
STR_009B_MZ :{TINYFONT}MZ
|
||||
STR_009C_FT :{TINYFONT}FT
|
||||
STR_009D_DM :{TINYFONT}DM
|
||||
STR_009E_FD :{TINYFONT}FD
|
||||
STR_009F_PR :{TINYFONT}PR
|
||||
STR_00A0_GD :{TINYFONT}GD
|
||||
STR_00A1_WR :{TINYFONT}WR
|
||||
STR_00A2_WH :{TINYFONT}WH
|
||||
STR_00A3_RB :{TINYFONT}RB
|
||||
STR_00A4_SG :{TINYFONT}SG
|
||||
STR_00A5_TY :{TINYFONT}TY
|
||||
STR_00A6_SW :{TINYFONT}SW
|
||||
STR_00A7_CL :{TINYFONT}CL
|
||||
STR_00A8_CF :{TINYFONT}CF
|
||||
STR_00A9_BU :{TINYFONT}BU
|
||||
STR_00AA_TF :{TINYFONT}TF
|
||||
STR_00AB_BA :{TINYFONT}BA
|
||||
STR_00AC_PL :{TINYFONT}PL
|
||||
STR_00AD_FZ :{TINYFONT}FZ
|
||||
STR_00AE :{WHITE}{DATE_SHORT}
|
||||
STR_00AF :{WHITE}{DATE_LONG}
|
||||
@@ -157,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Det kan jeg ikke....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan ikke rydde området....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle retigheder reserveret
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Originalt design af Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafik af Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}En speciel tak går til:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Forsignal og armsignal grafik {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fundament for skinner på skråninger {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Sluse grafik {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
|
||||
STR_TRANSLATED_BY :{BLACK} Oversætter(e) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -282,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperial (miles)
|
||||
STR_013A_METRIC_KILOMETERS :Meter (kilometer)
|
||||
@@ -391,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Luk vindue
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Vindue title - træk her for at flytte vindue
|
||||
STR_STICKY_BUTTON :{BLACK}Marker dette vindue som ulukkeligt af 'Luk ALLE vinduer' tasten
|
||||
STR_RESIZE_BUTTON :{BLACK}Klik og træk for at ændre vinduets størrelse
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}nedriver bygning osv. på et stykke land
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Sænk et hjørne af landet
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Hæv et hjørne af landet
|
||||
@@ -538,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}
|
||||
STR_020E_SUBSIDIES :{YELLOW}Special aftaler
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}General information
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...for langt fra forrige destination
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Bedste firmaer der nåede til år 2050{}({STRING} Level)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Bedste virksomheder, som har nået {NUMU16}{}({STRING} Niveau)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Selskabsoversigt i {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Forretningsmand
|
||||
STR_0214_ENTREPRENEUR :Entreprenør
|
||||
@@ -547,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
|
||||
STR_0217_MAGNATE :Magnat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Århundredes Matador
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} opnår '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} af {STRING} opnår '{STRING}' status!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} får '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} fra {STRING} får '{STRING}' status!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -713,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf indstillinger
|
||||
STR_NEWGRF_SETTINGS2 :Newgrf indstillinger
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Luk ALLE vinduer
|
||||
STR_CLOSE_ALL_WINDOWS2 :Luk ALLE vinduer
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Bynavne vist
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Bynavne vist
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnavne vist
|
||||
@@ -746,6 +772,7 @@ STR_02DD_SUBSIDIES :Specialaftaler
|
||||
STR_02DE_MAP_OF_WORLD :Kort over verden
|
||||
STR_EXTRA_VIEW_PORT :Flere lokalitetsvinduer
|
||||
STR_02DF_TOWN_DIRECTORY :Byoversigt
|
||||
STR_TOWN_POPULATION :{BLACK}Verdens befolkning: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Lokalitetsvinduer {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Gå til lokalitetsvindue
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Hent lokalitet fra global visning
|
||||
@@ -800,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Opf
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Opfør ny industri
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan kun bygges i byer
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan kun bygges i regnskovsområder
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan kun bygges i ørkenområder
|
||||
@@ -822,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Engelske
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Engelske
|
||||
STR_TOWNNAME_FRENCH :Franske
|
||||
STR_TOWNNAME_GERMAN :Tyske
|
||||
STR_TOWNNAME_AMERICAN :Amerikanske
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engelske (ekstra)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latin-Amerikanske
|
||||
STR_TOWNNAME_SILLY :Fjollede
|
||||
STR_TOWNNAME_SWEDISH :Svenske
|
||||
@@ -833,10 +860,12 @@ STR_TOWNNAME_DUTCH :Hollandske
|
||||
STR_TOWNNAME_FINNISH :Finske
|
||||
STR_TOWNNAME_POLISH :Polske
|
||||
STR_TOWNNAME_SLOVAKISH :Slovakiske
|
||||
STR_TOWNNAME_NORWEGIAN :Norske
|
||||
STR_TOWNNAME_HUNGARIAN :Ungarske
|
||||
STR_TOWNNAME_AUSTRIAN :Østrigske
|
||||
STR_TOWNNAME_ROMANIAN :Rumænske
|
||||
STR_TOWNNAME_CZECH :Tjekkiske
|
||||
STR_TOWNNAME_SWISS :Schweiziske
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pund ({POUNDSIGN})
|
||||
@@ -990,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automatisk fornyelse af k
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Automatisk fornyelse når køretøj er {ORANGE}{STRING}{LTBLUE} måneder under/over max alder
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Antal penge i banken før automatisk fornyelse af køretøjer: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Levetid for fejlmeddelser: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Vis byens indbyggertal i bynavnet: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Usynlige træer (med gennemsigtige bygninger): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snelinjehøjden: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max station udbreddelse: {ORANGE}{STRING} {RED}Advarsel: Høj værdi gør spillet langsomt
|
||||
@@ -1015,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard service interval for fl
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standard service interval for fly: {ORANGE}slået fra
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard service interval for skibe: {ORANGE}{STRING} dage/%
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Standard service interval for skibe: {ORANGE}slået fra
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Slå service fra, når nedbrud er sat til ingen: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farvede nyheder dukker op i: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Start dato: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Afslut spillet i: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Aktiver rolig økonomi (flere små ændringer)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillad at købe aktier i andre selskaber
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging place signals every: {ORANGE}{STRING} tile(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Placering af værktøjslinie: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Venstre
|
||||
@@ -1108,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kan ikke bygge en sluse her...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Byg sluser
|
||||
STR_LANDINFO_LOCK :Sluse
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... bøjen er i brug!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne en del af en station...
|
||||
@@ -1159,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}V
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Ombyg toget til at køre med den markerede slags last
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ikke ombygge toget...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervaller er i procent: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Skift produktion
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Velkommen til den nye kunstige intelligents, der er under udarbejdelse. Du kan forvente problemer. Når det sker, så lav et screenshot og sæt det på forummet
|
||||
TEMP_AI_ACTIVATED :{WHITE}Advarsel: den nye kunstige intelligents er i et tidligt stadie! Lige nu virker den kun med busser og lastbiler!
|
||||
@@ -1196,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Sprog: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Klima: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Størrelse: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server adresse: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradresse: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Start dato: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Nuværende dato: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Beskyttet af kodeord!
|
||||
@@ -1312,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Der opstod en protokol-fejl og forbind
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revisionen af denne klient passer ikke sammen med serverens revision
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Forkert kodeord
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Serveren er fuld
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Du har forbud mod at bruge denne server
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Du blev smidt ud af spillet
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Snyderi er ikke tilladt på denne server
|
||||
|
||||
@@ -1452,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Jernbaneoversk
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Byer
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2058,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan ikke s
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% ejes af {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% ejes af {STRING}{} {COMMA16}% ejes af {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} er blevet overtaget af {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Dette selskab sælger ikke aktier endnu...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Damp)
|
||||
@@ -2356,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} fra {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tog {COMMA16} Venter i depot
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nye køretøjer
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Pris: {GOLD}{CURRENCY}{BLACK} Vægt: {GOLD}{COMMA16}t{}{BLACK}Hastighed: {GOLD}{VELOCITY}{BLACK} Styrke: {GOLD}{COMMA16}hp{}{BLACK}Kørselsomkostninger: {GOLD}{CURRENCY}/år{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} år{}{BLACK}Maks pålidelighed: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Pris: {GOLD}{CURRENCY}{BLACK} Vægt: {GOLD}{COMMA16}t{}{BLACK}Hastighed: {GOLD}{VELOCITY}{BLACK} Styrke: {GOLD}{COMMA32}hp{}{BLACK}Kørselsomkostninger: {GOLD}{CURRENCY}/år{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} år{}{BLACK}Maks pålidelighed: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Information
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Toget er for langt
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tog kan kun ændres når de er stoppet i et depot
|
||||
@@ -2637,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan ikke navngive flyet...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Navngiv fluet
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Indbyggerene fester . . .{}Første fly ankommer til{STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Flystyrt!{}{COMMA16} dør i flammerne ved {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Flystyrt!{}Fly løb tør for brændstof, {COMMA16} døde i ildhelvede!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinationer:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Omdøb
|
||||
@@ -2730,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Vis alle tog, som har denne station i deres
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Vis alle køretøjer, som har denne station i deres køreplan
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Vis alle fly, som har denne lufthavn i deres ruteplan
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Vis alle skibe, som har denne station i deres ruteplan
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Udskift Køretøjer
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Udskift Køretøjer
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Start udskiftning
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop udskiftning
|
||||
STR_NOT_REPLACING :{BLACK}Udskifter ikke
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Intet køretøj valgt
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vælg en køretøjstype, som du ønsker udskiftet
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vælg en køretøjstype, som du ønker at få i stedet for den type, du har valgt i venste side
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for at stoppe udskiftningen at den køretøjstype, som du har valgt til venstre
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Tryk for at begynde at udskifte køretøjet til venstre med køretøjet til højre
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Vælg den skinnetype, hvor du vil udskifte lokomotiver
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket køretøj at det valgte køretøj til venstre bliver udskiftet med, hvis det bliver udskiftet
|
||||
STR_REPLACE_HELP :{BLACK}Dette giver dig mulighed for at udskifte en køretøjstype med en anden, når et køretøj af den oprindelige type kører i depot
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Jernbane
|
||||
STR_MONORAIL_VEHICLES :Monorail
|
||||
STR_MAGLEV_VEHICLES :Magnetskinnetog
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Kan dit niet uitvoeren....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan gebied niet ontruimen....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Origineel copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rechten voorbehouden
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versie {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Origineel ontworpen door Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafisch design door Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Speciale dank gaat uit naar:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Voorseinen en seinpalen {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Funderingen voor sporen op hellingen {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanaal/sluis afbeeldingen {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 Het OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Het OpenTTD team
|
||||
STR_TRANSLATED_BY :{BLACK} Vertaler(s) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperiaal (mijlen)
|
||||
STR_013A_METRIC_KILOMETERS :S.I. (kilometers)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan onderhoudsinterval niet aanpasse
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Sluit venster
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Vensternaam - sleep om venster te verplaatsen
|
||||
STR_STICKY_BUTTON :{BLACK}Markeer dit venster als niet-verwijderbaar door de 'Sluit Alle Vensters' knop
|
||||
STR_RESIZE_BUTTON :{BLACK}Klik en sleep om dit venster van grootte te veranderen
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Sloop gebouwen etc. op een stuk land
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag een hoek van het land
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog een hoek van het land
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Verandering geaccepteerde goede
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subsidies
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Algemene informatie
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...te ver van vorige bestemming
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Beste bedrijven die 2050 bereikten{}({STRING} Level)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top bedrijven die {NUMU16} bereikt hebben{}({STRING} Niveau)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Bedrijfswedstrijdtabel in {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Zakenman
|
||||
STR_0214_ENTREPRENEUR :Entrepreneur
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
|
||||
STR_0217_MAGNATE :Magnaat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon van de Eeuw
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} heeft de '{STRING}' status bereikt!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} van {STRING} heeft de '{STRING}' status bereikt!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} bereikt '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} van {STRING} bereikt '{STRING}' status!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf instellingen
|
||||
STR_NEWGRF_SETTINGS2 :Newgrf instellingen
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Sluit ALLE vensters
|
||||
STR_CLOSE_ALL_WINDOWS2 :Sluit ALLE vensters
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Geef stadsnamen weer
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Geef stadsnamen weer
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Geef stationsnamen weer
|
||||
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subsidies
|
||||
STR_02DE_MAP_OF_WORLD :Kaart
|
||||
STR_EXTRA_VIEW_PORT :Extra kijkvenster
|
||||
STR_02DF_TOWN_DIRECTORY :Stedenlijst
|
||||
STR_TOWN_POPULATION :{BLACK}Wereld populatie: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Kijkvenster {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopieer naar kijkvenster
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopieer de lokatie van het algemene scherm naar dit kijkvenster
|
||||
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Subsidieer nieuwe industrie
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Betaal nieuwe industrie
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan alleen in steden gebouwd worden
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan alleen in het regenwoud gebouwd worden
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan alleen in woestijngebieden gebouwd worden
|
||||
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Engels
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Engels (Origineel)
|
||||
STR_TOWNNAME_FRENCH :Frans
|
||||
STR_TOWNNAME_GERMAN :Duits
|
||||
STR_TOWNNAME_AMERICAN :Amerikaans
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engels (Extra)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latijns-Amerikaans
|
||||
STR_TOWNNAME_SILLY :Zot
|
||||
STR_TOWNNAME_SWEDISH :Zweeds
|
||||
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Nederlands
|
||||
STR_TOWNNAME_FINNISH :Fins
|
||||
STR_TOWNNAME_POLISH :Pools
|
||||
STR_TOWNNAME_SLOVAKISH :Slowaaks
|
||||
STR_TOWNNAME_NORWEGIAN :Noors
|
||||
STR_TOWNNAME_HUNGARIAN :Hongaars
|
||||
STR_TOWNNAME_AUSTRIAN :Oostenrijks
|
||||
STR_TOWNNAME_ROMANIAN :Roemeens
|
||||
STR_TOWNNAME_CZECH :Tsjechisch
|
||||
STR_TOWNNAME_SWISS :Zwitsers
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pond ({POUNDSIGN})
|
||||
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Vernieuw voertuig automatisch w
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Vernieuw voertuig automatisch {ORANGE}{STRING}{LTBLUE} maanden voor/na max. leeftijd
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimum benodigd geld voor automatisch vernieuwen: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duur van foutmeldingen: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Geef het inwoneraantal bij een stad weer: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Onzichtbare bomen (met transparante gebouwen): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Sneeuwhoogte: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximale stationsomvang: {ORANGE}{STRING} {RED}Pas op: Hoge waarde vertraagt spel
|
||||
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standaard reparatie interval bij
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standaard reparatie interval voor vliegtuigen: {ORANGE}uit
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standaard reparatie interval bij schepen: {ORANGE}{STRING} dagen
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Standaard reparatie interval voor schepen: {ORANGE}uit
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Schakel onderhoud uit wanneer defecten uit staan: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Kleurenfoto's komen in: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Beginjaar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Stop spel in: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Vloeiende economie inschakelen (meer, kleinere veranderingen)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Sta het kopen van aandelen toe
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Bij slepen, plaats seinen elke: {ORANGE}{STRING} tegel(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Positie van hoofd knoppenbalk: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Links
|
||||
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kan hier geen sluis bouwen...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Bouw sluis
|
||||
STR_LANDINFO_LOCK :Sluis
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... boei is in gebruik!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coördinaten: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan deel van station niet weghalen...
|
||||
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Kies type lading om te transportere
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Bouw trein om voor geselecteerde ladingtype
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan trein niet ombouwen...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Reparatie intervallen zijn in percentages: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Verander productie
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Welkom bij deze nieuwe AI, in aanbouw. Je kan problemen verwachten. Gebeurt dat, maak een screenshot en plaats die op het forum. Veel plezier!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Waarschuwing: deze nieuwe AI is nog steeds alpha! Momenteel werken alleen vrachtwagens en bussen!
|
||||
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Taal: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Klimaat: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Kaartgrootte: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Server versie: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server adres4: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server adres: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Start datum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Huidige datum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Beveiligd met wachtwoord!
|
||||
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Er is een protocol-fout gemaakt en onz
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} De revisie van deze client komt niet overeen met de revisie van de server.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Ongeldig wachtwoord.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} De server is vol
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE}Je bent verbannen van deze server
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Je bent van de server geschopt
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Valsspelen is niet toegestaan op deze server
|
||||
|
||||
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Gelijke weg/spoorweg kruising
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Steden
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan geen 25% aandeel in dit bedrijf
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% eigendom van {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% eigendom van {STRING}{} {COMMA16}% eigendom van {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} is overgenomen door {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Dit bedrijf verhandelt nog geen aandelen...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Stoom)
|
||||
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} van {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Trein {COMMA16} wacht in depot
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nieuwe voertuigen
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{COMMA16}t{}{BLACK}Snelheid: {GOLD}{VELOCITY}{BLACK} Kracht: {GOLD}{COMMA16}pk{}{BLACK}Brandstofkosten: {GOLD}{CURRENCY}/jr{}{BLACK}Capaciteit: {GOLD}{STRING}{}{BLACK}Ontworpen: {GOLD}{NUMU16}{BLACK} Leeftijd: {GOLD}{COMMA16} jaren{}{BLACK}Max. betrouwbaarheid: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{COMMA16}t{}{BLACK}Snelheid: {GOLD}{VELOCITY}{BLACK} Kracht: {GOLD}{COMMA32}pk{}{BLACK}Brandstofkosten: {GOLD}{CURRENCY}/jr{}{BLACK}Capaciteit: {GOLD}{STRING}{}{BLACK}Ontworpen: {GOLD}{NUMU16}{BLACK} Leeftijd: {GOLD}{COMMA16} jaren{}{BLACK}Max. betrouwbaarheid: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informatie
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Trein te lang
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Treinen kunnen alleen aangepast worden wanneer ze gestopt zijn binnen een depot
|
||||
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan vliegtuig niet hernoemen...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Hernoem vliegtuig
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Inwoners feesten...{}Eerste vliegtuig arriveert in {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Vliegtuig neergestort!{}{COMMA16} sterven in een vuurbal bij {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Vliegtuig Neergestort!{}Vliegtuig had brandstoftekort, {COMMA16} komen om in explosie!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Doelen:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Hernoem
|
||||
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Geef alle treinen weer die dit station in h
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Geef alle wegvoertuigen weer die dit station in hun opdrachtenlijst hebben
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Geef alle vliegtuigen weer die dit station in hun opdrachtenlijst hebben
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Geef alle schepen weer die dit station in hun opdrachtenlijst hebben
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Vervang Voertuigen
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Vervang Voertuigen
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Start het Vervangen
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop het Vervangen
|
||||
STR_NOT_REPLACING :{BLACK}Niet aan het vervangen
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Geen voertuig geselecteerd
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecteer het type locmotief om te vervangen
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecteer een nieuw type locomotief die je wil gebruiken om het links geselecteerde type locomotief te vervangen
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klik op deze knop als je de aan de linkerkant geselecteerde locomotief niet wil vervangen
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Klik op deze knop als je de aan de linkerkant geseleteerde locomotief wil vervangen met die aan de rechterkant
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Selecteer een railtype waar je locomotieven voor wil selecteren
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dit geeft weer waarmee de aan de linkerkant geselecteerde locomotief mee vervangen wordt
|
||||
STR_REPLACE_HELP :{BLACK}Deze optie stelt je in staat om een type locomotief te selecteren en die te vervangen door een andere. Dit zal automatisch gebeuren zodra de voertuigen een depot inrijden
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Treinstellen
|
||||
STR_MONORAIL_VEHICLES :Monorail Voertuigen
|
||||
STR_MAGLEV_VEHICLES :Maglev Voertuigen
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Can't do this....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Can't clear this area....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Original design by Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Original graphics by Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Special thanks go out to:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signals and Semaphores {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Foundations for Tracks on Slopes {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Canal/Lock graphics {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
|
||||
STR_TRANSLATED_BY :{BLACK} Translator(s) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperial (miles)
|
||||
STR_013A_METRIC_KILOMETERS :Metric (kilometers)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Can't change servicing interval...
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Close window
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window
|
||||
STR_STICKY_BUTTON :{BLACK}Mark this window as uncloseable by the 'Close All Windows' key
|
||||
STR_RESIZE_BUTTON :{BLACK}Click and drag to resize this window
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Lower a corner of land
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Raise a corner of land
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Changes to cargo acceptance
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subsidies
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}General information
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...too far from previous destination
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached 2050{}({STRING} Level)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached {NUMU16}{}({STRING} Level)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Company League Table in {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Businessman
|
||||
STR_0214_ENTREPRENEUR :Entrepreneur
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalist
|
||||
STR_0217_MAGNATE :Magnate
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon of the Century
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} achieves '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} of {STRING} achieves '{STRING}' status!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} achieves '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} of {STRING} achieves '{STRING}' status!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf settings
|
||||
STR_NEWGRF_SETTINGS2 :Newgrf settings
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Close ALL windows
|
||||
STR_CLOSE_ALL_WINDOWS2 :Close ALL windows
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Town names displayed
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Town names displayed
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Station names displayed
|
||||
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subsidies
|
||||
STR_02DE_MAP_OF_WORLD :Map of world
|
||||
STR_EXTRA_VIEW_PORT :Extra viewport
|
||||
STR_02DF_TOWN_DIRECTORY :Town directory
|
||||
STR_TOWN_POPULATION :{BLACK}World population: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copy to viewport
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copy the location of the global view to this viewport
|
||||
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fund new industry
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fund new industry
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...can only be built in rainforest areas
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...can only be built in desert areas
|
||||
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :English
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :English (Original)
|
||||
STR_TOWNNAME_FRENCH :French
|
||||
STR_TOWNNAME_GERMAN :German
|
||||
STR_TOWNNAME_AMERICAN :American
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :English (Additional)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latin-American
|
||||
STR_TOWNNAME_SILLY :Silly
|
||||
STR_TOWNNAME_SWEDISH :Swedish
|
||||
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Dutch
|
||||
STR_TOWNNAME_FINNISH :Finnish
|
||||
STR_TOWNNAME_POLISH :Polish
|
||||
STR_TOWNNAME_SLOVAKISH :Slovakish
|
||||
STR_TOWNNAME_NORWEGIAN :Norwegian
|
||||
STR_TOWNNAME_HUNGARIAN :Hungarian
|
||||
STR_TOWNNAME_AUSTRIAN :Austrian
|
||||
STR_TOWNNAME_ROMANIAN :Romanian
|
||||
STR_TOWNNAME_CZECH :Czech
|
||||
STR_TOWNNAME_SWISS :Swiss
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pounds ({POUNDSIGN})
|
||||
@@ -981,7 +981,7 @@ STR_CONFIG_PATCHES_ON :On
|
||||
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Show vehicle speed in status bar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Allow building on slopes and coasts: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Allow more realistically sized catchment areas: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, tunnels, etc: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, etc: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Enable building very long trains: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Enable realistic acceleration for trains: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Join train stations built next to each other: {ORANGE}{STRING}
|
||||
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenew vehicle when it gets
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenew when vehice is {ORANGE}{STRING}{LTBLUE} months before/after max age
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autorenew minimum needed money for renew: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duration of error message: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Show town population in the town name label: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Invisible trees (with transparent buildings): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snow line height: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max station spread: {ORANGE}{STRING} {RED}Warning: High setting slows game
|
||||
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Default service interval for air
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Default service interval for aircraft: {ORANGE}disabled
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Default service interval for ships: {ORANGE}{STRING} days/%
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Default service interval for ships: {ORANGE}disabled
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Disable servicing when breakdowns set to none: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Coloured news appears in: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Starting date: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}End game in: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Enable smooth economy (more, smaller changes)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Allow buying shares from other companies
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging, place signals every: {ORANGE}{STRING} tile(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position of main toolbar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Left
|
||||
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Can't build locks here...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Build locks
|
||||
STR_LANDINFO_LOCK :Lock
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}...buoy is in use!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
|
||||
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Select type of cargo for train to c
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Refit train to carry highlighted cargo type
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Can't refit train...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervals are in percents: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Change production
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Welcome to this new AI, a work in progress. You should expect problems. When you happen take a screenshot and post it in the forum. Enjoy!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Warning: this new AI is still alpha! Currently, only trucks and busses work!
|
||||
@@ -1199,7 +1206,7 @@ STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
|
||||
STR_NETWORK_PLAYER_NAME :{BLACK}Player name:
|
||||
STR_NETWORK_ENTER_NAME_TIP :{BLACK}This is the name other players will identify you by
|
||||
STR_NETWORK_CONNECTION :{BLACK}Connection:
|
||||
STR_NETWORK_CONNECTION_TIP :{BLACK}Choose between an internet game or a local area network game
|
||||
STR_NETWORK_CONNECTION_TIP :{BLACK}Choose between an internet game or a Local Area Network (LAN) game
|
||||
|
||||
STR_NETWORK_START_SERVER :{BLACK}Start server
|
||||
STR_NETWORK_START_SERVER_TIP :{BLACK}Start your own server
|
||||
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Language: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Map size: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Password protected!
|
||||
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} A protocol-error was made and the conn
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} The revision of this client does not match the server's revision
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Wrong password
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} The server is full
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} You are banned from this server
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} You were kicked out of the game
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating is not allowed on this server
|
||||
|
||||
@@ -1368,7 +1376,7 @@ STR_NETWORK_CHAT_TO_COMPANY :[Team] To {STRING}:
|
||||
STR_NETWORK_CHAT_CLIENT :[Private] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_CLIENT :[Private] To {STRING}:
|
||||
STR_NETWORK_CHAT_ALL :[All] {STRING}:
|
||||
STR_NETWORK_NAME_CHANGE :has changed his name to
|
||||
STR_NETWORK_NAME_CHANGE :has changed his/her name to
|
||||
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} The server closed the session
|
||||
STR_NETWORK_SERVER_REBOOT :{WHITE} The server is restarting...{}Please wait...
|
||||
|
||||
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Road/rail level crossing
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Towns
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -1786,7 +1795,7 @@ STR_5004 :
|
||||
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Unable to excavate land for other end of tunnel
|
||||
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Must demolish tunnel first
|
||||
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Must demolish bridge first
|
||||
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Cannot start and end in same spot
|
||||
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Cannot start and end in the same spot
|
||||
STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Level land or water required under bridge
|
||||
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line
|
||||
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Site unsuitable for tunnel entrance
|
||||
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Can't sell 25% share in this company
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% owned by {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% owned by {STRING}{} {COMMA16}% owned by {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} has been taken over by {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}This company is not old enough to trade shares yet...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Steam)
|
||||
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} from {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Train {COMMA16} is waiting in depot
|
||||
STR_8815_NEW_VEHICLES :{BLACK}New Vehicles
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Weight: {GOLD}{COMMA16}t{}{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{COMMA16}hp{}{BLACK}Running Cost: {GOLD}{CURRENCY}/yr{}{BLACK}Capacity: {GOLD}{STRING}{}{BLACK}Designed: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} years{}{BLACK}Max. Reliability: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Weight: {GOLD}{COMMA16}t{}{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{COMMA32}hp{}{BLACK}Running Cost: {GOLD}{CURRENCY}/yr{}{BLACK}Capacity: {GOLD}{STRING}{}{BLACK}Designed: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} years{}{BLACK}Max. Reliability: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Information
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Train too long
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Trains can only be altered when stopped inside a depot
|
||||
@@ -2447,7 +2457,7 @@ STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Show details of cargo carried
|
||||
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Show details of train vehicles
|
||||
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Show capacities of each vehicle
|
||||
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Show total capacity of train, split by cargo type
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Orders list - click on an order to highlight it
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Orders list - click on an order to highlight it. CTRL + click scrolls to the station
|
||||
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Skip the current order, and start the next
|
||||
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Delete the highlighted order
|
||||
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Make the highlighted order non-stop
|
||||
@@ -2593,7 +2603,7 @@ STR_982F_NAME_SHIP :{BLACK}Name ship
|
||||
STR_9831_NAME_SHIP :{WHITE}Name ship
|
||||
STR_9832_CAN_T_NAME_SHIP :{WHITE}Can't name ship...
|
||||
STR_9833_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Citizens celebrate . . .{}First ship arrives at {STATION}!
|
||||
STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}Place a buoy, which can be used as a waypoint
|
||||
STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}Place a buoy which can be used as a waypoint
|
||||
STR_9835_CAN_T_POSITION_BUOY_HERE :{WHITE}Can't place buoy here...
|
||||
STR_9836_RENAME :{BLACK}Rename
|
||||
STR_9837_RENAME_SHIP_TYPE :{BLACK}Rename ship type
|
||||
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Can't name aircraft...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Name aircraft
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Citizens celebrate . . .{}First aircraft arrives at {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Plane Crash!{}{COMMA16} die in fireball at {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Plane Crash!{}Aircraft ran out of fuel, {COMMA16} die in fireball!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinations:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Rename
|
||||
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Show all trains which have this station on
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Show all road vehicles which have this station on their schedule
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Show all aircraft which have this station on their schedule
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Show all ships which have this station on their schedule
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Replace Vehicles
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace Vehicles
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Start Replacing Vehicles
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop Replacing Vehicles
|
||||
STR_NOT_REPLACING :{BLACK}Not replacing
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No vehicle selected
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Select the engine type to replace
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Select the new engine type you would like to use in place of the left selected engine type
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Press to stop the replacement of the engine type selected on the left
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Press to begin replacement of the left selected engine type with the right selected engine type
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Choose the railtype you want to replace engines for
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Displays which engine the left selected engine is being replaced with, if any
|
||||
STR_REPLACE_HELP :{BLACK}This allows you to replace one engine type with another type, when trains of the original type enter a depot
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Rail Vehicles
|
||||
STR_MONORAIL_VEHICLES :Monorail Vehicles
|
||||
STR_MAGLEV_VEHICLES :Maglev Vehicles
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}N
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Aluetta ei voi puhdistaa....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Alkuperäinen {COPYRIGHT} 1995 Chris Sawyer, kaikki oikeudet pidätetään
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versio {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Alkuperäinen suunnittelu: Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Alkuperäiset grafiikat: Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Erityiskiitokset:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Esiopastimet ja opastimet {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Perustat radoille rinteissä {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanaali/sulkugrafiikat {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-ryhmä
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD-ryhmä
|
||||
STR_TRANSLATED_BY :{BLACK} Kääntäjä(t) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Brittiläinen (mailit)
|
||||
STR_013A_METRIC_KILOMETERS :Metrinen (kilometrit)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Huoltov
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Sulje ikkuna
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Ikkunan otsake - vedä tästä siirtääksesi ikkunaa
|
||||
STR_STICKY_BUTTON :{BLACK}Merkitse tämä ikkuna ei-suljettavaksi 'Sulje kaikki ikkunat' näppäimelle
|
||||
STR_RESIZE_BUTTON :{BLACK}Klikkaa ja vedä muuttaaksesi tämän ikkunan kokoa
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Tuhoa rakennuksia jne. maa-alaruudulla
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Madalla maanurkkausta
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Korota maanurkkausta
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Rahdin vastaanottamisen muutoks
|
||||
STR_020E_SUBSIDIES :{YELLOW}Alennukset
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Yleistä tietoa
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...liian kaukana edellisestä määränpäästä
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Parhaat yhtiöt, jotka saavuttivat vuoden 2050{}({STRING} taso)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Parhaat yhtiöt, jotka ylsivät {NUMU16}{}(taso: {STRING})
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Yhtiökilpailutaulukko vuonna {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Liikemies
|
||||
STR_0214_ENTREPRENEUR :Yrittäjä
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalisti
|
||||
STR_0217_MAGNATE :Magnaatti
|
||||
STR_0218_MOGUL :Moguli
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Vuosisadan pohatta
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} saavuttaa tilan '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} {STRING}:sta saavuttaa tilan '{STRING}'! ##
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} saavuttaa arvon '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} yhtiöstä {STRING} saavuttaa arvon '{STRING}'!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -827,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Rahoita uutta teollisuutta
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Rahoita uutta teollisuutta
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...voidaan rakentaa vian kaupunkeihin
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...voidaan rakentaa vain sademetsäalueisiin
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...voidaan rakentaa vain aavikkoalueisiin
|
||||
@@ -849,10 +848,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Englantilainen
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Englantilainen
|
||||
STR_TOWNNAME_FRENCH :Ranskalainen
|
||||
STR_TOWNNAME_GERMAN :Saksalainen
|
||||
STR_TOWNNAME_AMERICAN :Amerikkalainen
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Englanti (lisäke)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latinalais-Amerikkalainen
|
||||
STR_TOWNNAME_SILLY :Hassu
|
||||
STR_TOWNNAME_SWEDISH :Ruotsalainen
|
||||
@@ -860,29 +859,39 @@ STR_TOWNNAME_DUTCH :Hollantilainen
|
||||
STR_TOWNNAME_FINNISH :Suomalainen
|
||||
STR_TOWNNAME_POLISH :Puolalainen
|
||||
STR_TOWNNAME_SLOVAKISH :Slovakialainen
|
||||
STR_TOWNNAME_NORWEGIAN :Norja
|
||||
STR_TOWNNAME_HUNGARIAN :Unkarilainen
|
||||
STR_TOWNNAME_AUSTRIAN :Itävaltalainen
|
||||
STR_TOWNNAME_ROMANIAN :Romania
|
||||
STR_TOWNNAME_CZECH :Tsekki
|
||||
STR_TOWNNAME_SWISS :Sveitsiläinen
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Puntaa ({POUNDSIGN})
|
||||
STR_CURR_USD :Dollaria ($)
|
||||
STR_CURR_EUR :Euro (¤)
|
||||
STR_CURR_YEN :Jeni ({YENSIGN})
|
||||
STR_CURR_ATS :Itävallan shillinki (ATS)
|
||||
STR_CURR_BEF :Belgian frankki (BEF)
|
||||
STR_CURR_CHF :Sveitsin frankki (CHF)
|
||||
STR_CURR_CZK :Tsekin kruunu (CZK)
|
||||
STR_CURR_DEM :Saksanmarkkaa (DEM)
|
||||
STR_CURR_DKK :Tanskan kruunu (DKK)
|
||||
STR_CURR_ESP :Pesetaa (ESP)
|
||||
STR_CURR_FIM :Suomen markka (FIM)
|
||||
STR_CURR_FRF :Frankkia (FRF)
|
||||
STR_CURR_GRD :Kreikan drakma (GRD)
|
||||
STR_CURR_HUF :Unkarin forintia (HUF)
|
||||
STR_CURR_ISK :Islannin kruunu (ISK)
|
||||
STR_CURR_ITL :Italian liira (ITL)
|
||||
STR_CURR_NLG :Hollannin guildeni (NLG)
|
||||
STR_CURR_NOK :Norjan kruunu (NOK)
|
||||
STR_CURR_PLN :Puolan zlotya (PLN)
|
||||
STR_CURR_ROL :Romanian leu (lei)
|
||||
STR_CURR_RUR :Venjän rupla (rur)
|
||||
STR_CURR_SEK :Ruotsin kruunu (SEK)
|
||||
|
||||
STR_CURR_CUSTOM :Oma...
|
||||
|
||||
STR_OPTIONS_LANG :{BLACK}Kieli
|
||||
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
@@ -1009,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Itseuudista ajoneuvo, kun se va
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Itseuudista {ORANGE}{STRING}{LTBLUE} kuukautta maksimi-ikää ennen/-iän jälkeen
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Itseuudistuksen pienin tarvittava rahamäärä: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Virheilmoituksen kesto: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Näytä kaupungin asukasluku kaupungin nimessä: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Näkymättömät puut (näkymättömillä rakennuksilla): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Lumirajan korkeus: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Suurin aseman levittäytyminen: {ORANGE}{STRING} {RED}Varoitus, korkea asetus hidastaa peliä
|
||||
@@ -1034,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Oletushuoltov
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Oletushuoltoväli lentokoneillet: {ORANGE}pois päältä
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Oletushuoltoväli laivoille: {ORANGE}{STRING} päivää
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Oletushuoltoväli laivoille: {ORANGE}pois päältä
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Huollot pois käytöstä, kun rikkoutumiset on pois: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Värjätty uutinen esiintyy: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Aloituspäivämäärä: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Lopeta peli: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Tasainen talous (enemmän pieniä muutoksia)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Salli osakkeiden ostaminen yhtiöistä
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Vedettäessä aseta opastimien väleiksi: {ORANGE}{STRING} ruutu(a)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Päätyökalupalkin sijainti: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vasen
|
||||
@@ -1081,6 +1094,7 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Kohteena {WAYPOINT}
|
||||
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Kohteena {WAYPOINT}, {VELOCITY}
|
||||
|
||||
STR_GO_TO_WAYPOINT :Kierrä rastin {WAYPOINT} kautta
|
||||
STR_GO_NON_STOP_TO_WAYPOINT :Mene pysäht. pisteen {WAYPOINT} kautta
|
||||
|
||||
STR_WAYPOINTNAME_CITY :Rasti: {TOWN}
|
||||
STR_WAYPOINTNAME_CITY_SERIAL :Rasti: {TOWN} #{COMMA16}
|
||||
@@ -1126,6 +1140,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}Sulkua ei voi rakentaa t
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Rakenna sulku
|
||||
STR_LANDINFO_LOCK :Sulku
|
||||
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Koordinaatit: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Asemasta ei voi poistaa osaa...
|
||||
@@ -1177,6 +1192,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Valitse junan rahtityyppi
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Sovita juna kuljettamaan korostettua rahtityyppiä
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Junaa ei voi sovittaa...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Huoltovälit ovat prosentteina: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Aloita tuotanto
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Tervetuloa uuteen tekoälyyn (työn alla). Odota ongelmia. Kun sellainen tulee vastaan, ota kuvankaappaus ja lähetä keskustelualueelle. Nauti!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Varoitus: uusi tekoäly on vielä alpha-koodia! Tällä hetkellä vain rekat ja linja-autot toimivat!
|
||||
@@ -1214,7 +1230,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Kieli: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Ruudusto: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Kartan koko: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Palvelimen versio: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Palvelimen osoite: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Palvelimen osoite: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Aloituspäivä: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Päivä nyt: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Salasanasuojattu!
|
||||
@@ -1236,6 +1252,8 @@ STR_NETWORK_SELECT_MAP_TIP :{BLACK}Mit
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maksimimäärä asiakkaita:
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Valitse asiakkaiden maksimimäärä. Kaikkiin lokeroihin ei tarvita välttämättä pelaajia.
|
||||
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_LAN :Lähiverkko
|
||||
STR_NETWORK_INTERNET :Internet
|
||||
STR_NETWORK_LAN_INTERNET :Lähiverkko / Internet
|
||||
STR_NETWORK_INTERNET_ADVERTISE :Internet (mainosta)
|
||||
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
@@ -1328,6 +1346,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Teimme protokollavirheen ja yhteys kat
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Tämän asiakkaan revisio ei vastaa palvelimen revisiota.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Väärä salasana.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Palvelin on täynnä
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Sinut on suljettu pois palvelimelta
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Sinut potkittiin pihalle palvelimelta
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Huijaaminen ei ole sallittua tällä palvelimella
|
||||
|
||||
@@ -1350,6 +1369,11 @@ STR_NETWORK_ERR_CLIENT_CHEATER :yritti k
|
||||
STR_NETWORK_CLIENT_JOINED :liittyi peliin
|
||||
STR_NETWORK_GIVE_MONEY :antoi sinulle rahaa ({CURRENCY})
|
||||
STR_NETWORK_GAVE_MONEY_AWAY :annoit {STRING}:lle hieman rahaa ({CURRENCY})
|
||||
STR_NETWORK_CHAT_COMPANY :[Joukkue] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_COMPANY :[Joukkue] To {STRING}:
|
||||
STR_NETWORK_CHAT_CLIENT :[Yksityinen] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_CLIENT :[Yksityinen] To {STRING}:
|
||||
STR_NETWORK_CHAT_ALL :[Kaikki] {STRING}:
|
||||
STR_NETWORK_NAME_CHANGE :on vaihtanut nimensä:
|
||||
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Palvelin sulki istunnon
|
||||
STR_NETWORK_SERVER_REBOOT :{WHITE} Palvelin käynnistyy uudelleen...{}Odota, ole hyvä...
|
||||
@@ -1463,6 +1487,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Tie/rautatietasoliittym
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Kaupungit
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2053,6 +2078,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rakenna yhti
|
||||
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Yhtiön päärakennusta ei voi rakentaa...
|
||||
STR_7072_VIEW_HQ :{BLACK}Näytä päämaja
|
||||
STR_RELOCATE_HQ :{BLACK}Sijoita päämaja
|
||||
STR_COMPANY_PASSWORD :{BLACK}Salasana
|
||||
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Salasanalla voit suojata yhtiösi, jotta kukaan vieras ei pääse liittymään.
|
||||
STR_SET_COMPANY_PASSWORD :Aseta yhtiön salasana
|
||||
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Maailmallinen laskukausi!{}{}Rahoitusasiantuntijat pelkäävät pahinta talouden laskiessa!
|
||||
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Laskuakusi ohi!{}{}Kaupankäynnin käänne parempaan lisää luottamusta teollisuuteen talouden vahvistuessa!
|
||||
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Suuri/pieni ikkunan koko
|
||||
@@ -2066,6 +2094,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}T
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}%:n omistus: {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}%:n omistus: {STRING}{} {COMMA16}%:n omistus {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}Yhtiön {STRING} on ottanut haltuun {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Tällä yhtiöllä ei ole vielä osakkeita...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (höyry)
|
||||
@@ -2364,7 +2393,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} asemalta {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Juna {COMMA16} odottaa veturitallilla
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Uusia ajoneuvoja
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Hinta: {GOLD}{CURRENCY}{BLACK} Paino: {GOLD}{COMMA16}t{}{BLACK}Nopeus: {GOLD}{VELOCITY}{BLACK} Teho: {GOLD}{COMMA16}hv{}{BLACK}Käyttökustannukset: {GOLD}{CURRENCY}/yr{}{BLACK}Kapasiteetti: {GOLD}{STRING}{}{BLACK}Suunniteltu: {GOLD}{NUMU16}{BLACK} Käyttöikä: {GOLD}{COMMA16} vuotta{}{BLACK}Maksimitoimintavarmuus: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Hinta: {GOLD}{CURRENCY}{BLACK} Paino: {GOLD}{COMMA16}t{}{BLACK}Nopeus: {GOLD}{VELOCITY}{BLACK} Teho: {GOLD}{COMMA32}hv{}{BLACK}Käyttökustannukset: {GOLD}{CURRENCY}/yr{}{BLACK}Kapasiteetti: {GOLD}{STRING}{}{BLACK}Suunniteltu: {GOLD}{NUMU16}{BLACK} Käyttöikä: {GOLD}{COMMA16} vuotta{}{BLACK}Maksimitoimintavarmuus: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Tietoja
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Juna liian pitkä
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Junia voi muunnella vain, kun pysähdyksissä veturitallilla
|
||||
@@ -2645,6 +2674,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Lentokonetta ei voi nimet
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Nimeä lentokone
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Kaupunkilaiset juhlivat . . .{}Ensimmäinen lentokone saapuu asemalle ({STATION})!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Lento-onnettomuus!{}{COMMA16} kuolee tulipallossa asemalla {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Lentokoneonnettomuus!{}Lentokoneelta loppui polttoaine, {COMMA16} kuolee tulipallossa!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Kohteet:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Uudelleennimeä
|
||||
@@ -2714,6 +2744,15 @@ STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Yht
|
||||
STR_NEWGRF_FILENAME :{BLACK}Tiedostonimi:
|
||||
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
|
||||
|
||||
STR_CURRENCY_WINDOW :{WHITE}Oma valuutta
|
||||
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Vaihtokurssi: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
|
||||
STR_CURRENCY_SEPARATOR :{LTBLUE}Välimerkki:
|
||||
STR_CURRENCY_PREFIX :{LTBLUE}Etuliite:
|
||||
STR_CURRENCY_SUFFIX :{LTBLUE}Jälkiliite:
|
||||
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Vaihda euroon: {ORANGE}{INT32}
|
||||
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Vaihda euroon: {ORANGE}ei koskaan
|
||||
STR_CURRENCY_PREVIEW :{LTBLUE}Esikatselu: {ORANGE}{CURRENCY}
|
||||
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Vaihda oman valuutan parametria
|
||||
|
||||
STR_TRAIN :{BLACK}{TRAIN}
|
||||
STR_LORRY :{BLACK}{LORRY}
|
||||
@@ -2729,3 +2768,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}N
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Näytä kaikki autot, joilla on asema aikataulussaan
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Näytä kaikki lentokoneet, joilla on asema aikataulussaan
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Näytä kaikki laivat, joilla on asema aikataulussaan
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Korvaa ajoneuvoja
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Korvaa ajoneuvoja
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Aloita ajoneuvojen korvaaminen
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Lopeta ajoneuvojen korvaaminen
|
||||
STR_NOT_REPLACING :{BLACK}Ei korvata
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ajoneuvoa ei valittuna
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Valitse korvattava veturityyppi
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Valitse vasemmalla näkyvän veturityypinn korvaava uusi veturityyppi
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Paina pysäyttääksesi vasemmalta valitun veturityypin korvauksen
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Paina aloittaaksesi vasemmalta valitun veturityypin korvauksen oikealta valitulla veturityypillä
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Valitse rautatietyyppi, jolle veturikorvaukset tehdään
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Näyttää, millä vasemmalta valittu veturi korvataan, jos millään
|
||||
STR_REPLACE_HELP :{BLACK}Tällä voit korvata yhden veturityypin toisella, kun alkuperäisen tyypin junat menevät varikolle
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Rautatiejunat
|
||||
STR_MONORAIL_VEHICLES :Yksiraidejunat
|
||||
STR_MAGLEV_VEHICLES :Maglev-junat
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Impossible d'ex
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Impossible de balayer....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright originel {COPYRIGHT} 1995 Chris Sawyer, Tous droits réservés
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Design original par Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graphismes par Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Remerciements particuliers pour:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signaux et Sémaphores {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fondations pour les voies sur plan incliné {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Graphiques des Canaux/Ecluses {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
|
||||
STR_TRANSLATED_BY :{BLACK} Traducteur(s) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Impérial (miles)
|
||||
STR_013A_METRIC_KILOMETERS :Métrique (kilomètres)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Impossible de modifier l'intervalle
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Fermer la fenêtre
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titre de fenêtre - Glissez ceci pour déplacer la fenêtre
|
||||
STR_STICKY_BUTTON :{BLACK}Marquer cette fenêtre comme ineffaçable pour la touche 'Fermer toutes les fenêtres'
|
||||
STR_RESIZE_BUTTON :{BLACK}Cliquez et glissez pour redimensionner cette fenêtre
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Démolir les constructions sur un carré de terrain
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Abaisser le terrain
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Élever le terrain
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Changements d'acceptance de car
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subventions
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Information génerale
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...trop loin de la destination précédente
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Meilleures compagnies qui ont atteint 2050{}({STRING} Niveau)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Meilleures compagnies, qui ont atteint {NUMU16}{}({STRING} niveau)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tableau du Championnat des compagnies en {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Homme d'affaires
|
||||
STR_0214_ENTREPRENEUR :Entrepreneur
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitaliste
|
||||
STR_0217_MAGNATE :Magnat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon du Siècle
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} atteint le statut de '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de {STRING} atteint le statut de '{STRING}'!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} atteint le niveau de '{STRING}' !
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} de {STRING} atteint le niveau de '{STRING}' !
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Param
|
||||
STR_NEWGRF_SETTINGS2 :Paramètres Newgrf
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Fermer TOUTES les fenêtres
|
||||
STR_CLOSE_ALL_WINDOWS2 :Fermer TOUTES les fenêtres
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afficher le nom des villes
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Afficher le nom des villes
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afficher le nom des stations
|
||||
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subventions
|
||||
STR_02DE_MAP_OF_WORLD :Carte du monde
|
||||
STR_EXTRA_VIEW_PORT :Vue supplémentaire
|
||||
STR_02DF_TOWN_DIRECTORY :Annuaire des villes
|
||||
STR_TOWN_POPULATION :{BLACK}Population mondiale : {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vue {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copier vers la vue
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copie l'emplacement de la vue globale vers cette vue
|
||||
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Financer une nouvelle industrie
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financer une nouvelle industrie
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...peut seulement être construit en ville
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...peut seulement être construit en forêt tropicale
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...peut seulement être construit dans les endroits désertiques
|
||||
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Anglais
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglais (Originaux)
|
||||
STR_TOWNNAME_FRENCH :Français
|
||||
STR_TOWNNAME_GERMAN :Allemand
|
||||
STR_TOWNNAME_AMERICAN :Américan
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglais (Additionels)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americain
|
||||
STR_TOWNNAME_SILLY :Drôles
|
||||
STR_TOWNNAME_SWEDISH :Suédois
|
||||
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Hollandais
|
||||
STR_TOWNNAME_FINNISH :Finnish
|
||||
STR_TOWNNAME_POLISH :Polonais
|
||||
STR_TOWNNAME_SLOVAKISH :Slovaques
|
||||
STR_TOWNNAME_NORWEGIAN :Norvégiens
|
||||
STR_TOWNNAME_HUNGARIAN :Hongrois
|
||||
STR_TOWNNAME_AUSTRIAN :Autrichiens
|
||||
STR_TOWNNAME_ROMANIAN :Roumain
|
||||
STR_TOWNNAME_CZECH :Tchèques
|
||||
STR_TOWNNAME_SWISS :Suisse
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Livres ({POUNDSIGN})
|
||||
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Renouveller automatiquement les
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Auto-renouveller les véhicules {ORANGE}{STRING}{LTBLUE} mois avant/après l'âge maximum
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Argent nécessaire pour l'auto-renouvellement : {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Temps d'affichage des messages d'erreur: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Montrer la population d'une ville dans son label : {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Arbres invisibles (quand les bâtiments sont transparents) : {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altitude d'enneigement: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Etendue max. des stations: {ORANGE}{STRING} {RED}Attention: Valeur élevée = jeu lent
|
||||
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Maintenance des a
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Maintenance des aéronefs tous les: {ORANGE}désactivé
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Maintenance des navires tous les: {ORANGE}{STRING} jours
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Maintenance des navires tous les: {ORANGE}désactivé
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Désactiver les réparations quand les pannes sont désactivées: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Les journeaux en couleurs apparaissent en: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Date de départ: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Finir le jeu en : {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Permettre une économie stable (plus de petits changements)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permettre d'acheter des actions d'autres compagnies
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Espacements des signaux en mode drag & drop : {ORANGE}{STRING} case(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position de la barre d'outils principale: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Gauche
|
||||
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Impossible de construire un
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Construire des écluses
|
||||
STR_LANDINFO_LOCK :Ecluse
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... bouée utilisée !
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordonnées: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Impossible de supprimer une partie de la gare...
|
||||
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Choix du type de marchandises
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Réaménager le train pour les marchandises sélectionnées
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Impossible de réaménager le train...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Les intervalles de service sont en pourcentage: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Changer la production
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Bienvenue dans cette nouvelle IA, en cours d'élaboration. Vous pouvez vous attendre à rencontrer des problèmes. Dans ce cas, faites une capture d'écran et postez-la sur le forum. Amusez-vous bien !
|
||||
TEMP_AI_ACTIVATED :{WHITE}Attention: cette nouvelle IA est en version alpha ! Pour le moment seuls les camions et les bus fonctionnent !
|
||||
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Langue: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Terrain: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Taille de la carte : {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Version du serveur : {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresse du serveur : {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresse du serveur : {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Date de début : {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Date courante : {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Protégée par mot de passe !
|
||||
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Il y a eu une erreur de protocole et l
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} La révision de ce client ne correspond pas à celle du serveur.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Mot de passe incorrect.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Le serveur est plein
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Vous êtes bannis de ce serveur
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Vous avez été jeté du serveur
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Tricher n'est pas autorisé sur ce serveur
|
||||
|
||||
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Route/rail Croisement
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Villes
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Impossible de vendre des parts...
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% détenus par {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% détenus par {STRING}{} {COMMA16}% détenus par {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} a été rachetée par {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Cette compagnie ne vend pas d'actions pour le moment...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapeur)
|
||||
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} de {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Le train {COMMA16} est en attente au dépôt
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nouveaux véhicules
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Prix: {GOLD}{CURRENCY}{BLACK} Poids: {GOLD}{COMMA16}t{}{BLACK}Vitesse: {GOLD}{VELOCITY}{BLACK} Puissance: {GOLD}{COMMA16}ch{}{BLACK}Coût d'entretien: {GOLD}{CURRENCY}/an{}{BLACK}Capacité: {GOLD}{STRING}{}{BLACK}Conçu en: {GOLD}{NUMU16}{BLACK} Durée de vie: {GOLD}{COMMA16} ans{}{BLACK}Fiabilité max.: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Prix: {GOLD}{CURRENCY}{BLACK} Poids: {GOLD}{COMMA16}t{}{BLACK}Vitesse: {GOLD}{VELOCITY}{BLACK} Puissance: {GOLD}{COMMA32}ch{}{BLACK}Coût d'entretien: {GOLD}{CURRENCY}/an{}{BLACK}Capacité: {GOLD}{STRING}{}{BLACK}Conçu en: {GOLD}{NUMU16}{BLACK} Durée de vie: {GOLD}{COMMA16} ans{}{BLACK}Fiabilité max.: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Information
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Train trop long
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Les trains peuvent être manipulés qu'une fois stoppés au dépôt
|
||||
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Impossible de nommer l'a
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Nommer l'aéronef
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Arrivée du premier aéronef à {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Écrasement d'un aéronef!{}{COMMA16} meurent brulés vifs à {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Crash d'avion !{}L'aéronef n'avait plus de carburant, {COMMA16} meurent de manière horrible !
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinations:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Renommer
|
||||
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Montre tous les trains qui ont cette statio
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Montre tous les véhicules routiers qui ont cette station dans leur itinéraire
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Montre tous les aéronefs qui ont cette station dans leur itinéraire
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Montre tous les navires qui ont cette station dans leur itinéraire
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Remplacement véhicules
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Remplacer des Véhicules
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Commencer le remplacement
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Stopper le remplacement
|
||||
STR_NOT_REPLACING :{BLACK}Pas en cours de remplacement
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Aucun véhicule selectionné
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Choisissez le type de locomotive à remplacer
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Choisissez le nouveau type de locomotive que vous voudriez utiliser à la place du type de locomotive sélectionné à gauche
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Appuyez sur ce bouton si vous ne voulez pas remplacer la locomotive que vous avez choisi à gauche
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Appuyez sur ce bouton si vous voulez remplacer la locomotive de gauche par celle sélectionnée à droite
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Choisissez un type de rail pour le remplacement de locomotives
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Ceci affiche par quelle locomotive celle qui est sélectionnée à gauche sera remplacée
|
||||
STR_REPLACE_HELP :{BLACK}Cette caractéristique permet de choisir un type de locomotive et de le remplacer par un autre. Ceci sera fait automatiquement quand le véhicule rentre dans un dépôt
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Véhicules sur rail
|
||||
STR_MONORAIL_VEHICLES :Véhicules sur monorail
|
||||
STR_MAGLEV_VEHICLES :Véhicules sur Maglev
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -77,7 +77,7 @@ STR_0047_COLA :Cola
|
||||
STR_0048_COTTON_CANDY :Algodón de Azucre
|
||||
STR_0049_BUBBLE :Burbulla
|
||||
STR_004A_TOFFEE :Toffee
|
||||
STR_004B_BATTERY :Battería
|
||||
STR_004B_BATTERY :Batería
|
||||
STR_004C_PLASTIC :Plástico
|
||||
STR_004D_FIZZY_DRINK :Bebida Gaseosa
|
||||
STR_004E :
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Non podes facer eso....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Non podes limpar esta área....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright Orixinal {COPYRIGHT} 1995 Chris Sawyer, Tódolos dereitos reservados
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versión {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Deseño orixinal de Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Gráficos de Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Agradecementos especiais para:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Sinais e Semáforos {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Bases para Pistas en Pendentes {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Gráficos dos Canais/Peches {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
|
||||
STR_TRANSLATED_BY :{BLACK} Traductor(es) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -243,9 +238,9 @@ STR_00F2_300M :{BLACK}{TINYFONT}300m
|
||||
STR_00F3_400M :{BLACK}{TINYFONT}400m
|
||||
STR_00F4_500M :{BLACK}{TINYFONT}500m
|
||||
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trens
|
||||
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Vehículos de estrada
|
||||
STR_00F7_SHIPS :{BLACK}{TINYFONT}Barcos
|
||||
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Avións
|
||||
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Camións/Buses
|
||||
STR_00F7_SHIPS :{BLACK}{TINYFONT}Navíos
|
||||
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Aeronaves
|
||||
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Rutas de transporte
|
||||
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Mina de Carbón
|
||||
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Estación Enerxética
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperial (millas)
|
||||
STR_013A_METRIC_KILOMETERS :Métrico (quilómetros)
|
||||
@@ -404,7 +400,7 @@ STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}Amosa-la t
|
||||
STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista dos trens da compañía
|
||||
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista dos vehículos de estrada da compañía
|
||||
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista dos barcos da compañía
|
||||
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista dos avións da compañía
|
||||
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista das aeronaves da compañía
|
||||
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Achega-la vista
|
||||
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Alonxa-la vista
|
||||
STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Construír elementos do ferrocarril
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Non se pode cambia-lo intervalo de s
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Pechar fiestra
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da fiestra - arrástrao para move-la fiestra
|
||||
STR_STICKY_BUTTON :{BLACK}Marcar esta fiestra coma non pechable pola tecla de 'Pechar tódalas fiestras'
|
||||
STR_RESIZE_BUTTON :{BLACK}Pincha e arrastra para redimensiona-la fiestra
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. nun cadrado de terreo
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Baixar unha esquina de terreo
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar unha esquina de terreo
|
||||
@@ -440,7 +437,7 @@ STR_019B_YEARS :{RED}{COMMA16} anos ({COMMA16})
|
||||
############ range for service numbers ends
|
||||
|
||||
STR_019C_ROAD_VEHICLE :Vehículo de estrada
|
||||
STR_019D_AIRCRAFT :Avión
|
||||
STR_019D_AIRCRAFT :Aeronave
|
||||
STR_019E_SHIP :Barco
|
||||
STR_019F_TRAIN :Tren
|
||||
STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA16} estase volvendo vello
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Cambios na aceptaci
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subsidios
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Información xeral
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...Demasiado lonxe do destino anterior
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Mellores compañías que chegaron ó 2050{}(Nivel {STRING})
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Mellores compañías que chegaron ó {NUMU16}{}(Nivel {STRING})
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Táboa da Liga de Compañías en {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Home de negocios
|
||||
STR_0214_ENTREPRENEUR :Empresario
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalista
|
||||
STR_0217_MAGNATE :Magnate
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Magnate da Centuria
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :¡{BIGFONT}{STRING}{STRING} consegue o status de '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :¡{BIGFONT}{STRING}{STRING} de {STRING} consegue o status de '{STRING}'!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}¡{STRING} logra o status de '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}¡{STRING} de {STRING} logra o status '{STRING}'!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Configuraci
|
||||
STR_NEWGRF_SETTINGS2 :Configuración de Newgrf
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Pechar TÓDALAS Fiestras
|
||||
STR_CLOSE_ALL_WINDOWS2 :Pechar TÓDALAS Fiestras
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Amosar nomes de cidades
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Amosar nomes de cidades
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Amosar nomes de estacións
|
||||
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fundar unha nova industria
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fundar unha nova industria
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...só se pode construír en cidades
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...só se pode construír en zonas de selva tropical
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...só se pode construír en zonas desérticas
|
||||
@@ -841,7 +838,7 @@ STR_031C_SCREENSHOT_FAILED :{WHITE}
|
||||
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Comprar terreo para futuro uso
|
||||
STR_032A_1_ROAD_VEHICLE_SERVICE :{BLACK}1: Servicio a vehículo de estrada
|
||||
STR_032B_2_RAILROAD_SERVICE :{BLACK}2: Servicio a ferrocarril
|
||||
STR_032C_3_AIR_SERVICE :{BLACK}3: Servicio a avión
|
||||
STR_032C_3_AIR_SERVICE :{BLACK}3: Servicio a aeronave
|
||||
STR_032D_4_SHIP_SERVICE :{BLACK}4: Servicio a barco
|
||||
STR_032E_5_RAILROAD_SERVICE_ADVANCED :{BLACK}5: Servicio a ferrocarril (avanzado)
|
||||
STR_032F_AUTOSAVE :{RED}AUTOGUARDADO
|
||||
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Inglés
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglés
|
||||
STR_TOWNNAME_FRENCH :Francés
|
||||
STR_TOWNNAME_GERMAN :Alemán
|
||||
STR_TOWNNAME_AMERICAN :Americano
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Inglés (Adicional)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americano
|
||||
STR_TOWNNAME_SILLY :Estúpido
|
||||
STR_TOWNNAME_SWEDISH :Sueco
|
||||
@@ -862,6 +859,7 @@ STR_TOWNNAME_DUTCH :Holand
|
||||
STR_TOWNNAME_FINNISH :Finés
|
||||
STR_TOWNNAME_POLISH :Polaco
|
||||
STR_TOWNNAME_SLOVAKISH :Eslovaco
|
||||
STR_TOWNNAME_NORWEGIAN :Noruegués
|
||||
STR_TOWNNAME_HUNGARIAN :Húngaro
|
||||
STR_TOWNNAME_AUSTRIAN :Austríaco
|
||||
STR_TOWNNAME_ROMANIAN :Rumano
|
||||
@@ -961,16 +959,16 @@ STR_SHIP_HAS_TOO_FEW_ORDERS :{WHITE}O barco {COMMA16} ten moi poucas ordes n
|
||||
STR_SHIP_HAS_VOID_ORDER :{WHITE}O barco {COMMA16} ten unha orde inválida
|
||||
STR_SHIP_HAS_DUPLICATE_ENTRY :{WHITE}O barco {COMMA16} ten ordes duplicadas
|
||||
STR_SHIP_HAS_INVALID_ENTRY :{WHITE}O Barco {COMMA16} ten unha estación non válida nas ordes
|
||||
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}O avión {COMMA16} ten moi poucas ordes no seu programa
|
||||
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}O avión {COMMA16} ten unha orde inválida
|
||||
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}O avión {COMMA16} ten ordes duplicadas
|
||||
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}O Avión {COMMA16} ten unha estación non válida nas ordes
|
||||
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}A aeronave {COMMA16} ten moi poucas ordes no seu programa
|
||||
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}A aeronave {COMMA16} ten unha orde inválida
|
||||
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}A aeronave {COMMA16} ten ordes duplicadas
|
||||
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}A aeronave {COMMA16} ten unha estación non válida nas ordes
|
||||
# end of order system
|
||||
|
||||
STR_TRAIN_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para o tren {COMMA16} (límite de diñeiro)
|
||||
STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para o vehículo de estrada {COMMA16} (límite de diñeiro)
|
||||
STR_SHIP_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para o barco {COMMA16} (límite de diñeiro)
|
||||
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para o avión {COMMA16} (límite de diñeiro)
|
||||
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para a aeronave {COMMA16} (límite de diñeiro)
|
||||
|
||||
STR_CONFIG_PATCHES :{BLACK}Configuración dos Parches
|
||||
STR_CONFIG_PATCHES_TIP :{BLACK}Configura-los parches
|
||||
@@ -1019,6 +1017,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenova-los veh
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenovar {ORANGE}{STRING}{LTBLUE} meses antes/despois da idade máxima
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Diñeiro mínimo necesario para a autorenovación: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duración das mensaxes de error: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Mostra-la poboación da cidade na etiqueta: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Árbores invisibles (con edificios transparentes): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altura da liña de neve: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Extensión Max. Estación: {ORANGE}{STRING} {RED}Aviso: Valores altos reducen rendemento
|
||||
@@ -1026,12 +1025,12 @@ STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Face-lo servicio os helic
|
||||
|
||||
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Nº máximo de trens por xogador: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Nº máximo de vehículos de estrada por xogador: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Nº máximo de avións por xogador: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Nº máximo de aeronaves por xogador: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Nº máximo de barcos por xogador: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_AI_BUILDS_TRAINS :{LTBLUE}Deshabilita-los trens para o ordenador: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}Deshabilita-los vehículos de estrada para o ordenador: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Deshabilita-los avións para o ordenador: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Deshabilita-las aeronaves para o ordenador: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Deshabilita-los barcos para o ordenador: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Activar nova AI (alpha): {ORANGE}{STRING}
|
||||
@@ -1040,14 +1039,16 @@ STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Intervalo de servicio para os tren
|
||||
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Intervalo de servicio para os trens: {ORANGE}deshabilitado
|
||||
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Intervalo de servicio para os vehículos de estrada: {ORANGE}{STRING} días
|
||||
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Intervalo de servicio para os vehículos de estrada: {ORANGE}deshabilitado
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Intervalo de servicio para os avións: {ORANGE}{STRING} días
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Intervalo de servicio para os avións: {ORANGE}deshabilitado
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Intervalo de servicio para as aeronaves: {ORANGE}{STRING} días
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Intervalo de servicio para as aeronaves: {ORANGE}deshabilitado
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Intervalo de servicio para os barcos: {ORANGE}{STRING} días
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Intervalo de servicio para os barcos: {ORANGE}deshabilitado
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Data de aparición das noticias en color: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Data de comezo: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Terminar partida en: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Habilita-la economía "suave"(máis cambios, pero máis pequenos)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permiti-la compra de accións por outras compañías
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Cando se arrastre, colocar siniais cada: {ORANGE}{STRING} cadrado(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posición da barra de ferramentas principal: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Esquerda
|
||||
@@ -1121,6 +1122,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Varias industrias aleatorias
|
||||
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cubri-lo mapa con industrias colocadas aleatoriamente
|
||||
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Non se poden xera-las industrias...
|
||||
|
||||
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Abri-la ferramenta de terreo para subir/baixar terreo, plantar árbores, etc.
|
||||
STR_LANDSCAPING_TOOLBAR :{WHITE}Modifica-lo terreo
|
||||
STR_LEVEL_LAND_TOOLTIP :{BLACK}Nivelar terreo
|
||||
|
||||
@@ -1136,6 +1138,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}Non se pode constru
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Construír peches
|
||||
STR_LANDINFO_LOCK :Peche
|
||||
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Non se pode eliminar parte da estación...
|
||||
@@ -1187,7 +1190,9 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Selecciona o tipo de carga que leva
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Reaxusta-lo tren para o tipo de carga seleccionado
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}No se pode reaxusta-lo tren...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Intervalos de servicio en porcentaxes: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambiar producción
|
||||
|
||||
TEMP_AI_ACTIVATED :{WHITE}¡Advertencia: esta nova AI esta en estado alfa! ¡ Neste momento só funcionan os camións e os buses!
|
||||
|
||||
############ network gui strings
|
||||
|
||||
@@ -1222,7 +1227,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Set de Terreo: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Tamaño: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Versión do servidor: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Dirección do servidor: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Dirección do servidor: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Data de comezo: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Data actual: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}¡Protexido con clave!
|
||||
@@ -1334,8 +1339,10 @@ STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Non se pode carga-la partida
|
||||
STR_NETWORK_ERR_SERVER_START :{WHITE} Non se pode arrinca-lo servidor
|
||||
STR_NETWORK_ERR_CLIENT_START :{WHITE} Non se pode conectar
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE} Conexión #{NUMU16} fora de tempo
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} A revisión deste cliente no e igual ca revisión do servidor.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Contrasinal errónea
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} O servidor está cheo
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Fuches
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Fuches pateado da partida
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Non se permite facer trampas neste servidor
|
||||
|
||||
@@ -1347,16 +1354,24 @@ STR_NETWORK_ERR_CLIENT_SAVEGAME :no se pode carga-lo mapa
|
||||
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :coneción perdida
|
||||
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :error de protocolo
|
||||
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Non Autorizado
|
||||
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :recibiuse un paquete extraño
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :revisión errónea
|
||||
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :o nome xa está en uso
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :contrasinal incorrecta
|
||||
STR_NETWORK_ERR_CLIENT_KICKED :pateado polo servidor
|
||||
STR_NETWORK_ERR_CLIENT_CHEATER :intentaba usar un truco
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CLIENT_JOINED :uniuse á partida
|
||||
STR_NETWORK_GIVE_MONEY :deu a túa compañía algún diñeiro ({CURRENCY})
|
||||
STR_NETWORK_GAVE_MONEY_AWAY :diches a {STRING} algún diñeiro ({CURRENCY})
|
||||
STR_NETWORK_CHAT_COMPANY :[Equipo] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_COMPANY :[Equipo] A {STRING}:
|
||||
STR_NETWORK_CHAT_CLIENT :[Privado] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_CLIENT :[Privado] A {STRING}:
|
||||
STR_NETWORK_CHAT_ALL :[Todos] {STRING}:
|
||||
STR_NETWORK_NAME_CHANGE :cambiou o seu nome por
|
||||
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} O servidor pechou a conexión
|
||||
STR_NETWORK_SERVER_REBOOT :{WHITE} O servidor estase a reiniciar...{}Espera por favor...
|
||||
|
||||
STR_NETWORK_SERVER :Servidor
|
||||
STR_NETWORK_CLIENT :Cliente
|
||||
@@ -1364,8 +1379,12 @@ STR_NETWORK_CLIENT :Cliente
|
||||
STR_NETWORK_CLIENTLIST_NONE :(ningún)
|
||||
STR_NETWORK_CLIENTLIST_KICK :Patear
|
||||
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar diñeiro
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Falar a todos
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Falar con compañía
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensaxe privada
|
||||
|
||||
|
||||
STR_NETWORK_SEND :{BLACK}Enviar
|
||||
|
||||
############ end network gui strings
|
||||
|
||||
@@ -1463,6 +1482,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Paso a nivel para estrada/ferrocarril
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Cidades
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -1647,7 +1667,7 @@ STR_305B_SIZE :{BLACK}Tama
|
||||
STR_305C_0 :{STATION} {STRINL 0x30D1}
|
||||
STR_305D_0 :{TINYFONT}{BLACK}{STATION} {STRINL 0x30D1}
|
||||
STR_305E_RAILROAD_STATION :Estación de ferrocarril
|
||||
STR_305F_AIRCRAFT_HANGAR :Hangar de avións
|
||||
STR_305F_AIRCRAFT_HANGAR :Hangar de aeronaves
|
||||
STR_3060_AIRPORT :Aeroporto
|
||||
STR_3061_TRUCK_LOADING_AREA :Área de carga de camións
|
||||
STR_3062_BUS_STATION :Estación de autobús
|
||||
@@ -1823,7 +1843,7 @@ STR_SV_UNNAMED :Sen Nome{SKIP}
|
||||
STR_SV_TRAIN_NAME :Tren {COMMA16}
|
||||
STR_SV_ROADVEH_NAME :Vehículo de estrada {COMMA16}
|
||||
STR_SV_SHIP_NAME :Barco {COMMA16}
|
||||
STR_SV_AIRCRAFT_NAME :Avión {COMMA16}
|
||||
STR_SV_AIRCRAFT_NAME :Aeronave {COMMA16}
|
||||
|
||||
STR_SV_STNAME :{STRING}
|
||||
STR_SV_STNAME_NORTH :{STRING} Norte
|
||||
@@ -1955,12 +1975,12 @@ STR_7011_CONSTRUCTION :{GOLD}Construccci
|
||||
STR_7012_NEW_VEHICLES :{GOLD}Novos Vehículos
|
||||
STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Mantemento dos Trens
|
||||
STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Mantemento dos Vehículos
|
||||
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Mantemendo dos Avións
|
||||
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Mantemendo das Aeronaves
|
||||
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Mantemento dos Barcos
|
||||
STR_7017_PROPERTY_MAINTENANCE :{GOLD}Mantemento das Propiedades
|
||||
STR_7018_TRAIN_INCOME :{GOLD}Ingresos dos Trens
|
||||
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Ingresos dos Vehículos
|
||||
STR_701A_AIRCRAFT_INCOME :{GOLD}Ingresos dos Avións
|
||||
STR_701A_AIRCRAFT_INCOME :{GOLD}Ingresos das Aeronaves
|
||||
STR_701B_SHIP_INCOME :{GOLD}Ingresos dos Barcos
|
||||
STR_701C_LOAN_INTEREST :{GOLD}Interese do Préstamo
|
||||
STR_701D_OTHER :{GOLD}Outros
|
||||
@@ -1998,8 +2018,8 @@ STR_703A_TRAIN :{WHITE}{COMMA16} tren
|
||||
STR_703B_TRAINS :{WHITE}{COMMA16} trens
|
||||
STR_703C_ROAD_VEHICLE :{WHITE}{COMMA16} vehículo de estrada
|
||||
STR_703D_ROAD_VEHICLES :{WHITE}{COMMA16} vehículos de estrada
|
||||
STR_703E_AIRCRAFT :{WHITE}{COMMA16} avión
|
||||
STR_703F_AIRCRAFT :{WHITE}{COMMA16} avións
|
||||
STR_703E_AIRCRAFT :{WHITE}Aeronave {COMMA16}
|
||||
STR_703F_AIRCRAFT :{WHITE}Aeronave {COMMA16}
|
||||
STR_7040_SHIP :{WHITE}{COMMA16} barco
|
||||
STR_7041_SHIPS :{WHITE}{COMMA16} barcos
|
||||
STR_7042_NONE :{WHITE}Ningún
|
||||
@@ -2049,9 +2069,13 @@ STR_706D_PRESIDENT :Presidente
|
||||
STR_706E_TYCOON :Magnate
|
||||
STR_706F_BUILD_HQ :{BLACK}Construír CX
|
||||
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Construír/ver cuartel xeral da compañía
|
||||
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Recontruí-lo cuartel xeral da compañía en calquer lugar cun coste do 1% do valor da compañía
|
||||
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non se pode construí-lo cuartel xeral...
|
||||
STR_7072_VIEW_HQ :{BLACK}Ve-lo CX
|
||||
STR_RELOCATE_HQ :{BLACK}Reposicionar CX
|
||||
STR_COMPANY_PASSWORD :{BLACK}Contrasinal
|
||||
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Protexe a atúa compañía cun contrasinal para evitar que usuarios non autorizados se unan
|
||||
STR_SET_COMPANY_PASSWORD :Establece o contrasinal da compañía
|
||||
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}¡Recesión Mundial!{}{}¡Os expertos en finanzas témense o peor a medida que a economía afúndese!
|
||||
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}¡Fin da Recesión!{}{}¡A mellora no comercio inspira confianza nas industrias a media que a economía reforzase!
|
||||
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Intercambiar entre fiestra grande/pequena
|
||||
@@ -2065,6 +2089,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Non se pode vender un 25% das acci
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% propiedade de {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% propiedade de {STRING}{} {COMMA16}% propiedade de {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} comprada por {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Esta compañía todavía non comercia con accións...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor)
|
||||
@@ -2327,7 +2352,7 @@ STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}Mensaxe dun fabricante de ve
|
||||
STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Rematamo-lo deseño dun/dunha nov@ {STRING} - ¿Interésache probar este vehículo en exclusiva durante un ano, para comproba-lo seu rendemento antes de facelo dispoñible para todos?
|
||||
STR_8102_RAILROAD_LOCOMOTIVE :locomotora de ferrocarril
|
||||
STR_8103_ROAD_VEHICLE :vehículo de estrada
|
||||
STR_8104_AIRCRAFT :avión
|
||||
STR_8104_AIRCRAFT :aeronave
|
||||
STR_8105_SHIP :barco
|
||||
STR_8106_MONORAIL_LOCOMOTIVE :locomotora de monoraíl
|
||||
STR_8107_MAGLEV_LOCOMOTIVE :locomotora de maglev
|
||||
@@ -2363,7 +2388,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} de {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}O tren {COMMA16} está a esperar no depósito
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Novos Vehículos
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{COMMA16}hp{}{BLACK}Coste mantemento: {GOLD}{CURRENCY}/ano{}{BLACK}Capacidade: {GOLD}{STRING}{}{BLACK}Deseñado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{COMMA32}hp{}{BLACK}Coste mantemento: {GOLD}{CURRENCY}/ano{}{BLACK}Capacidade: {GOLD}{STRING}{}{BLACK}Deseñado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Información
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}O tren é demasiado longo
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Os trens só se poden alterar cando estean parados nunha estación
|
||||
@@ -2590,15 +2615,16 @@ STR_GO_TO_SHIP_DEPOT :Ir
|
||||
SERVICE_AT_SHIP_DEPOT :Face-lo servicio no Depósito de Barcos de {TOWN}
|
||||
|
||||
##id 0xA000
|
||||
STR_A000_AIRPORTS :{WHITE}Aeroportos
|
||||
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nonse pode construí-lo aeroporto aí...
|
||||
STR_A002_AIRCRAFT_HANGAR :{WHITE}Nagar de Avións de {STATION}
|
||||
STR_A003_NEW_AIRCRAFT :{BLACK}Novo Avión
|
||||
STR_A002_AIRCRAFT_HANGAR :{WHITE}Hangar de Aeronaves de {STATION}
|
||||
STR_A003_NEW_AIRCRAFT :{BLACK}Nova Aeronave
|
||||
STR_A004_INFORMATION :{BLACK}Información
|
||||
STR_A005_NEW_AIRCRAFT :{WHITE}Novo Avión
|
||||
STR_A006_BUILD_AIRCRAFT :{BLACK}Construír Avión
|
||||
STR_A005_NEW_AIRCRAFT :{WHITE}Nova Aeronave
|
||||
STR_A006_BUILD_AIRCRAFT :{BLACK}Construír Aeronave
|
||||
STR_A007_COST_SPEED_CAPACITY_PASSENGERS :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Velocidade: {GOLD}{VELOCITY}{}{BLACK}Capacidade: {GOLD}{COMMA16} pasaxeiros, {COMMA16} sacos de correo{}{BLACK}Coste de Mantemento: {GOLD}{CURRENCY}/ano{}{BLACK}Deseñado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
|
||||
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Non se pode construí-lo avíon...
|
||||
STR_A009_AIRCRAFT :{WHITE}{STRING} - {COMMA16} Avión
|
||||
STR_A009_AIRCRAFT :{WHITE}{STRING} - {COMMA16} Aeronave
|
||||
STR_A00A :{WHITE}{STRING}
|
||||
STR_A00B_ORDERS :{WHITE}{STRING} (Ordes)
|
||||
STR_A00C_DETAILS :{WHITE}{STRING} (Detalles)
|
||||
@@ -2607,56 +2633,57 @@ STR_A00E_MAX_SPEED :{BLACK}Velocidade M
|
||||
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Beneficio este ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilidade: {LTBLUE}{COMMA8}% {BLACK}Roturas dende o último serivicio: {LTBLUE}{COMMA16}
|
||||
STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Construído: {LTBLUE}{NUMU16}{BLACK} Valor: {LTBLUE}{CURRENCY}
|
||||
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Non se pode envia-lo avión ó hangar...
|
||||
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Non se pode envia-la aeronave ó hangar...
|
||||
STR_HEADING_FOR_HANGAR :{LTBLUE}Diríxese ó hangar de {STATION}
|
||||
STR_HEADING_FOR_HANGAR_VEL :{LTBLUE}Diríxese ó hangar de {STATION}, {VELOCITY}
|
||||
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}O avión {COMMA16} está a esperar no hangar
|
||||
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Avión en camiño
|
||||
STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Non se pode parar/arrincar o avión...
|
||||
STR_A017_AIRCRAFT_IS_IN_FLIGHT :{WHITE}O avión esta voando
|
||||
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}A aeronave {COMMA16} está a esperar no hangar
|
||||
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Aeronave no camiño
|
||||
STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Non se pode parar/arrincar a aeronave...
|
||||
STR_A017_AIRCRAFT_IS_IN_FLIGHT :{WHITE}A aeronave esta voando
|
||||
STR_A018_MUST_BUILD_AIRPORT_FIRST :{WHITE}Debes construír un aeroporto primeiro
|
||||
STR_A019_CAPACITY :{BLACK}Capacidade: {LTBLUE}{STRING}, {STRING}
|
||||
STR_A01A_CAPACITY :{BLACK}Capacidade: {LTBLUE}{STRING}
|
||||
STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}O avión debe estar parado no hangar
|
||||
STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}Non se pode vende-lo avión...
|
||||
STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}A aeronave debe estar parada no hangar
|
||||
STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}Non se pode vende-la aeronave...
|
||||
STR_A01D_AIRPORT_CONSTRUCTION :Construcción de Aeroporto
|
||||
STR_A01E_BUILD_AIRPORT :{BLACK}Construír aeroporto
|
||||
STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Avións - pincha no avión para máis información
|
||||
STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Construír novo avión (necesitas un aeroporto con hangar)
|
||||
STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Avións - pincha no avión para máis información
|
||||
STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Construír novo avión
|
||||
STR_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Arrastra o avión aquí para vendelo
|
||||
STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Aeronaves - pincha na aeronave para máis información
|
||||
STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Construír nova aeronave (necesitas un aeroporto con hangar)
|
||||
STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Aeronaves - pincha na aeronave para máis información
|
||||
STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Construír nova aeronave
|
||||
STR_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Arrastra a aeronave aquí para vendela
|
||||
STR_A024_CENTER_MAIN_VIEW_ON_HANGAR :{BLACK}centra-la vista principal na situación do hangar
|
||||
STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Lista de selección de avións - pincha nun avión para máis información
|
||||
STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Construí-lo avión seleccionado
|
||||
STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Tarea actual do avión - pincha aquí para parar/arrincar o avión
|
||||
STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Lista de selección de aeronaves - pincha nunha aeronave para máis información
|
||||
STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Construí-la aeronave seleccionado
|
||||
STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Tarea actual da aeronave - pincha aquí para parar/arrincar a aeronave
|
||||
STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Mostra-las ordes do avíon
|
||||
STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Centra-la vista principal na situación do avión
|
||||
STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Envia-lo avión ó hangar
|
||||
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Mostra-los detalles do avión
|
||||
STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE :{BLACK}{BIGFONT}¡Novo avión dispoñible!
|
||||
STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Centra-la vista principal na situación da aeronave
|
||||
STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Envia-la aeronave ó hangar
|
||||
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Mostra-los detalles da aeronave
|
||||
STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE :{BLACK}{BIGFONT}¡Nova aeronave dispoñible!
|
||||
STR_A02D :{BLACK}{BIGFONT}{STRING}
|
||||
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Coste: {CURRENCY} Velocidade Máx.: {VELOCITY}{}Capacidade: {COMMA16} pasaxeiros, {COMMA16} sacos de correo{}Coste de Mantemento: {CURRENCY}/ano
|
||||
|
||||
STR_A030_NAME_AIRCRAFT :{WHITE}Renomear avión
|
||||
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Non se pode renomea-lo avión...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Renomear avión
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebración cidadá . . .{}¡Chega o primeiro avión a {STATION}!
|
||||
STR_A030_NAME_AIRCRAFT :{WHITE}Renomear aeronave
|
||||
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Non se pode renomea-la aeronave...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Renomear aeronave
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebración cidadá . . .{}¡Chega a primeira aeronave a {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Plane Crash!{}{COMMA16} die in fireball at {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}¡Accidente de Aeronave!¡A aeronave {} quedou sen combustible, hai {COMMA16} mortos na explosión!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinos:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Renomear
|
||||
STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Renomea-lo tipo de avión
|
||||
STR_A039_RENAME_AIRCRAFT_TYPE :{WHITE}Renomea-lo tipo de avión
|
||||
STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Non se pode renomea-lo tipo de avión...
|
||||
STR_A03B_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Reaxusta-lo avión para levar un tipo distinto de carga
|
||||
STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Renomea-lo tipo de aeronave
|
||||
STR_A039_RENAME_AIRCRAFT_TYPE :{WHITE}Renomea-lo tipo de aeronave
|
||||
STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Non se pode renomea-lo tipo de aeronave...
|
||||
STR_A03B_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Reaxusta-la aeronave para levar un tipo distinto de carga
|
||||
STR_A03C_REFIT :{WHITE}{STRING} (Reaxustar)
|
||||
STR_A03D_REFIT_AIRCRAFT :{BLACK}Reaxustar avión
|
||||
STR_A03D_REFIT_AIRCRAFT :{BLACK}Reaxustar aeronave
|
||||
STR_A03E_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Selecciona o tipo de carga que levará
|
||||
STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Reaxusta-lo avión para levar o tipo de carga seleccionada
|
||||
STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Reaxusta-la aeronave para levar o tipo de carga seleccionada
|
||||
STR_A040_SELECT_CARGO_TYPE_TO_CARRY :{GOLD}Selecciona o tipo de carga a levar:-
|
||||
STR_A041_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova capacidade: {GOLD}{STRING}{}{BLACK}Cose do reaxuste: {GOLD}{CURRENCY}
|
||||
STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}Non se pode reaxusta-lo avión...
|
||||
STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}Non se pode reaxusta-la aeronave...
|
||||
STR_A043_REFITTABLE :(reax.)
|
||||
STR_GO_TO_AIRPORT_HANGAR :Ir ó hangar de {STATION}
|
||||
SERVICE_AT_AIRPORT_HANGAR :Face-lo servicio no hangar de {STATION}
|
||||
@@ -2674,6 +2701,7 @@ STR_BRIBE_FAILED_2 :{WHITE}descuberto por un investigador rexional.
|
||||
STR_BUILD_DATE :{BLACK}construído: {LTBLUE}{DATE_LONG}
|
||||
STR_MULTIPLAYER_PAUSED :{WHITE}Xogo en pausa.{}Non se pode executa-lo comando
|
||||
|
||||
STR_PERFORMANCE_DETAIL :{WHITE}Punt. rendemento detallada
|
||||
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalle
|
||||
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
|
||||
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
|
||||
@@ -2691,16 +2719,55 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Di
|
||||
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Crédito:
|
||||
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total:
|
||||
############ End of order list
|
||||
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Número de vehículos; inclúe camións/buses, trens, navíos e aeronaves
|
||||
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Unidades de carga levadas nos últimos catro quartos
|
||||
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Número de tipos de carga levados no último cuarto
|
||||
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Amount of cash on hand
|
||||
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Valor do préstamo que ten a compañía
|
||||
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Puntos totais de puntos posibles
|
||||
|
||||
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Configuración Newgrf
|
||||
STR_NEWGRF_APPLY_CHANGES :{BLACK}Aplica-los cambios
|
||||
STR_NEWGRF_SET_PARAMETERS :{BLACK}Conf. parámetros
|
||||
STR_NEWGRF_TIP :{BLACK}Unha lista de tódolos sets Newgrf que tes instalados. Pincha nun set para cambia-la configuración
|
||||
STR_NEWGRF_FILENAME :{BLACK}Ficheiro:
|
||||
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
|
||||
|
||||
STR_CURRENCY_WINDOW :{WHITE}Moeda persoalizada
|
||||
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taxa de cambio: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
|
||||
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
|
||||
STR_CURRENCY_PREFIX :{LTBLUE}Prefixo:
|
||||
STR_CURRENCY_SUFFIX :{LTBLUE}Sufixo:
|
||||
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Cambiar a Euro: {ORANGE}{INT32}
|
||||
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Camiar a Euro: {ORANGE}nunca
|
||||
STR_CURRENCY_PREVIEW :{LTBLUE}Vista previa: {ORANGE}{CURRENCY}
|
||||
|
||||
STR_TRAIN :{BLACK}{TRAIN}
|
||||
STR_LORRY :{BLACK}{LORRY}
|
||||
STR_PLANE :{BLACK}{PLANE}
|
||||
STR_SHIP :{BLACK}{SHIP}
|
||||
|
||||
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Trens
|
||||
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Camións/Buses
|
||||
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aeronaves
|
||||
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Navíos
|
||||
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostrar tódolos vehículos de estrada que teñen esta estación nas súas ordes
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostrar tódolos avións que teñen esta estación nas súas ordes
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostrar tódolas aeronaves que teñen esta estación nas súas ordes
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostrar tódolos barcos que teñen esta estación nas súas ordes
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Reemplazar Vehículos
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplazar vehículos
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Comezar a Reemplazar Vehículos
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Non hai vehículos seleccionados
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Vehículos Raíl
|
||||
STR_MONORAIL_VEHICLES :Vehículos Monoraíl
|
||||
STR_MAGLEV_VEHICLES :Vehículos Maglev
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Kann dies nicht tun....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kann das Gebiet nicht räumen....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle Rechte vorbehalten
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD Version {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Original Design: Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafiken: Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Spezieller Dank gebührt:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Vorsignale und Semaphoren {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Grundlagen für Schienen auf Abhängen {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Schleusen Grafiken {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-Team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD-Team
|
||||
STR_TRANSLATED_BY :{BLACK} Übersetzer -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperial (Meilen)
|
||||
STR_013A_METRIC_KILOMETERS :Metrisch (Kilometer)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Das Wartungsintervall kann nicht ge
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Fenster schließen
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titelleiste verschieben um das Fenster zu bewegen
|
||||
STR_STICKY_BUTTON :{BLACK}Diese Fenster markieren, damit es nicht durch die
|
||||
STR_RESIZE_BUTTON :{BLACK}Klicken und Ziehen zum Größe ändern
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Gebäude usw. auf einem Planquadrat abreißen
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Land absenken
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Land anheben
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subventionen
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Allgemeine Nachrichten
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...zu weit vom vorherigen Bestimmungsort entfernt
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Die besten Firmen, die das Jahr 2050 erreichten{}({STRING} Level)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Beste Unternehmen, die {NUMU16} erreichten{}(Schwierigkeitsgrad {STRING})
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Firmentabelle in {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Geschäftsmann
|
||||
STR_0214_ENTREPRENEUR :Unternehmer
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
|
||||
STR_0217_MAGNATE :Magnat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon des Jahrhunderts
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} erreicht '{STRING}'-Status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} zu {STRING} erreichender '{STRING}' Status!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} erreicht '{STRING}' Status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} von {STRING} erreicht '{STRING}' Status!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf-Einstellungen
|
||||
STR_NEWGRF_SETTINGS2 :Newgrf-Einstellungen
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :ALLE Fenster schließen
|
||||
STR_CLOSE_ALL_WINDOWS2 :ALLE Fenster schließen
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Städtenamen anzeigen
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Städtenamen anzeigen
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnamen anzeigen
|
||||
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subventionen
|
||||
STR_02DE_MAP_OF_WORLD :Weltkarte
|
||||
STR_EXTRA_VIEW_PORT :Zusatzansicht
|
||||
STR_02DF_TOWN_DIRECTORY :Städteverzeichnis
|
||||
STR_TOWN_POPULATION :{BLACK}Weltbevölkerung: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Ansicht {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}In Zusatzansicht
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopieren der Position im Hauptfenster in diese Zusatzansicht
|
||||
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Neue Industrie finanzieren
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Neue Industrie finanzieren
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kann nur in Städten errichtet werden
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kann nur im Regenwaldgebiet errichtet werden
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kann nur im Wüstengebiet errichtet werden
|
||||
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Englisch
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Englisch
|
||||
STR_TOWNNAME_FRENCH :Französisch
|
||||
STR_TOWNNAME_GERMAN :Deutsch
|
||||
STR_TOWNNAME_AMERICAN :Amerikanisch
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :English (Zusätzlich)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Lateinamerikanisch
|
||||
STR_TOWNNAME_SILLY :Verrückt
|
||||
STR_TOWNNAME_SWEDISH :Schwedisch
|
||||
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Niederl
|
||||
STR_TOWNNAME_FINNISH :Finnisch
|
||||
STR_TOWNNAME_POLISH :Polnisch
|
||||
STR_TOWNNAME_SLOVAKISH :Slovakisch
|
||||
STR_TOWNNAME_NORWEGIAN :Norwegisch
|
||||
STR_TOWNNAME_HUNGARIAN :Ungarisch
|
||||
STR_TOWNNAME_AUSTRIAN :Österreichisch
|
||||
STR_TOWNNAME_ROMANIAN :Rumänisch
|
||||
STR_TOWNNAME_CZECH :Tschechisch
|
||||
STR_TOWNNAME_SWISS :Schweizerisch
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pfund ({POUNDSIGN})
|
||||
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Fahrzeug erneuern, wenn es vera
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Erneuere Fahrzeug {ORANGE}{STRING}{LTBLUE} Monate vor/nach Maximalalter
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimaler Kontostand für automatisches Erneuern: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Dauer der Fehlermeldungen: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Zeige die Einwohnerzahl der Stadt im Label: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Unsichtbare Bäume (bei transparenten Gebäuden): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Höhe der Schneegrenze: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximale Stationsgröße: {ORANGE}{STRING} {RED}Achtung: Große Werte verlangsamen das Spiel
|
||||
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Vorgegebener Wartungsintervall f
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Vorgegebener Wartungsintervall für Flugzeuge: {ORANGE}abgeschaltet
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Vorgegebener Wartungsintervall für Schiffe: {ORANGE}{STRING} Tage
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Vorgegebener Wartungsintervall für Schiffe: {ORANGE}abgeschaltet
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Wartung deaktivieren, wenn Pannen abgeschaltet: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farbige Nachrichten erscheinen ab: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Startdatum: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Spiel beenden: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Feinere Wirtschaft aktivieren (mehrere, kleinere Veränderungen)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Erlaube anteile an anderen Firmen zu kaufen
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Errichte Signale alle {ORANGE}{STRING} Felder beim Ziehen mit der Maus
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position der Haupttoolbar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Links
|
||||
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kann hier keine Schleuse bauen...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Schleusen bauen
|
||||
STR_LANDINFO_LOCK :Schleuse
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... Boje wird gebraucht!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Koordinaten: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kann den Teil des Bahnhofs nicht entfernen...
|
||||
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}W
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Umrüstung des Zuges auf die ausgewählte Frachtart
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kann den Zug nicht umrüsten...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Wartungsintervalle in Prozent: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Produktion ändern
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Willkommen bei der neuen KI. Erwarte Fehler. Falls du einen findest, mache einen Screenshot und berichte im Forum. Viel Spaß!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Achtung: Die neue KI ist noch im Alpha-Stadium. Derzeit funktionieren nur Straßenfahrzeuge.
|
||||
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Sprache: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Mapgröße: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Serverversion: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradresse: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server Adresse: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Aktuelles Datum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Passwort geschützt!
|
||||
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Protokollfehler: Die Verbindung musste
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Ihre Version entspricht nicht der Serverversion.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Falsches Passwort.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Der Server ist voll.
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE}Du bist von diesem Server verbannt
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Sie wurden vom Server gekickt.
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating ist auf diesem Server nicht erlaubt
|
||||
|
||||
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Bahn
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Städte
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kann 25% Anteil an dieser Firma nich
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% Eigentum von {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% Eigentum von {STRING}{} {COMMA16}% Eigentum von {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} wurde von {STRING} übernommen!
|
||||
STR_7080_PROTECTED :{WHITE}Dieses Unternehmen handelt noch nicht mit Anteilen...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Dampf)
|
||||
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} von {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Zug {COMMA16} wartet im Depot
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Neue Fahrzeuge
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{COMMA16}t{}{BLACK}Geschwindigk.: {GOLD}{VELOCITY}{BLACK} Leistung: {GOLD}{COMMA16} PS {}{BLACK}Betriebskosten: {GOLD}{CURRENCY}/Jahr{}{BLACK}Kapazität: {GOLD}{STRING}{}{BLACK}Entwurf: {GOLD}{NUMU16}{BLACK} Lebensdauer: {GOLD}{COMMA16} Jahre{}{BLACK}Max. Zuverlässigkeit: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{COMMA16}t{}{BLACK}Geschwindigk.: {GOLD}{VELOCITY}{BLACK} Leistung: {GOLD}{COMMA32} PS{}{BLACK}Betriebskosten: {GOLD}{CURRENCY}/Jahr{}{BLACK}Kapazität: {GOLD}{STRING}{}{BLACK}Entwurf: {GOLD}{NUMU16}{BLACK} Lebensdauer: {GOLD}{COMMA16} Jahre{}{BLACK}Max. Zuverlässigkeit: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Information
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Zug zu lang
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Züge können nur verändert werden, wenn sie im Depot halten
|
||||
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kann Flugzeugname nicht vergeben...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Flugzeugname
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Erstes Flugzeug landet auf {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Flugzeugabsturz!{}{COMMA16} sterben in einem Feuerball auf {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Flugzeugabsturz!{}Dem Flugzeug ging der Treibstoff aus, {COMMA16} sterben in einem Feuerball!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Bestimmungsort:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Umbenennen
|
||||
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Zeige alle Z
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Zeige alle Fahrzeuge, die diese Station anfahren
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Zeige alle Flugzeuge, die diesen Flughafen anfliegen
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Zeige alle Schiffe, die diesen Hafen ansteuern
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Ersetze Fahrzeuge
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Ersetze Fahrzeuge
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Fahrzeugersetzung aktivieren
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Fahrzeugersetzung deaktivieren
|
||||
STR_NOT_REPLACING :{BLACK}Keine Ersetzung
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Kein Fahrzeug gewählt
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Wähle das zu ersetzende Fahrzeug
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Wähle den Fahrzeugtyp, der an Stelle des links gewählten Fahrzeugs verwendet werden soll
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Drücke diesen Button, wenn das Fahrzeug auf der linken Seite nicht ersetzt werden soll
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Drücke diesen Button, wenn das Fahrzeug auf der linken Seite durch das auf der rechten Seite gewählte ersetzt werden soll
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Wähle einen Schienentyp für den Loks ersetzt werden sollen
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Hier wird angezeigt, gegen welches Fahrzeug das auf der linken Seite gewählte ersetzt wird
|
||||
STR_REPLACE_HELP :{BLACK}Dieses Feature ermöglicht es, einen Fahrzeugtyp auszuwählen und ihn durch einen anderen ersetzen zu lassen. Dies geschieht automatisch, wenn das Fahrzeug regulär das Depot besucht.
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Eisenbahn
|
||||
STR_MONORAIL_VEHICLES :Monorail
|
||||
STR_MAGLEV_VEHICLES :Magnetschwebebahn
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Nem teheted ezt...
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Nem tisztíthatod meg a területet...
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright {COPYRIGHT} 1995 Chris Sawyer, Minden jog fenntartva
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Eredeti tervek: Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafika: Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Külön köszönet nekik:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Elõszignálok és szemaforok {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Lejtõs sinek alapzata {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Csatorna/Zsilip grafika {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Az OpenTTD csapat
|
||||
STR_TRANSLATED_BY :{BLACK} Fordítók -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Mérföld
|
||||
STR_013A_METRIC_KILOMETERS :Kilométer
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nem v
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Az ablak bezárása
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Az ablak címsora - húzd ezt a mozgatáshoz
|
||||
STR_STICKY_BUTTON :{BLACK}Ez az ablak akkor se legyen becsukható ha az összes ablakot bezárjuk (Delete gomb)
|
||||
STR_RESIZE_BUTTON :{BLACK}Fogd és húzd hogy átméretezd az ablakot
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Tárgyak lerombolása egy mezõrõl
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Egy pont lesüllyesztése
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Egy pont megemelése
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}
|
||||
STR_020E_SUBSIDIES :{YELLOW}Támogatások
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Általános információk
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...túl távol van az elõzõ céltól
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}A legjobb cégek, akik elérték 2050-et{}({STRING} szinten)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Legjobb cégek melyek elérték a {NUMU16}{}({STRING} Szintet)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Cégdicsõség tábla {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Üzletember
|
||||
STR_0214_ENTREPRENEUR :Vállalkozó
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :T
|
||||
STR_0217_MAGNATE :Mágnás
|
||||
STR_0218_MOGUL :Fejes
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Az évszázad iparmágnása
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} '{STRING}' rangot ért el!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING}, a közismert {STRING} cég elnöke '{STRING}' rangot ért el!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} elérte a '{STRING}' rangot!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} - {STRING} elérte a '{STRING}' rangot!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf be
|
||||
STR_NEWGRF_SETTINGS2 :Newgrf beállítások
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Összes ablak bezárása
|
||||
STR_CLOSE_ALL_WINDOWS2 :Összes ablak bezárása
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Városnevek mutatása
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Városnevek mutatása
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Állomásnevek mutatása
|
||||
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :T
|
||||
STR_02DE_MAP_OF_WORLD :Világtérkép
|
||||
STR_EXTRA_VIEW_PORT :Extra látkép
|
||||
STR_02DF_TOWN_DIRECTORY :Városlista
|
||||
STR_TOWN_POPULATION :{BLACK}Világnépesség: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}{COMMA16}. látkép
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Látkép aktualizálása
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Beállítja a globális látkép pozicióját erre a látképre
|
||||
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Új gazdasági épület
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...csak városban építhetõ
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...csak esõerdõben építhetõ
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...csak sivatagban építhetõ
|
||||
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Angol
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Angol (Eredeti)
|
||||
STR_TOWNNAME_FRENCH :Francia
|
||||
STR_TOWNNAME_GERMAN :Német
|
||||
STR_TOWNNAME_AMERICAN :Amerikai
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Angol (További)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latin-Amerikai
|
||||
STR_TOWNNAME_SILLY :Komolytalan
|
||||
STR_TOWNNAME_SWEDISH :Svéd
|
||||
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Holland
|
||||
STR_TOWNNAME_FINNISH :Finn
|
||||
STR_TOWNNAME_POLISH :Lengyel
|
||||
STR_TOWNNAME_SLOVAKISH :Szlovák
|
||||
STR_TOWNNAME_NORWEGIAN :Norvég
|
||||
STR_TOWNNAME_HUNGARIAN :Magyar
|
||||
STR_TOWNNAME_AUSTRIAN :Osztrák
|
||||
STR_TOWNNAME_ROMANIAN :Romániai
|
||||
STR_TOWNNAME_CZECH :Cseh
|
||||
STR_TOWNNAME_SWISS :Svájci
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Font ({POUNDSIGN})
|
||||
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automat
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Automatán felújítja a jármûvet {ORANGE}{STRING}{LTBLUE} hónappal a max életkora elõtt/után
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Automata megújításhoz szükséges minimális pénz: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Hibaüzenetek megjelenítési ideje: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Mutassa a lakosságot a feliratban: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Láthatatlan fák (átlátszó épületekkel): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Hóhatár magassága: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Állomások legnagyobb kiterjedése: {ORANGE}{STRING} {RED}Figyelem: magas érték lelassítja a játékot
|
||||
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Alap
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Alap szervízelési idõ a repülõkre: {ORANGE}kikapcsolva
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Alapértelmezett szervízelés hajóknak: {ORANGE}{STRING} naponta
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Alap szervízelési idõ a hajókra: {ORANGE}kikapcsolva
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Ne legyen szervízelés ha lerobbanások sincsenek: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Színes újságcikkek megjelenése: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Játék induló dátuma: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Játék befejezésének az éve: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Egyenletes gazdaság (több, kisebb változás)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Másik cégekbõl részvényt lehet vásárolni
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Amikor megragadom helyezzen lámpákat minden {ORANGE}{STRING}. mezõre
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}A fõ eszközsor helye: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Balra
|
||||
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Nem lehet zsilipet
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Zsilip építése
|
||||
STR_LANDINFO_LOCK :Zsilip
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... a bóját használják!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Koordináták: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
|
||||
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}V
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}A vonat átalakítása a kijelölt áru szállítására
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nem alakíthatod át a vonatot...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Szervízintervallumok százalékban: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Termelés megváltoztatása
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Üdv, ez itt az új, fejlesztés alatt álló MI. Elõfordulhatnak gondok, problémák. Ha belefutsz egybe, kérlek készíts képernyõmentést küld be a fórumra. Jó játékot!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Figyelem: az új MI fejlesztés alatt áll! Jelenleg csak a teherautók és a buszok mûködnek!
|
||||
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Nyelv: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tájtípus: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}A pálya nagysága: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Szerver verzió: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}A szerver címe: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}A szerver címe: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Kezdési dátum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Jelenlegi dátum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Jelszóval védve!
|
||||
@@ -1317,7 +1324,7 @@ STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Regisztr
|
||||
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Játékinfó lekérése..
|
||||
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Céginfó lekérése..
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} kliens velünk szemben
|
||||
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} kliensre várunk, hogy befejezze
|
||||
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kilobájt lett eddig letöltve
|
||||
|
||||
STR_NETWORK_DISCONNECT :{BLACK}Lebontás
|
||||
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Protokoll-hib
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} A te gépeden lévõ és a szerveren lévõ programnak nem egyezik meg a verziója.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Rossz jelszó.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} A szerver tele van
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Ki vagy tiltva errõl a szerverrõl
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Ki lettél rúgva a szerverrõl
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Ez a szerver nem engedi a csalást
|
||||
|
||||
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Városok
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -1896,7 +1905,7 @@ STR_6806_COMPETITOR_START_TIME :{LTBLUE}Ellenfelek kezd
|
||||
STR_6807_NO_OF_TOWNS :{LTBLUE}Városok száma: {ORANGE}{STRING}
|
||||
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Gazdasági épületek száma: {ORANGE}{STRING}
|
||||
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Kezdeti kölcsön: {ORANGE}{CURRENCY}
|
||||
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Kezdõ kamatláb: {ORANGE}{COMMA16}%
|
||||
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Éves kamatláb: {ORANGE}{COMMA16}%
|
||||
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Jármû fenntartási költség: {ORANGE}{STRING}
|
||||
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Ellenfelek építkezési sebessége: {ORANGE}{STRING}
|
||||
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Ellenfelek intelligenciája: {ORANGE}{STRING}
|
||||
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Nem adhatsz el 25%-ot ebb
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% {STRING} tulajdona)
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% {STRING} tulajdona{} {COMMA16}% {STRING} tulajdona)
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} céget felvásárolta {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Ez a cég egyelõre még nem rendelkezik részvényekkel...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Gõz)
|
||||
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}{COMMA16}. vonat a jármûtelepen várakozik
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Új jármûvek
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Ár: {GOLD}{CURRENCY}{BLACK} Súly: {GOLD}{COMMA16}t{}{BLACK}Sebesség:{GOLD}{VELOCITY}{BLACK} Teljesítmény:{GOLD}{COMMA16}le{}{BLACK}Mûködtetési költség: {GOLD}{CURRENCY}/év{}{BLACK}Kapacitás: {GOLD}{STRING}{}{BLACK}Tervezés éve: {GOLD}{NUMU16}{BLACK} Élettartam: {GOLD}{COMMA16} év{}{BLACK}Legnagyobb megbízhatóság: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Ár: {GOLD}{CURRENCY}{BLACK} Súly: {GOLD}{COMMA16}t{}{BLACK}Sebesség: {GOLD}{VELOCITY}{BLACK} Teljesítmény: {GOLD}{COMMA32}lóerõ{}{BLACK}Üzemeltetési Költség: {GOLD}{CURRENCY}/év{}{BLACK}Kapacitás: {GOLD}{STRING}{}{BLACK}Tervezés éve: {GOLD}{NUMU16}{BLACK} Élettartam: {GOLD}{COMMA16} év{}{BLACK}Legnagyobb megbízhatóság: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Információk
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Túl hosszú a vonat
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Csak a jármûtelepen álló vonatokat lehet megváltoztatni
|
||||
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nem nevezheted
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Repülõgép átnevezése
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Az emberek ünnepelnek . . .{}Megérkezett az elsõ repülõgép {STATION} állomásra!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Lezuhant egy repülõgép!{}{COMMA16} ember halt meg a zuhanás után {STATION} állomáson
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Repülõ baleset!{}A repülõnek elfogyott az üzemanyaga, {COMMA16} ember halt meg a zuhanásban!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Célpontok:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Átnevez
|
||||
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Kilist
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Kilistázza az összes közúti jármûvet, aminek a menetrendjében szerepel ez az állomás
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Kilistázza az összes repülõt, aminek a menetrendjében szerepel ez az állomás
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Kilistázza az összes hajót, aminek a menetrendjében szerepel ez az állomás
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Jármûvek lecserélése
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Jármûcsere
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Jármûcsere elkezdése
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Jármûcsere befejezése
|
||||
STR_NOT_REPLACING :{BLACK}Nem cserélendõ
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nincs kiválasztva jármû
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Válaszd ki mely mozdonyokat cseréljük
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}A bal oldalon kiválasztott mozdonyok ilyen típusuakra lesznek lecserélve
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Nyomd meg ezt a gombot, ha nem akarod kicserélni a mozdonyt a bal oldalon kiválasztottakra
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Nyomd meg ezt a gombot hogy a bal oldalon kiválasztott mozdonyokat lecseréld a jobb oldalon kiválasztottra
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Válaszd ki a cserélendõ vasúttípust
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Megmutatja, hogy melyik bal oldali mozdonyt akarod kicserélni
|
||||
STR_REPLACE_HELP :{BLACK}Ez az opció lehetõve teszi, hogy kiválassz mozdonytípust és lecseréld másfajtára. Ez aztán automatikusan fog megtörténni, amikor a jármû karbantartásra a depóba megy
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Normál Vasutak
|
||||
STR_MONORAIL_VEHICLES :Egysínû Vasutak
|
||||
STR_MAGLEV_VEHICLES :Maglev Vasutak
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -25,7 +25,7 @@ STR_0013_LIVESTOCK :Nautgripir
|
||||
STR_0014_GOODS :Vörur
|
||||
STR_0015_GRAIN :Korn
|
||||
STR_0016_WOOD :Timbur
|
||||
STR_0017_IRON_ORE :Járn
|
||||
STR_0017_IRON_ORE :Járngrýti
|
||||
STR_0018_STEEL :Stál
|
||||
STR_0019_VALUABLES :Verðmæti
|
||||
STR_001A_COPPER_ORE :Kopar
|
||||
@@ -42,7 +42,7 @@ STR_0024_SUGAR :Sykur
|
||||
STR_0025_TOYS :Leikföng
|
||||
STR_0026_CANDY :Sælgæti
|
||||
STR_0027_COLA :Kóladrykkir
|
||||
STR_0028_COTTON_CANDY :Kandís
|
||||
STR_0028_COTTON_CANDY :Sykurfrauð
|
||||
STR_0029_BUBBLES :Kúlur
|
||||
STR_002A_TOFFEE :Toffý
|
||||
STR_002B_BATTERIES :Rafhlöður
|
||||
@@ -57,7 +57,7 @@ STR_0033_LIVESTOCK :Nautgripur
|
||||
STR_0034_GOODS :Vörur
|
||||
STR_0035_GRAIN :Korn
|
||||
STR_0036_WOOD :Timbur
|
||||
STR_0037_IRON_ORE :Járn
|
||||
STR_0037_IRON_ORE :Járngrýti
|
||||
STR_0038_STEEL :Stál
|
||||
STR_0039_VALUABLES :Verðmæti
|
||||
STR_003A_COPPER_ORE :Kopar
|
||||
@@ -74,7 +74,7 @@ STR_0044_SUGAR :Sykur
|
||||
STR_0045_TOY :Leikfang
|
||||
STR_0046_CANDY :Sælgæti
|
||||
STR_0047_COLA :Kóladrykkur
|
||||
STR_0048_COTTON_CANDY :Kandís
|
||||
STR_0048_COTTON_CANDY :Sykurfrauð
|
||||
STR_0049_BUBBLE :Kúla
|
||||
STR_004A_TOFFEE :Toffý
|
||||
STR_004B_BATTERY :Rafhlaða
|
||||
@@ -89,7 +89,7 @@ STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} nautgripur
|
||||
STR_0054_CRATE_OF_GOODS :{COMMA16} kassi af vörum
|
||||
STR_0055_TON_OF_GRAIN :{COMMA16} tonn af korni
|
||||
STR_0056_TON_OF_WOOD :{COMMA16} tonn af timbri
|
||||
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonn af járni
|
||||
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonn af járngrýti
|
||||
STR_0058_TON_OF_STEEL :{COMMA16} tonn af stáli
|
||||
STR_0059_BAG_OF_VALUABLES :{COMMA16} poki af verðmætum
|
||||
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonn af kopar
|
||||
@@ -106,7 +106,7 @@ STR_0064_TON_OF_SUGAR :{COMMA16} tonn af sykri
|
||||
STR_0065_TOY :{COMMA16} leikfang
|
||||
STR_0066_BAG_OF_CANDY :{COMMA16} poki af sælgæti
|
||||
STR_0067_OF_COLA :{VOLUME} af kóladrykk
|
||||
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonn af kandís
|
||||
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonn af sykurfrauði
|
||||
STR_0069_BUBBLE :{COMMA16} kúla
|
||||
STR_006A_TON_OF_TOFFEE :{COMMA16} tonn af toffý
|
||||
STR_006B_BATTERY :{COMMA16} rafhlaða
|
||||
@@ -121,7 +121,7 @@ STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} nautgripir
|
||||
STR_0074_CRATES_OF_GOODS :{COMMA16} kassar af vörum
|
||||
STR_0075_TONS_OF_GRAIN :{COMMA16} tonn af korni
|
||||
STR_0076_TONS_OF_WOOD :{COMMA16} tonn af timbri
|
||||
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonn af járni
|
||||
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonn af járngrýti
|
||||
STR_0078_TONS_OF_STEEL :{COMMA16} tonn af stáli
|
||||
STR_0079_BAGS_OF_VALUABLES :{COMMA16} pokar af verðmætum
|
||||
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonn af kopar
|
||||
@@ -138,7 +138,7 @@ STR_0084_TONS_OF_SUGAR :{COMMA16} tonn af sykri
|
||||
STR_0085_TOYS :{COMMA16} leikföng
|
||||
STR_0086_BAGS_OF_CANDY :{COMMA16} pokar af sælgæti
|
||||
STR_0087_OF_COLA :{VOLUME} af kóla
|
||||
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonn af kandís
|
||||
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonn af sykurfrauði
|
||||
STR_0089_BUBBLES :{COMMA16} kúlur
|
||||
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonn af toffý
|
||||
STR_008B_BATTERIES :{COMMA16} rafhlöður
|
||||
@@ -186,11 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Get ekki gert
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Get ekki hreinsað þetta svæði....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Upphaflegur höfundarréttur {COPYRIGHT} 1995 Chris Sawyer, Öll réttindi áskilin
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD útgáfa {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Upphafleg hönnun: Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Upphafleg grafík: Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Sérstakar þakkir:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Forljós og lestaskilti {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD hópurinn
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD hópurinn
|
||||
STR_TRANSLATED_BY :{BLACK} Þýðendur -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -259,15 +256,15 @@ STR_0104_STEEL_MILL :{BLACK}{TINYFONT}St
|
||||
STR_0105_BANK :{BLACK}{TINYFONT}Banki
|
||||
STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Pappírsverksmiðja
|
||||
STR_0107_GOLD_MINE :{BLACK}{TINYFONT}Gullnáma
|
||||
STR_0108_FOOD_PROCESSING_PLANT :{BLACK}{TINYFONT}Matvælaverksmiðja
|
||||
STR_0108_FOOD_PROCESSING_PLANT :{BLACK}{TINYFONT}Matvinnslufyrirtæki
|
||||
STR_0109_DIAMOND_MINE :{BLACK}{TINYFONT}Demantanáma
|
||||
STR_010A_COPPER_ORE_MINE :{BLACK}{TINYFONT}Koparnáma
|
||||
STR_010B_FRUIT_PLANTATION :{BLACK}{TINYFONT}Ávaxtaplantekra
|
||||
STR_010C_RUBBER_PLANTATION :{BLACK}{TINYFONT}Gúmmíplantekra
|
||||
STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Vatnsbirgir
|
||||
STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Vatnsbirgi
|
||||
STR_010E_WATER_TOWER :{BLACK}{TINYFONT}Vatnsturn
|
||||
STR_010F_LUMBER_MILL :{BLACK}{TINYFONT}Timburverksmiðja
|
||||
STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}Kandísskógur
|
||||
STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}Sykurfrauðsskógur
|
||||
STR_0111_CANDY_FACTORY :{BLACK}{TINYFONT}Sælgætisverksmiðja
|
||||
STR_0112_BATTERY_FARM :{BLACK}{TINYFONT}Rafhlöðubýli
|
||||
STR_0113_COLA_WELLS :{BLACK}{TINYFONT}Kólalindir
|
||||
@@ -279,7 +276,7 @@ STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}K
|
||||
STR_0119_TOFFEE_QUARRY :{BLACK}{TINYFONT}Toffýæð
|
||||
STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}Sykurnáma
|
||||
STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}Lestarstöð
|
||||
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Trukkaskýli
|
||||
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Vörubílastöð
|
||||
STR_011D_BUS_STATION :{BLACK}{TINYFONT}Strætóstoppistöð
|
||||
STR_011E_AIRPORT_HELIPORT :{BLACK}{TINYFONT}Flugvöllur/Þyrlupallur
|
||||
STR_011F_DOCK :{BLACK}{TINYFONT}Bryggja
|
||||
@@ -309,6 +306,7 @@ STR_0135_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Amerískt (mílur)
|
||||
STR_013A_METRIC_KILOMETERS :Metrakerfið (kílómetrar)
|
||||
@@ -352,6 +350,7 @@ STR_015F_QUIT :H
|
||||
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Ertu viss um að þú viljir hætta í þessum leik ?
|
||||
STR_0161_QUIT_GAME :{WHITE}Hætta leik
|
||||
STR_SORT_ORDER_TIP :{BLACK}Velja uppröðun (minnkandi/stækkandi)
|
||||
STR_SORT_CRITERIA_TIP :{BLACK}Velja uppröðun
|
||||
SRT_SORT_BY :{BLACK}Flokka eftir
|
||||
|
||||
STR_SORT_BY_POPULATION :{BLACK}Fólksfjöldi
|
||||
@@ -408,7 +407,7 @@ STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Leggja lestartein
|
||||
STR_0182_BUILD_ROADS :{BLACK}Leggja veg
|
||||
STR_0183_BUILD_SHIP_DOCKS :{BLACK}Byggja höfn
|
||||
STR_0184_BUILD_AIRPORTS :{BLACK}Byggja flugvöll
|
||||
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Planta trjám, setja skilti o.s.frv.
|
||||
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Gróðursetja tré, setja skilti o.s.frv.
|
||||
STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Landssvæðisupplýsingar
|
||||
STR_0187_OPTIONS :{BLACK}Stillingar
|
||||
STR_0188 :{BLACK}{SMALLUPARROW}
|
||||
@@ -417,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Get ekki breytt vi
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Loka glugga
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titill glugga - dragðu þetta til að færa gluggann
|
||||
STR_STICKY_BUTTON :{BLACK}Merkja þennan glugga sem ólokanlegan fyrir
|
||||
STR_RESIZE_BUTTON :{BLACK}Ýttu og dragðu til að breyta stærð gluggans
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Eyða byggingum o.s.frv. á lóðarreiti
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Lækka horn af landssvæði
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Lyfta horni af landssvæði
|
||||
@@ -436,14 +436,14 @@ STR_019A_YEARS :{COMMA16}
|
||||
STR_019B_YEARS :{RED}{COMMA16} ár ({COMMA16})
|
||||
############ range for service numbers ends
|
||||
|
||||
STR_019C_ROAD_VEHICLE :Götufarartæki
|
||||
STR_019C_ROAD_VEHICLE :Bifreið
|
||||
STR_019D_AIRCRAFT :Flugvél
|
||||
STR_019E_SHIP :Skip
|
||||
STR_019F_TRAIN :Lest
|
||||
STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA16} er að eldast
|
||||
STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA16} er að eldast um of
|
||||
STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA16} er að eldast um of og þarfnast nauðsynlega endurnýjunar
|
||||
STR_01A3_LAND_AREA_INFORMATION :{WHITE}Landssvæðisupplýsingar
|
||||
STR_01A3_LAND_AREA_INFORMATION :{WHITE}Landsvæðisupplýsingar
|
||||
STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Kostnaður við hreinsun: {LTBLUE}N/A
|
||||
STR_01A5_COST_TO_CLEAR :{BLACK}Kostnaður við hreinsun: {LTBLUE}{CURRENCY}
|
||||
STR_01A6_N_A :Ekki til
|
||||
@@ -535,7 +535,7 @@ STR_01F1_SAVE :{TINYFONT}{BLACK}Vista
|
||||
STR_01F2_CURRENT_PROGRAM_OF_MUSIC :{BLACK}Núverandi lagalisti
|
||||
STR_01F3_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Velja 'öll lög' listann
|
||||
STR_01F4_SELECT_OLD_STYLE_MUSIC :{BLACK}Velja 'gamli stíll' listann
|
||||
STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Velja 'nýji stíll' listann
|
||||
STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Velja 'nýi stíll' listann
|
||||
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Velja 'Sérval 1' (valið af notanda) listann
|
||||
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Velja 'Sérval 2' (valið af notanda) listann
|
||||
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Hreinsa núverandi lista (aðeins Sérval1 eða Sérval2)
|
||||
@@ -564,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Breyting
|
||||
STR_020E_SUBSIDIES :{YELLOW}Samstarfssamningar
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Almennar upplýsingar
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...of langt frá fyrrverandi stað
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Topp fyrirtæki sem störfuðu til ársins 2050{}({STRING} Metorðastig)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Efstu fyrirtæki sem náðu {NUMU16}{}({STRING} stig)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Sambandstafla fyrirtækis í {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Viðskiptamaður
|
||||
STR_0214_ENTREPRENEUR :Athafnamaður
|
||||
@@ -573,9 +574,10 @@ STR_0216_CAPITALIST :Kap
|
||||
STR_0217_MAGNATE :Áhrifamaður
|
||||
STR_0218_MOGUL :Stórlax
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Viðskiptajöfur aldarinnar
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} öðlast '{STRING}' titil!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} úr {STRING} öðlast '{STRING}' titil!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} öðlast '{STRING}' titil!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} úr {STRING} öðlast '{STRING}' titil!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -623,18 +625,18 @@ STR_0248_FARM :{BLACK}B
|
||||
STR_0249_IRON_ORE_MINE :{BLACK}Járnnáma
|
||||
STR_024A_OIL_WELLS :{BLACK}Olíulindir
|
||||
STR_024B_BANK :{BLACK}Banki
|
||||
STR_024C_PAPER_MILL :{BLACK}Pappírsvinnsla
|
||||
STR_024C_PAPER_MILL :{BLACK}Pappírsverksmiðja
|
||||
STR_024D_FOOD_PROCESSING_PLANT :{BLACK}Matvinnslufyrirtæki
|
||||
STR_024E_PRINTING_WORKS :{BLACK}Prentsmiðja
|
||||
STR_024F_GOLD_MINE :{BLACK}Gullnáma
|
||||
STR_0250_LUMBER_MILL :{BLACK}Timburverksmiðja
|
||||
STR_0251_FRUIT_PLANTATION :{BLACK}Ávaxtaekra
|
||||
STR_0251_FRUIT_PLANTATION :{BLACK}Ávaxtaplantekra
|
||||
STR_0252_RUBBER_PLANTATION :{BLACK}Gúmmíplantekra
|
||||
STR_0253_WATER_SUPPLY :{BLACK}Vatnsbirgir
|
||||
STR_0253_WATER_SUPPLY :{BLACK}Vatnsbirgi
|
||||
STR_0254_WATER_TOWER :{BLACK}Vatnsturn
|
||||
STR_0255_DIAMOND_MINE :{BLACK}Demantanáma
|
||||
STR_0256_COPPER_ORE_MINE :{BLACK}Koparnáma
|
||||
STR_0257_COTTON_CANDY_FOREST :{BLACK}Kandísskógur
|
||||
STR_0257_COTTON_CANDY_FOREST :{BLACK}Sykurfrauðsskógur
|
||||
STR_0258_CANDY_FACTORY :{BLACK}Sælgætisverksmiðja
|
||||
STR_0259_BATTERY_FARM :{BLACK}Rafhlöðubýli
|
||||
STR_025A_COLA_WELLS :{BLACK}Kólalindir
|
||||
@@ -647,29 +649,29 @@ STR_0260_TOFFEE_QUARRY :{BLACK}Toff
|
||||
STR_0261_SUGAR_MINE :{BLACK}Sykurnáma
|
||||
STR_0262_CONSTRUCT_COAL_MINE :{BLACK}Byggja Kolanámu
|
||||
STR_0263_CONSTRUCT_POWER_STATION :{BLACK}Byggja Rafmagnsstöð
|
||||
STR_0264_CONSTRUCT_SAWMILL :{BLACK}Reisa timburverksmiðju
|
||||
STR_0265_PLANT_FOREST :{BLACK}Planta Skógi
|
||||
STR_0264_CONSTRUCT_SAWMILL :{BLACK}Reisa Timburverksmiðju
|
||||
STR_0265_PLANT_FOREST :{BLACK}Gróðursetja Skóg
|
||||
STR_0266_CONSTRUCT_OIL_REFINERY :{BLACK}Byggja Olíuhreinsunarstöð
|
||||
STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}Byggja Olíuborpall (aðeins hægt að byggja við brúnir kortsins)
|
||||
STR_0268_CONSTRUCT_FACTORY :{BLACK}Byggja Verksmiðju
|
||||
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Byggja Stálbræðslu
|
||||
STR_026A_CONSTRUCT_FARM :{BLACK}Byggja Býli
|
||||
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}Byggja Járnnámu
|
||||
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}Grafa Járnnámu
|
||||
STR_026C_CONSTRUCT_OIL_WELLS :{BLACK}Byggja Olíulindir
|
||||
STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Byggja Banka (aðeins hægt að byggja í bæjum með fleiri en 1200 íbúum)
|
||||
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Byggja Pappírsvinnslu
|
||||
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}Reisa matvinnslufyrirtæki
|
||||
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Reisa pappírsverksmiðju
|
||||
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}Reisa Matvinnslufyrirtæki
|
||||
STR_0270_CONSTRUCT_PRINTING_WORKS :{BLACK}Byggja Prentsmiðju
|
||||
STR_0271_CONSTRUCT_GOLD_MINE :{BLACK}Byggja Gullnámu
|
||||
STR_0272_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Byggja Banka (aðeins hægt að byggja í bæjum)
|
||||
STR_0273_CONSTRUCT_LUMBER_MILL_TO :{BLACK}Reisa timburverksmiðju (til að fella regnskóga og framleiða timbur)
|
||||
STR_0274_PLANT_FRUIT_PLANTATION :{BLACK}Planta Ávaxtaekrum
|
||||
STR_0275_PLANT_RUBBER_PLANTATION :{BLACK}Planta Gúmmíplantekrum
|
||||
STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}Reisa vatnsbirgi
|
||||
STR_0274_PLANT_FRUIT_PLANTATION :{BLACK}Gróðursetja Ávexti
|
||||
STR_0275_PLANT_RUBBER_PLANTATION :{BLACK}Gróðursetja Gúmmí
|
||||
STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}Reisa Vatnsbirgi
|
||||
STR_0277_CONSTRUCT_WATER_TOWER_CAN :{BLACK}Byggja Vatnsturn (aðeins hægt að byggja í bæjum)
|
||||
STR_0278_CONSTRUCT_DIAMOND_MINE :{BLACK}Byggja Demantanámu
|
||||
STR_0279_CONSTRUCT_COPPER_ORE_MINE :{BLACK}Byggja Koparnámu
|
||||
STR_027A_PLANT_COTTON_CANDY_FOREST :{BLACK}Planta Kandísskógi
|
||||
STR_027A_PLANT_COTTON_CANDY_FOREST :{BLACK}Gróðursetja sykurfrauðsskóg
|
||||
STR_027B_CONSTRUCT_CANDY_FACTORY :{BLACK}Byggja Sælgætisverksmiðju
|
||||
STR_027C_CONSTRUCT_BATTERY_FARM :{BLACK}Byggja Rafhlöðubýli
|
||||
STR_027D_CONSTRUCT_COLA_WELLS :{BLACK}Byggja Kólalindir
|
||||
@@ -683,27 +685,27 @@ STR_0284_CONSTRUCT_SUGAR_MINE :{BLACK}Byggja Sykurn
|
||||
STR_0285_CAN_T_BUILD_HERE :{WHITE}Get ekki byggt {STRING} hérna...
|
||||
STR_0286_MUST_BUILD_TOWN_FIRST :{WHITE}...verður að byggja bæ first
|
||||
STR_0287_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...aðeins eitt stykki á hvern bæ
|
||||
STR_0288_PLANT_TREES :{BLACK}Planta trjám
|
||||
STR_0288_PLANT_TREES :{BLACK}Gróðursetja tré
|
||||
STR_0289_PLACE_SIGN :{BLACK}Setja skilti
|
||||
STR_028A_RANDOM_TREES :{BLACK}Tré af handahófi
|
||||
STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}Planta trjám af handahófi á landið
|
||||
STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}Gróðursetja tré af handahófi á landið
|
||||
STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Setja klettasvæði á landið
|
||||
STR_028D_PLACE_LIGHTHOUSE :{BLACK}Setja vita
|
||||
STR_028E_PLACE_TRANSMITTER :{BLACK}Setja sendi
|
||||
STR_028F_DEFINE_DESERT_AREA :{BLACK}Skilgreina eyðimerkursvæði
|
||||
STR_0290_DELETE :{BLACK}Eyða
|
||||
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Eyða þessum bæ algjörlega
|
||||
STR_0292_SAVE_SCENARIO :Vista land
|
||||
STR_0293_LOAD_SCENARIO :Opna land
|
||||
STR_0294_QUIT_EDITOR :Hætta í landgerð
|
||||
STR_0292_SAVE_SCENARIO :Vista kort
|
||||
STR_0293_LOAD_SCENARIO :Opna kort
|
||||
STR_0294_QUIT_EDITOR :Hætta í kortagerð
|
||||
STR_0295 :
|
||||
STR_0296_QUIT :Hætta í OpenTTD
|
||||
STR_0297_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Vista land, opna land, hætta í landgerð, hætta í OpenTTD
|
||||
STR_0298_LOAD_SCENARIO :{WHITE}Opna land
|
||||
STR_0299_SAVE_SCENARIO :{WHITE}Vista land
|
||||
STR_029A_PLAY_SCENARIO :{BLACK}Spila land
|
||||
STR_029B_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Ertu viss um að þú viljir hætta í þessu landi ?
|
||||
STR_029C_QUIT_EDITOR :{WHITE}Hætta í landgerð
|
||||
STR_0297_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Vista kort, opna kort, hætta í kortagerð, hætta í OpenTTD
|
||||
STR_0298_LOAD_SCENARIO :{WHITE}Opna kort
|
||||
STR_0299_SAVE_SCENARIO :{WHITE}Vista kort
|
||||
STR_029A_PLAY_SCENARIO :{BLACK}Spila kort
|
||||
STR_029B_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Ertu viss um að þú viljir hætta í þessu korti ?
|
||||
STR_029C_QUIT_EDITOR :{WHITE}Hætta í kortagerð
|
||||
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...aðeins hægt að byggja í bæjum með fleiri en 1200 íbúum
|
||||
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Færa byrjunardagsetninguna aftur um 1 ár
|
||||
STR_029F_MOVE_THE_STARTING_DATE :{BLACK}Færa byrjunardagsetninguna fram um 1 ár
|
||||
@@ -739,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf stillingar
|
||||
STR_NEWGRF_SETTINGS2 :Newgrf stillingar
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Loka ÖLLUM gluggum
|
||||
STR_CLOSE_ALL_WINDOWS2 :Loka ÖLLUM gluggum
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Bæjarnöfn sýnd
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Bæjarnöfn sýnd
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stöðvarnöfn sýnd
|
||||
@@ -760,8 +760,8 @@ STR_02D4_TRANSPARENT_BUILDINGS :{SETX 12}Gegns
|
||||
############ range for menu starts
|
||||
STR_02D5_LAND_BLOCK_INFO :Landssvæðisupplýsingar
|
||||
STR_02D6 :
|
||||
STR_02D7_SCREENSHOT_CTRL_S :Skjáskot (Ctrl-S)
|
||||
STR_02D8_GIANT_SCREENSHOT_CTRL_G :Risa skjáskot (Ctrl-G)
|
||||
STR_02D7_SCREENSHOT_CTRL_S :Skjámynd (Ctrl-S)
|
||||
STR_02D8_GIANT_SCREENSHOT_CTRL_G :Risa skjámynd (Ctrl-G)
|
||||
STR_02D9_ABOUT_OPENTTD :Um 'OpenTTD'
|
||||
############ range ends here
|
||||
|
||||
@@ -772,6 +772,7 @@ STR_02DD_SUBSIDIES :Samstarfssamningar
|
||||
STR_02DE_MAP_OF_WORLD :Heimskort
|
||||
STR_EXTRA_VIEW_PORT :Auka sjónarhorn
|
||||
STR_02DF_TOWN_DIRECTORY :Bæjarmappa
|
||||
STR_TOWN_POPULATION :{BLACK}Heildaríbúafjöldi: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Sjónarhorn {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Afrita í sjónarhorn
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Afrita aðalsjónarhornið í sjónarhornsrammann
|
||||
@@ -784,7 +785,7 @@ STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Val
|
||||
STR_02E3_DISTANCE_UNITS :{BLACK}Fjarlægðareining
|
||||
STR_02E4 :{BLACK}{SKIP}{SKIP}{STRING}
|
||||
STR_02E5_DISTANCE_UNITS_SELECTION :{BLACK}Val á fjarlægðareiningu
|
||||
STR_02E6_ROAD_VEHICLES :{BLACK}Götufarartæki
|
||||
STR_02E6_ROAD_VEHICLES :{BLACK}Bifreið
|
||||
STR_02E7 :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_02E8_SELECT_SIDE_OF_ROAD_FOR :{BLACK}Veldu vegarhelming fyrir bifreiðir
|
||||
STR_02E9_DRIVE_ON_LEFT :Keyra vinstra megin
|
||||
@@ -808,7 +809,7 @@ STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Velja einspilunarleik
|
||||
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Velja 2-8 leikmanna fjölspilunarleik
|
||||
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Sýna Leikjastillingar
|
||||
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Sýna Erfiðleikastig
|
||||
STR_0303_START_A_NEW_GAME_USING :{BLACK}Byrja nýjan leik, í eigin landi
|
||||
STR_0303_START_A_NEW_GAME_USING :{BLACK}Byrja nýjan leik, í sérvöldu korti
|
||||
STR_0304_QUIT :{BLACK}Hætta í OpenTTD
|
||||
STR_0305_QUIT_OPENTTD :{BLACK}Hætta í OpenTTD
|
||||
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Sjá sýnikennslu/leiðbeiningar
|
||||
@@ -821,36 +822,37 @@ STR_0311_SELECT_TOYLAND_LANDSCAPE :{BLACK}Velja leikfangalandslag
|
||||
STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fjármagna byggingu nýs iðnaðars
|
||||
|
||||
############ range for menu starts
|
||||
STR_INDUSTRY_DIR :Iðnaðalisti
|
||||
STR_0313_FUND_NEW_INDUSTRY :Fjármagna nýjan iðnað
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fjármagna nýjan iðnað
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...aðeins hægt að byggja í bæjum
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...aðeins hægt að byggja á regnskógasvæðum
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...aðeins hægt að byggja í eyðimörk
|
||||
STR_0319_PAUSED :{YELLOW}* * STOPPAÐUR * *
|
||||
|
||||
STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjáskot vistað sem '{STRING}'
|
||||
STR_031C_SCREENSHOT_FAILED :{WHITE}Skjáskot mistókst!
|
||||
STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjámynd vistuð sem '{STRING}'
|
||||
STR_031C_SCREENSHOT_FAILED :{WHITE}Ekki tókst að taka skjámynd!
|
||||
|
||||
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Kaupa landssvæði til notkunar síðar
|
||||
STR_032A_1_ROAD_VEHICLE_SERVICE :{BLACK}1: Götufarartkjaþjónusta
|
||||
STR_032A_1_ROAD_VEHICLE_SERVICE :{BLACK}1: Bifreiðarþjónusta
|
||||
STR_032B_2_RAILROAD_SERVICE :{BLACK}2: Lestarþjónusta
|
||||
STR_032C_3_AIR_SERVICE :{BLACK}3: Loftþjónusta
|
||||
STR_032D_4_SHIP_SERVICE :{BLACK}4: Skipaþjónusta
|
||||
STR_032E_5_RAILROAD_SERVICE_ADVANCED :{BLACK}5: Lestarþjónusta (sérhæft)
|
||||
STR_032F_AUTOSAVE :{RED}AUTOSAVE
|
||||
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Velja 'Ezy Street' listann
|
||||
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Velja 'Ezy gata' listann
|
||||
|
||||
STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Ensk
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Ensk
|
||||
STR_TOWNNAME_FRENCH :Frönsk
|
||||
STR_TOWNNAME_GERMAN :Þýsk
|
||||
STR_TOWNNAME_AMERICAN :Amerísk
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Enska (Aukaleg)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latin-Amerísk
|
||||
STR_TOWNNAME_SILLY :Fáránleg
|
||||
STR_TOWNNAME_SWEDISH :Sænsk
|
||||
@@ -858,14 +860,16 @@ STR_TOWNNAME_DUTCH :Hollensk
|
||||
STR_TOWNNAME_FINNISH :Finnsk
|
||||
STR_TOWNNAME_POLISH :Pólsk
|
||||
STR_TOWNNAME_SLOVAKISH :Slóvakísk
|
||||
STR_TOWNNAME_NORWEGIAN :Norska
|
||||
STR_TOWNNAME_HUNGARIAN :Ungversk
|
||||
STR_TOWNNAME_AUSTRIAN :Austurrísk
|
||||
STR_TOWNNAME_ROMANIAN :Rúmensk
|
||||
STR_TOWNNAME_CZECH :Tékknesk
|
||||
STR_TOWNNAME_SWISS :Svissneska
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pund ({POUNDSIGN})
|
||||
STR_CURR_USD :Dalir ($)
|
||||
STR_CURR_USD :Bandaríkjadalir ($)
|
||||
STR_CURR_EUR :Evra (¤)
|
||||
STR_CURR_YEN :Jen ({YENSIGN})
|
||||
STR_CURR_ATS :Austurrískur skildingur (ATS)
|
||||
@@ -884,7 +888,7 @@ STR_CURR_ITL :
|
||||
STR_CURR_NLG :Hollensk Gyllini (NLG)
|
||||
STR_CURR_NOK :Norsk króna (NOK)
|
||||
STR_CURR_PLN :Pólsk Zloty (PLN)
|
||||
STR_CURR_ROL :Rúmensk leu (Lei)
|
||||
STR_CURR_ROL :Rúmensk Leu (Lei)
|
||||
STR_CURR_RUR :Rússnesk Rúbla (rur)
|
||||
STR_CURR_SEK :Sænsk Króna (SEK)
|
||||
|
||||
@@ -901,9 +905,9 @@ STR_OPTIONS_RES :{BLACK}Skj
|
||||
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_OPTIONS_RES_TIP :{BLACK}Veldu skjáupplausn
|
||||
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Form skjáskota
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Form skjámynda
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Veldu form skjáskota
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Veldu form skjámynda
|
||||
|
||||
STR_AUTOSAVE_1_MONTH :Í hverjum mánuði
|
||||
STR_AUTOSAVE_FAILED :{WHITE}Sjálfvirk vistun mistókst
|
||||
@@ -914,7 +918,7 @@ STR_MONTH_MAR :Mars
|
||||
STR_MONTH_APR :Apríl
|
||||
STR_MONTH_MAY :Maí
|
||||
STR_MONTH_JUN :Júní
|
||||
STR_MONTH_JUL :Júlý
|
||||
STR_MONTH_JUL :Júlí
|
||||
STR_MONTH_AUG :Ágúst
|
||||
STR_MONTH_SEP :September
|
||||
STR_MONTH_OCT :Október
|
||||
@@ -927,7 +931,7 @@ STR_NO_ORDERS :{LTBLUE}Engar skipanir
|
||||
STR_NO_ORDERS_VEL :{LTBLUE}Engar skipanir, {VELOCITY}
|
||||
|
||||
STR_PASSENGERS :farþegar
|
||||
STR_BAGS :töskur
|
||||
STR_BAGS :pokar
|
||||
STR_TONS :tonn
|
||||
STR_LITERS :lítrar
|
||||
STR_ITEMS :hlutir
|
||||
@@ -976,11 +980,13 @@ STR_CONFIG_PATCHES_OFF :Nei
|
||||
STR_CONFIG_PATCHES_ON :Já
|
||||
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Sýna hraða farartækis í upplýsingaslá: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Leyfilegt að byggja í halla og á strönd: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Raunverulegri stærð svæðis sem stöðvar ná yfir: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Leyfa meiri eyðingu vega, brúa, gangna o.s.frv. í eigu bæjar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Leyfa byggingu mjög langra lesta: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Raunveruleg stöðvun lesta: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Raunveruleg hröðun lesta: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Sameina lestarstöðvar sem byggðar eru samsíða: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Yfirgefa lestarstöð þegar einhver farmur er fullur, ef kveikt er á 'fullhlaða': {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Nota endurbættan algóriþma við hleðslu: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Verðbólga: {ORANGE}{STRING}
|
||||
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}
|
||||
@@ -991,14 +997,15 @@ STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}M
|
||||
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Sýna alltaf fulla dagsetningu í upplýsingaslá: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Sýna umferðarljós akstursmegin: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Show finances window at the end of the year: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Götufarartæki fara í biðraðir(með stórvægilegum aukaverkunum): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatch samhæfð meðhöndlun stansleysu: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Bifreiðir fara í biðraðir (með stórvægilegum aukaverkunum): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Færa sjónarhorn þegar músin nálgast brún gluggans: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Leyfilegt að múta bæjaryfirvöldum: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_DEPOT_FINDING :{LTBLUE}Lestar finna ný skýli: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Órétthyrndar lestarstöðvar leyfðar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_TRAIN_PATHFIND :{LTBLUE}Nýr algrímur fyrir leiðarfund lesta: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Leyfa ætíð litla flugvelli: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Alltaf leyfa litla flugvelli: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Lest týnist ef hún er aðgerðalaus í: {ORANGE}{STRING} daga
|
||||
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Lest týnist ef hún er aðgerðalaus í: {ORANGE}óvirkt
|
||||
@@ -1012,13 +1019,14 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Uppf
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Uppfæra farartæki sjálfkrafa {ORANGE}{STRING}{LTBLUE} mánuðum fyrir/eftir hámarksaldur þess
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Lægsta upphæð peninga sem þörf er á fyrir sjálfvirka uppfæringu: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Birtingartími villuskilaboða: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Sýna íbúafjölda í bæjarmerki: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Ósýnileg tré (með gagnsæjum byggingum): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Hæð snjólínu: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Dreyfing stöðva mest: {ORANGE}{STRING} {RED}Ath.: Há stilling hægir á leiknum
|
||||
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Skoða þyrlur sjálfvirkt á þyrlupalli: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Lestir á leikmann mest: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Birfreiðir á 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}
|
||||
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Skip á leikmann mest: {ORANGE}{STRING}
|
||||
|
||||
@@ -1029,23 +1037,28 @@ STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}
|
||||
|
||||
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Virkja nýja gervigreind (alfa): {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Venjuleg bið milli skoðana á lestum: {ORANGE}{STRING} dagar/%
|
||||
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Venjuleg bið milli skoðana á lestum: {ORANGE}óvirkt
|
||||
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Venjuleg bið milli skoðana á bílum: {ORANGE}{STRING} dagar/%
|
||||
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Venjuleg bið milli skoðana á bílum: {ORANGE}óvrikt
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Venjuleg bið milli skoðana á flugvélum: {ORANGE}{STRING} dagar/%
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Venjuleg bið milli skoðana á flugvélum: {ORANGE}óvrikt
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Venjuleg bið milli skoðana á skipum: {ORANGE}{STRING} dagar/%
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Venjuleg bið milli skoðana á skipum: {ORANGE}óvirkt
|
||||
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Bið milli skoðana á lestum: {ORANGE}{STRING} dagar/%
|
||||
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Bið milli skoðana á lestum: {ORANGE}óvirkt
|
||||
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Bið milli skoðana á bílum: {ORANGE}{STRING} dagar/%
|
||||
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Bið milli skoðana á bílum: {ORANGE}óvrikt
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Bið milli skoðana á flugvélum: {ORANGE}{STRING} dagar/%
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Bið milli skoðana á flugvélum: {ORANGE}óvrikt
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Bið milli skoðana á skipum: {ORANGE}{STRING} dagar/%
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Bið milli skoðana á skipum: {ORANGE}óvirkt
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Hætta skoðunum þegar bilanir eru afvirktar: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Fréttir birtast í lit: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Upphafsár: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Enda leik árið: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Virkja jafnan efnahag (fleiri og minni breytingar)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Leyfa hlutabréfakaup í öðrum fyrirtækjum
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Þegar dregið er, setja skilti á: {ORANGE}{STRING} hvern reit
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Staðsetning tækjasláar: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vinstri
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Miðjað
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Hægri
|
||||
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Gluggar smella saman við: {ORANGE}{STRING} punkta radíus
|
||||
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Gluggar smella: {ORANGE}ekki saman
|
||||
|
||||
STR_CONFIG_PATCHES_GUI :{BLACK}Viðmót
|
||||
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Bygging
|
||||
@@ -1059,6 +1072,7 @@ STR_CONFIG_PATCHES_INT32 :{INT32}
|
||||
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Breyta gildi stillingar
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Einhver eða öll bil milli skoðana hér fyrir neðan eru ósamhæfanleg við valdar stillingar! 5-90% og 30-800 dagar er leyfilegt
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Temprað landslag
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Heimskautalandslag
|
||||
@@ -1067,11 +1081,11 @@ STR_TOYLAND_LANDSCAPE :Leikfangalandslag
|
||||
|
||||
STR_CHEATS :{WHITE}Svindl
|
||||
STR_CHEATS_TIP :{BLACK}Valreitur segir til um ef þú hefur notað þetta svindl áður
|
||||
STR_CHEATS_WARNING :{BLACK}Aðvörun! Þú ert í þann mund að svíkja samkeppendur þína. Hafðu í huga að svoleiðs svívirðing mun ætíð höfð í minnum.
|
||||
STR_CHEATS_WARNING :{BLACK}Aðvörun! Þú ert í þann mund að svíkja samkeppendur þína. Hafðu í huga að svoleiðis svívirðing mun ætíð höfð í minnum.
|
||||
STR_CHEAT_MONEY :{LTBLUE}Auka pening um {CURRENCY64}
|
||||
STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Spila sem leikmaður: {ORANGE}{COMMA16}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Töfrajarðýta (eyða iðnaði og óeyðanlegu): {ORANGE}{STRING}
|
||||
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Göng meiga skerast: {ORANGE}{STRING}
|
||||
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Göng mega skerast: {ORANGE}{STRING}
|
||||
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Byggja í bið: {ORANGE}{STRING}
|
||||
STR_CHEAT_NO_JETCRASH :{LTBLUE}Þotur brotlenda ekki (oft) á litlum flugvöllum: {ORANGE} {STRING}
|
||||
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Skipta um loftslag: {ORANGE} {STRING}
|
||||
@@ -1107,8 +1121,8 @@ STR_NO_TOWN_IN_SCENARIO :{WHITE}...
|
||||
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Ertu viss um að þú viljir búa til tilviljanakennt landslag?
|
||||
STR_MANY_RANDOM_TOWNS :{BLACK}Búa til marga bæi
|
||||
STR_RANDOM_TOWNS_TIP :{BLACK}Þekja landið með bæjum
|
||||
STR_MANY_RANDOM_INDUSTRIES :{BLACK}Marga tilviljanakennda iðnaði
|
||||
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Þekja kortið mörgum tilviljanakenndum iðnöðum
|
||||
STR_MANY_RANDOM_INDUSTRIES :{BLACK}Búa til marga iðnaði
|
||||
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Þekja kortið mörgum handahófskenndum iðnöðum
|
||||
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Get ekki búið til iðnað...
|
||||
|
||||
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Opna landslags verkfæraslána til að hækka/lækka land, gróðursetja tré o.s.frv.
|
||||
@@ -1117,7 +1131,7 @@ STR_LEVEL_LAND_TOOLTIP :{BLACK}Jafna land
|
||||
|
||||
|
||||
STR_TREES_RANDOM_TYPE :{BLACK}Tré af handahófskenndri gerð
|
||||
STR_TREES_RANDOM_TYPE_TIP :{BLACK}Planta trjám af handahófskenndri gerð
|
||||
STR_TREES_RANDOM_TYPE_TIP :{BLACK}Gróðursetja tré af handahófskenndri gerð
|
||||
|
||||
STR_CANT_BUILD_CANALS :{WHITE}Ekki hægt að grafa skipaskurð hér...
|
||||
STR_BUILD_CANALS_TIP :{BLACK}Grafa skipaskurð
|
||||
@@ -1127,10 +1141,12 @@ STR_CANT_BUILD_LOCKS :{WHITE}Ekki h
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Grafa skruðgátt
|
||||
STR_LANDINFO_LOCK :Skurðgátt
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... bauja í notkun!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Hnit: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Get ekki fjarlægt hluta af stöð...
|
||||
STR_CANT_CONVERT_RAIL :{WHITE}Get ekki breytt lestarteiniCan't convert railtype here...
|
||||
STR_CANT_CONVERT_RAIL :{WHITE}Get ekki breytt lestarteini...
|
||||
STR_CONVERT_RAIL_TIP :{BLACK}Breyta/Uppfæra gerð af lestarteini
|
||||
|
||||
STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP :{BLACK}Dragðu eimreið hingað til að selja alla lestina
|
||||
@@ -1144,25 +1160,25 @@ STR_MESSAGE_HISTORY_TIP :{BLACK}Listi yfir n
|
||||
STR_MESSAGES_DISABLE_ALL :{BLACK}Óvirkja allt
|
||||
STR_MESSAGES_ENABLE_ALL :{BLACK}Virkja allt
|
||||
|
||||
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Grafa kolanámu
|
||||
STR_CONSTRUCT_FOREST_TIP :{BLACK}Gróðursetja skóg
|
||||
STR_CONSTRUCT_OIL_RIG_TIP :{BLACK}Reisa olíuborpall
|
||||
STR_CONSTRUCT_FARM_TIP :{BLACK}Koma á fót bóndabýli
|
||||
STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Grafa koparnámu
|
||||
STR_CONSTRUCT_OIL_WELLS_TIP :{BLACK}Bora eftir olíu
|
||||
STR_CONSTRUCT_GOLD_MINE_TIP :{BLACK}Grafa gullnámu
|
||||
STR_CONSTRUCT_DIAMOND_MINE_TIP :{BLACK}Grafa demantanámu
|
||||
STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Grafa járnnámu
|
||||
STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Rækta ávaxtaplantekru
|
||||
STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Rækta gúmmíplantekru
|
||||
STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Koma á fót vatnsbirgi
|
||||
STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Planta sykurfrauðsskógi
|
||||
STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Koma á fót rafhlöðubýli
|
||||
STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}Bora eftir gosi
|
||||
STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Grafa plastbrunna
|
||||
STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Reisa kúluframleiðslu
|
||||
STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Grafa karamellunámu
|
||||
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Grafa sykurnámu
|
||||
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Grafa Kolanámu
|
||||
STR_CONSTRUCT_FOREST_TIP :{BLACK}Gróðursetja Skóg
|
||||
STR_CONSTRUCT_OIL_RIG_TIP :{BLACK}Reisa Olíuborpall
|
||||
STR_CONSTRUCT_FARM_TIP :{BLACK}Koma á fót Bóndabýli
|
||||
STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Grafa Koparnámu
|
||||
STR_CONSTRUCT_OIL_WELLS_TIP :{BLACK}Bora eftir Olíu
|
||||
STR_CONSTRUCT_GOLD_MINE_TIP :{BLACK}Grafa Gullnámu
|
||||
STR_CONSTRUCT_DIAMOND_MINE_TIP :{BLACK}Grafa Demantanámu
|
||||
STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Grafa Járnnámu
|
||||
STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Rækta Ávaxtaplantekru
|
||||
STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Rækta Gúmmíplantekru
|
||||
STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Koma á fót Vatnsbirgi
|
||||
STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Gróðursetja Sykurfrauðsskóg
|
||||
STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Koma á fót Rafhlöðubýli
|
||||
STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}Bora eftir kóla
|
||||
STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Grafa Plastbrunna
|
||||
STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Reisa Kúluframleiðslu
|
||||
STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Grafa Karamellunámu
|
||||
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Grafa Sykurnámu
|
||||
|
||||
STR_INDUSTRYDIR_CAPTION :{WHITE}Iðnaðir
|
||||
STR_INDUSTRYDIR_ITEM :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}){YELLOW} ({COMMA16}% flutt)
|
||||
@@ -1178,7 +1194,9 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Veldu hvernig farm lestin flytur
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Breyta lest til að flytja valinn varning
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Get ekki breytt lest...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Bil milli skoðana er í hundraðshlutum: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Breyta framleiðslu
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Velkomin í nýju gervigreindina, verk í vinnslu. Þú skalt búast við vandamálum og taktu skjámynd þegar þau koma upp og sendi á póstlistann. Njóttu!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Ath.: nýja gervigreindin er ennþá alfa! Í augnablikinu virka aðeins flutningabílar og strætisvagnar!
|
||||
|
||||
############ network gui strings
|
||||
@@ -1188,7 +1206,7 @@ STR_NETWORK_MULTIPLAYER :{WHITE}Fj
|
||||
STR_NETWORK_PLAYER_NAME :{BLACK}Nafn leikmanns:
|
||||
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Þetta er nafnið sem aðrir leikmenn munu þekkja þig undir
|
||||
STR_NETWORK_CONNECTION :{BLACK}Tenging:
|
||||
STR_NETWORK_CONNECTION_TIP :{BLACK}Veldu milli alnetleiks eða staðarnetleiks
|
||||
STR_NETWORK_CONNECTION_TIP :{BLACK}Veldu milli internetleiks eða staðarnetleiks
|
||||
|
||||
STR_NETWORK_START_SERVER :{BLACK}Hefja þjón
|
||||
STR_NETWORK_START_SERVER_TIP :{BLACK}Hefja eigin þjón
|
||||
@@ -1213,7 +1231,7 @@ STR_NETWORK_CLIENTS :{SILVER}Notendur: {WHITE}{COMMA8} / {COMMA8}
|
||||
STR_NETWORK_LANGUAGE :{SILVER}Tungumál: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Stærð: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Útgáfa þjóns: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Veffang þjóns: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Veffang þjóns: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Upphafsdagsetning: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Núverandi dagsetning: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Varið með lykilorði!
|
||||
@@ -1229,7 +1247,7 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Hefja n
|
||||
STR_NETWORK_NEW_GAME_NAME :{BLACK}Nafn leiks:
|
||||
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Nafn leiksins mun vera sýnilegt öðrum leikmönnum í fjölspilunarvalmyndinni
|
||||
STR_NETWORK_SET_PASSWORD :{BLACK}Veldu lykilorð
|
||||
STR_NETWORK_PASSWORD_TIP :{BLACK}Verndaðu leikinn þinn með lykilorði ef þú vilt ekki að aðrir tengist honum
|
||||
STR_NETWORK_PASSWORD_TIP :{BLACK}Verndaðu leikinn þinn með lykilorði ef þú vilt ekki að óboðnir tengist honum
|
||||
STR_NETWORK_SELECT_MAP :{BLACK}Veldu kort:
|
||||
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Hvaða kort viltu spila?
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Hámarksfjöldi notenda:
|
||||
@@ -1253,7 +1271,7 @@ STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Tungum
|
||||
STR_NETWORK_LANGUAGE_TIP :{BLACK}Aðrir notendur munu vita hvaða tungumál er talað á þjóninum
|
||||
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_START_GAME :{BLACK}Hefja leik
|
||||
STR_NETWORK_START_GAME_TIP :{BLACK}Hefja nýjan netleik í korti eða landslagi sem valið er tilviljanakennt
|
||||
STR_NETWORK_START_GAME_TIP :{BLACK}Hefja nýjan netleik í sérvöldu korti eða landslagi af handahófi
|
||||
STR_NETWORK_LOAD_GAME :{BLACK}Hlaða leik
|
||||
STR_NETWORK_LOAD_GAME_TIP :{BLACK}Hefja aftur vistaðan fjölspilunarleik (vertu viss um að tengjast sem réttur leikmaður)
|
||||
STR_NETWORK_LOAD_SCENARIO :{BLACK}Opna landslag
|
||||
@@ -1315,7 +1333,7 @@ STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Fyrirtæki er varið. Sláðu inn lykilorð
|
||||
STR_NETWORK_CLIENT_LIST :{WHITE}Listi yfir leikmenn
|
||||
|
||||
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Enginn netbúnaður fannst eða of flókið án ENABLE_NETWORK
|
||||
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Enginn netbúnaður fannst eða vistþýtt án ENABLE_NETWORK
|
||||
STR_NETWORK_ERR_NOSERVER :{WHITE} Fann enga netleiki
|
||||
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Þjóninn svaraði ekki fyrirspurninni
|
||||
STR_NETWORK_ERR_DESYNC :{WHITE} Samstilling netleiks mistókst.
|
||||
@@ -1324,21 +1342,25 @@ STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Gat ekki hla
|
||||
STR_NETWORK_ERR_SERVER_START :{WHITE} Gat ekki ræst þjón
|
||||
STR_NETWORK_ERR_CLIENT_START :{WHITE} Gat ekki tengst
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE} Tenging #{NUMU16} fjaraði út.
|
||||
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Villa varð í samskiptum og tengingu var lokað
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Rangt lykilorð
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Þjónninn er fullur
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Þú ert bannaður/bönnuð á þessum þjóni
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Þér var hent út úr leiknum
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Svindl er ekki leyft á þessum þjóni
|
||||
|
||||
STR_NETWORK_ERR_LEFT :hefur hætt í leiknum
|
||||
############ Leave those lines in this order!!
|
||||
STR_NETWORK_ERR_CLIENT_GENERAL :almenn villa
|
||||
STR_NETWORK_ERR_CLIENT_DESYNC :samstillingar villa
|
||||
STR_NETWORK_ERR_CLIENT_DESYNC :samstillingarvilla
|
||||
STR_NETWORK_ERR_CLIENT_SAVEGAME :gat ekki opnað kort
|
||||
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :tenging týndist
|
||||
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :tenging rofnaði
|
||||
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :samskiptavilla
|
||||
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Ekki leyfilegt
|
||||
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :tók á móti undarlegum pakka
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :röng útgáfa
|
||||
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :nafn nú þegar í notkun
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :rangt leikja lykilorð
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :rangt leikjalykilorð
|
||||
STR_NETWORK_ERR_CLIENT_KICKED :hent út af þjón
|
||||
STR_NETWORK_ERR_CLIENT_CHEATER :reyndi að svindla
|
||||
############ End of leave-in-this-order
|
||||
@@ -1390,7 +1412,7 @@ STR_0810_DESERT :Ey
|
||||
|
||||
##id 0x1000
|
||||
STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Landssvæði hallar í ranga átt
|
||||
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ömögulegt lestarteinasamstæða
|
||||
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ómöguleg lestarteinasamstæða
|
||||
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Framkvæmdin myndi skemma göng
|
||||
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Nú þegar við sjávarmál
|
||||
STR_1004_TOO_HIGH :{WHITE}Of hátt
|
||||
@@ -1461,7 +1483,8 @@ STR_1817_ROAD_VEHICLE_DEPOT :Bifrei
|
||||
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Vega/lestar gatnamót
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Bæjir
|
||||
STR_2000_TOWNS :{WHITE}Bæir
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -1474,7 +1497,7 @@ STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} b
|
||||
STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Bæjarnöfn - ýttu á nafn til að færa sjónarhorn að viðkomandi bæ
|
||||
STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Færa sjónarhorn á staðsetningu bæjar
|
||||
STR_200C_CHANGE_TOWN_NAME :{BLACK}Breyta nafni bæjar
|
||||
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Farðegar síðasta mánuð: {ORANGE}{COMMA16}{BLACK} hámark: {ORANGE}{COMMA16}
|
||||
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Farþegar síðasta mánuð: {ORANGE}{COMMA16}{BLACK} hámark: {ORANGE}{COMMA16}
|
||||
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Póstur síðasta mánuð: {ORANGE}{COMMA16}{BLACK} hámark: {ORANGE}{COMMA16}
|
||||
STR_200F_TALL_OFFICE_BLOCK :Há skrifstofubygging
|
||||
STR_2010_OFFICE_BLOCK :Skrifstofubygging
|
||||
@@ -1490,7 +1513,7 @@ STR_2019_OFFICE_BLOCK :Skrifstofubygging
|
||||
STR_201A_SHOPS_AND_OFFICES :Verslanir og skrifstofur
|
||||
STR_201B_MODERN_OFFICE_BUILDING :Nútímaleg skrifstofubygging
|
||||
STR_201C_WAREHOUSE :Vöruskemma
|
||||
STR_201D_OFFICE_BLOCK :OFFICE_BLOCK
|
||||
STR_201D_OFFICE_BLOCK :Skrifstofubygging
|
||||
STR_201E_STADIUM :Leikvangur
|
||||
STR_201F_OLD_HOUSES :Gömul hús
|
||||
STR_2020_LOCAL_AUTHORITY :{BLACK}Bæjaryfirvöld
|
||||
@@ -1509,7 +1532,7 @@ STR_202C_FROM_TO :{ORANGE}{STRING} fr
|
||||
STR_202D_UNTIL :{YELLOW}, þangað til {DATE_SHORT})
|
||||
STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Tilboð til samstarfssamnings runnið út:{}{}{STRING} frá {STRING} til {STRING} mun ekki vera samningsbundið.
|
||||
STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}Samsarfssamningur gerður ógildur:{}{}{STRING} flutningur frá {STATION} til {STATION} er ekki lengur samningsbundið.
|
||||
STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Nýtt tilboð til samstarfssamnings:{}{}Fyrsti flutningur {STRING} frá {STRING} til {STRING} will attract a year's subsidy from the local authority!
|
||||
STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Nýtt tilboð til samstarfssamnings:{}{}Fyrsti flutningur {STRING} frá {STRING} til {STRING} mun stofna til eins árs samstarfssamnings við bæjaryfirvöld!
|
||||
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Samstarfssamningur gerður við {STRING}!{}{}flutningur {STRING} frá {STATION} til {STATION} mun borga 50% aukalega í heilt ár!
|
||||
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Samstarfssamningur gerður við {STRING}!{}{}flutningur {STRING} frá {STATION} til {STATION} mun borga tvöfalt í heilt ár!
|
||||
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Samstarfssamningur gerður við {STRING}!{}{}flutningur {STRING} frá {STATION} til {STATION} mun borga þrefalt í heilt ár!
|
||||
@@ -1560,27 +1583,31 @@ STR_205C_PIGGY_BANK :Sv
|
||||
##id 0x2800
|
||||
STR_LANDSCAPING :Mótun lands
|
||||
STR_2800_PLANT_TREES :Gróðursetja tré
|
||||
STR_2801_PLACE_SIGN :Setja merki
|
||||
STR_2801_PLACE_SIGN :Setja skilti
|
||||
STR_2802_TREES :{WHITE}Tré
|
||||
STR_2803_TREE_ALREADY_HERE :{WHITE}...hér er nú þegar tré
|
||||
STR_2804_SITE_UNSUITABLE :{WHITE}...óhentugur staður
|
||||
STR_2805_CAN_T_PLANT_TREE_HERE :{WHITE}Ekki hægt að gróðursetja tré hér...
|
||||
STR_2806 :{WHITE}{STRING}
|
||||
STR_2807 :{TINYFONT}{WHITE}{STRING}
|
||||
STR_2808_TOO_MANY_SIGNS :{WHITE}...of mörg merki
|
||||
STR_2808_TOO_MANY_SIGNS :{WHITE}...of mörg skilti
|
||||
STR_2809_CAN_T_PLACE_SIGN_HERE :{WHITE}Ekki hægt að setja tré hér...
|
||||
STR_280A_SIGN :Merki
|
||||
STR_280B_EDIT_SIGN_TEXT :{WHITE}Breyta texta merkis
|
||||
STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}Get ekki breytt nafni merkis...
|
||||
STR_280D_SELECT_TREE_TYPE_TO_PLANT :{BLACK}Veldu trjátegud sem á að gróðursetja
|
||||
STR_280A_SIGN :Skilti
|
||||
STR_280B_EDIT_SIGN_TEXT :{WHITE}Breyta texta skiltis
|
||||
STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}Get ekki breytt nafni skiltis...
|
||||
STR_280D_SELECT_TREE_TYPE_TO_PLANT :{BLACK}Veldu trjátegund sem á að gróðursetja
|
||||
STR_280E_TREES :Tré
|
||||
STR_280F_RAINFOREST :Regnskógar
|
||||
STR_2810_CACTUS_PLANTS :Kaktus
|
||||
|
||||
##id 0x3000
|
||||
STR_3000_RAIL_STATION_SELECTION :{WHITE}Lestarstöðvastillingar
|
||||
STR_3001_AIRPORT_SELECTION :{WHITE}Flugvallastillingar
|
||||
STR_3002_ORIENTATION :{BLACK}Staða
|
||||
STR_3003_NUMBER_OF_TRACKS :{BLACK}Fjöldi lestarspora
|
||||
STR_3004_PLATFORM_LENGTH :{BLACK}Lengd lestarstöðvar
|
||||
STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Of nálægt annarri lestarstöð
|
||||
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tengist fleiri en einni annarri stöð
|
||||
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}Of margar stöðvar/lestunarsvæði í þessum bæ
|
||||
STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}Of margar stöðvar/lestunarsvæði
|
||||
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Of nálægt annarri stöð/lestunarsvæði
|
||||
@@ -1591,7 +1618,9 @@ STR_300E_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}
|
||||
|
||||
STR_3030_RENAME_STATION_LOADING :Endurnefna stöð/lestunarsvæði
|
||||
STR_3031_CAN_T_RENAME_STATION :{WHITE}Get ekki endurnefnt stöð...
|
||||
STR_3032_RATINGS :{BLACK}Einkunn
|
||||
STR_3033_ACCEPTS :{BLACK}Tekur við
|
||||
STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}Staðbundin einkunn flutningsþjónustu:
|
||||
|
||||
############ range for rating starts
|
||||
STR_3035_APPALLING :Hræðilegur
|
||||
@@ -1601,7 +1630,7 @@ STR_3038_MEDIOCRE :
|
||||
STR_3039_GOOD :Góður
|
||||
STR_303A_VERY_GOOD :Mjög góður
|
||||
STR_303B_EXCELLENT :Frábær
|
||||
STR_303C_OUTSTANDING :Æðislegur
|
||||
STR_303C_OUTSTANDING :Framúrskarandi
|
||||
############ range for rating ends
|
||||
|
||||
STR_303D :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA8}%)
|
||||
@@ -1629,6 +1658,7 @@ STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Veldu st
|
||||
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Færa miðju sýnishorns á staðsetningu stöðvar
|
||||
STR_3054_SHOW_STATION_RATINGS :{BLACK}Sýna einkunn stöðvar
|
||||
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Breyta nafni stöðvar
|
||||
STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO :{BLACK}Sýna lista yfir móttækilegan varning
|
||||
STR_3057_STATION_NAMES_CLICK_ON :{BLACK}Nöfn stöðva - ýttu á nafn til að færa miðju sjónarhorns á stöð
|
||||
STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT :{BLACK}Veldu stærð/tegund flugvallar
|
||||
STR_3059_SMALL :{BLACK}Lítill
|
||||
@@ -1641,20 +1671,151 @@ STR_305D_0 :{TINYFONT}{BLACK}{STATION} {STRINL 0x30D1}
|
||||
STR_305E_RAILROAD_STATION :Lestarstöð
|
||||
STR_305F_AIRCRAFT_HANGAR :Flugskýli
|
||||
STR_3060_AIRPORT :Flugvöllur
|
||||
STR_3061_TRUCK_LOADING_AREA :Vörubílastöð
|
||||
STR_3062_BUS_STATION :Strætisvagnastöð
|
||||
STR_3063_SHIP_DOCK :Skipahöfn
|
||||
STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}Sýna svæði sem tilheyrir stöð
|
||||
STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}Ekki sýna svæði sem tilheyrir stöð
|
||||
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Svæði sem tilheyrir stöð
|
||||
STR_3067_MONORAIL_STATION_SELECT :{WHITE}Einteinungsstöð
|
||||
STR_3068_DOCK :{WHITE}Höfn
|
||||
STR_3069_BUOY :Bauja
|
||||
STR_306A_BUOY_IN_THE_WAY :{WHITE}...bauja fyrir
|
||||
STR_306B_HELIPORT :{BLACK}Þyrlupallur
|
||||
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...stöð of dreyfð
|
||||
|
||||
##id 0x3800
|
||||
STR_3800_SHIP_DEPOT_ORIENTATION :{WHITE}Staða skipaslipps
|
||||
STR_3801_MUST_BE_BUILT_ON_WATER :{WHITE}...verður að byggjast á vatni
|
||||
STR_3802_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Get ekki byggt skipaslipp hér...
|
||||
STR_3803_SELECT_SHIP_DEPOT_ORIENTATION :{BLACK}Velja stöðu skipaslipps
|
||||
STR_3804_WATER :Vatn
|
||||
STR_3805_COAST_OR_RIVERBANK :Strönd
|
||||
STR_3806_SHIP_DEPOT :Skipaslippur
|
||||
STR_3807_CAN_T_BUILD_ON_WATER :{WHITE}...Get ekki byggt á vatni
|
||||
|
||||
##id 0x4000
|
||||
STR_4000_SAVE_GAME :{WHITE}Vista leik
|
||||
STR_4001_LOAD_GAME :{WHITE}Opna leik
|
||||
STR_4002_SAVE :{BLACK}Vista
|
||||
STR_4003_DELETE :{BLACK}Eyða
|
||||
STR_4004 :{STRING}, {DATE_LONG}
|
||||
STR_4005_BYTES_FREE :{BLACK}{COMMA32} megabæti laus
|
||||
STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Get ekki lesið af drifi
|
||||
STR_4007_GAME_SAVE_FAILED :{WHITE}Vistun leiks mistókst
|
||||
STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Get ekki eytt skrá
|
||||
STR_4009_GAME_LOAD_FAILED :{WHITE}Mistókst að opna leik
|
||||
STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Listi yfir drif, möppur og vistaða leiki
|
||||
STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nafn fyrir vistun leiks
|
||||
STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Eyða nafninu
|
||||
STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Vista leikinn undir þessu nafni
|
||||
STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Velja tegund leiks
|
||||
STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Velja landslag (grænt), forstilltan leik (blátt) eða handahófskenndan leik
|
||||
STR_4010_GENERATE_RANDOM_NEW_GAME :Búa til nýjan leik
|
||||
|
||||
##id 0x4800
|
||||
STR_4800_IN_THE_WAY :{WHITE}{STRING} er fyrir
|
||||
STR_4801 :{WHITE}{TOWN} {STRING}
|
||||
STR_4802_COAL_MINE :Kolanáma
|
||||
STR_4803_POWER_STATION :Rafmagnsstöð
|
||||
STR_4804_SAWMILL :Timburverksmiðja
|
||||
STR_4805_FOREST :Skógur
|
||||
STR_4806_OIL_REFINERY :Olíuhreinsunarstöð
|
||||
STR_4807_OIL_RIG :Olíuborpallur
|
||||
STR_4808_FACTORY :Verksmiðja
|
||||
STR_4809_PRINTING_WORKS :Prentsmiðja
|
||||
STR_480A_STEEL_MILL :Stálbræðsla
|
||||
STR_480B_FARM :Bóndabýli
|
||||
STR_480C_COPPER_ORE_MINE :Koparnáma
|
||||
STR_480D_OIL_WELLS :Olíulindir
|
||||
STR_480E_BANK :Banki
|
||||
STR_480F_FOOD_PROCESSING_PLANT :Matvælaframleiðsla
|
||||
STR_4810_PAPER_MILL :Pappírsverksmiðja
|
||||
STR_4811_GOLD_MINE :Gullnáma
|
||||
STR_4812_BANK :Banki
|
||||
STR_4813_DIAMOND_MINE :Demantanáma
|
||||
STR_4814_IRON_ORE_MINE :Járnnáma
|
||||
STR_4815_FRUIT_PLANTATION :Ávaxtaplantekra
|
||||
STR_4816_RUBBER_PLANTATION :Gúmmíplantekra
|
||||
STR_4817_WATER_SUPPLY :Vatnsbyrgi
|
||||
STR_4818_WATER_TOWER :Vatnsturn
|
||||
STR_4819_FACTORY :Verksmiðja
|
||||
STR_481A_FARM :Bóndabýli
|
||||
STR_481B_LUMBER_MILL :Timburverksmiðja
|
||||
STR_481C_COTTON_CANDY_FOREST :Sykurfrauðsskógur
|
||||
STR_481D_CANDY_FACTORY :Sælgætisverksmiðja
|
||||
STR_481E_BATTERY_FARM :Rafhlöðubýli
|
||||
STR_481F_COLA_WELLS :Kólalindir
|
||||
STR_4820_TOY_SHOP :Leikfangabúð
|
||||
STR_4821_TOY_FACTORY :Leikfangaverksmiðja
|
||||
STR_4822_PLASTIC_FOUNTAINS :Plastbrunnar
|
||||
STR_4823_FIZZY_DRINK_FACTORY :Gosdrykkjaverksmiðja
|
||||
STR_4824_BUBBLE_GENERATOR :Kúluframleiðsla
|
||||
STR_4825_TOFFEE_QUARRY :Karamellunáma
|
||||
STR_4826_SUGAR_MINE :Sykurnáma
|
||||
|
||||
############ range for requires starts
|
||||
STR_4827_REQUIRES :{BLACK}Þarfnast: {YELLOW}{STRING}
|
||||
STR_4828_REQUIRES :{BLACK}Þarfnast: {YELLOW}{STRING}, {STRING}
|
||||
STR_4829_REQUIRES :{BLACK}Þarfnast: {YELLOW}{STRING}, {STRING}, {STRING}
|
||||
############ range for requires ends
|
||||
|
||||
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Framleiðsla síðasta mánaðar:
|
||||
STR_482B_TRANSPORTED :{YELLOW}{STRING}{BLACK} ({COMMA16}% flutt)
|
||||
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Miðja aðalsjónarhorn á iðnað
|
||||
STR_482F_COST :{BLACK}Kostnaður: {YELLOW}{CURRENCY}
|
||||
STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Get ekki reist þennan iðnað hér...
|
||||
STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...skógur getur aðeins verið gróðursettur yfir snjólínu
|
||||
STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{TOWN} {STRING} tilkynnir yfirvofandi lokun!
|
||||
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}Birgðavandamál knýja {TOWN} {STRING} til að tilkynna yfirvofandi lokun!
|
||||
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Skortur á nálægum trjám knýr {TOWN} {STRING} til að tilkynna yfirvofandi lokun!
|
||||
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{TOWN} {STRING} eykur framleiðsluna!
|
||||
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Nýtt kolalag fanns í {TOWN} {STRING}!{}Tvöföldun í framleiðslu væntanleg!
|
||||
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Meri olía finnst við {TOWN} {STRING}!{}Tvöföldun í framleiðslu væntanleg!
|
||||
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Búist er við að endurbættar aðferðir á {TOWN} {STRING} muni skila tvöfaldri framleiðslu!
|
||||
STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}50% samdráttur í framleiðslu hjá {TOWN} {STRING}
|
||||
STR_483A_INSECT_INFESTATION_CAUSES :{BLACK}{BIGFONT}Skordýraplága veldur tjóni á {TOWN} {STRING}!{}Framleiðsla minnkar um 50%
|
||||
STR_483B_CAN_ONLY_BE_POSITIONED :{WHITE}...getur aðeins verið staðsett nálægt brún kortsins
|
||||
STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}{STRING} framleiðsla í {TOWN} {STRING} hækkar um {COMMA16}%!
|
||||
STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}{STRING} framleiðsla í {TOWN} {STRING} lækkar um {COMMA16}%!
|
||||
|
||||
##id 0x5000
|
||||
STR_5000_TRAIN_IN_TUNNEL :{WHITE}Lest í göngunum
|
||||
STR_5001_ROAD_VEHICLE_IN_TUNNEL :{WHITE}Bifreið í göngunum
|
||||
STR_5002 :
|
||||
STR_5003_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Önnur göng fyrir
|
||||
STR_5004 :
|
||||
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Get ekki breytt landi fyrir hinn enda gangnanna
|
||||
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Verður að eyða göngum fyrst
|
||||
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Verður að eyða brú fyrst
|
||||
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Getur ekki byrjað og endað á sama stað
|
||||
STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Sléttlendi eða vatn nauðsynlegt undir brú
|
||||
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Verður að byrja og enda í sömu línu
|
||||
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Óhentug staðsetning fyrir enda gangnanna
|
||||
STR_500C :
|
||||
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
|
||||
STR_500E_SUSPENSION_STEEL :Hengibrú, stál
|
||||
STR_500F_GIRDER_STEEL :Burðarbitabrú, stál
|
||||
STR_5010_CANTILEVER_STEEL :Svifbitabrú, stál
|
||||
STR_5011_SUSPENSION_CONCRETE :Hengibrú, steypa
|
||||
STR_5012_WOODEN :Viðarbrú
|
||||
STR_5013_CONCRETE :Steypubrú
|
||||
STR_5014_TUBULAR_STEEL :Rörabrú, stál
|
||||
STR_BRIDGE_TUBULAR_SILICON :Rörabrú, kísill
|
||||
STR_5015_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Get ekki reist brú hér...
|
||||
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Get ekki grafið göng hér...
|
||||
STR_5017_RAILROAD_TUNNEL :Lestagöng
|
||||
STR_5018_ROAD_TUNNEL :Vegagöng
|
||||
STR_5019 :
|
||||
STR_501A :
|
||||
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Stálhengibrú, lestir
|
||||
STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Stálburðarbitabrú, lestir
|
||||
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Stálsvifbitabrú, lestir
|
||||
STR_501E_REINFORCED_CONCRETE_SUSPENSION :Styrkt steypuhengirbú, lestir
|
||||
STR_501F_WOODEN_RAIL_BRIDGE :Viðarbrú, lestir
|
||||
STR_5020_CONCRETE_RAIL_BRIDGE :Steypubrú, lestir
|
||||
STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Stálhengibrú, vegur
|
||||
STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Stálburðarbitabrú, vegur
|
||||
|
||||
##id 0x5800
|
||||
|
||||
@@ -1705,3 +1866,11 @@ STR_3063_SHIP_DOCK :Skipah
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
|
||||
@@ -186,13 +186,7 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Non puoi fare questo....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Non puoi ripulire l'area....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright Originale{COPYRIGHT} 1995 Chris Sawyer, Tutti i diritti riservati
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versione {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Concepito originariamente da Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafica di Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Ringraziamenti speciali vanno a:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Presegnali e Semafori {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fondamenta per i binari sui pendii {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Grafica di canali e chiuse {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -310,6 +304,7 @@ STR_0134_UNIX :Unix
|
||||
STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperiale (miglia)
|
||||
STR_013A_METRIC_KILOMETERS :Metrico (kilometri)
|
||||
@@ -352,6 +347,8 @@ STR_015E_QUIT_GAME :Abbandona partita
|
||||
STR_015F_QUIT :Esci
|
||||
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Sei sicuro di voler abbandonare la partita in corso?
|
||||
STR_0161_QUIT_GAME :{WHITE}Abbandona partita
|
||||
STR_SORT_ORDER_TIP :{BLACK}Seleziona ordinamento (discendente/ascendente)
|
||||
STR_SORT_CRITERIA_TIP :{BLACK}Seleziona il criterio d'ordinamento
|
||||
SRT_SORT_BY :{BLACK}Ordina per
|
||||
|
||||
STR_SORT_BY_POPULATION :{BLACK}Popolazione
|
||||
@@ -416,6 +413,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
|
||||
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Non puoi cambiare l'intervallo di manutenzione...
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Chiudi finestra
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Nome finestra - trascinala per muovere la finestra
|
||||
STR_STICKY_BUTTON :{BLACK} Marca questa finestra come inchiudibile con il tasto 'Chiudi TUTTE le finestre'
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolisci edifici ecc... su una casella del terreno
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Abbassa un angolo del terreno
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Alza un angolo del terreno
|
||||
@@ -538,6 +536,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Seleziona programma 'nuovo style'
|
||||
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Seleziona programma 'Personaliz. 1' (definito dall'utente)
|
||||
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleziona programma 'Personaliz. 2' (definito dall'utente)
|
||||
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Elimina programmazioni attuali (solo personalizzato 1 o personalizzato 2)
|
||||
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Salva le impostazioni musicali
|
||||
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Clicca sul brano per aggiungerlo al programma corrente (solamente personallizzato 1 o personalizzato 2)
|
||||
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Seleziona programmazione casuale on/off
|
||||
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostra finestra 'selezione brani'
|
||||
@@ -571,7 +570,6 @@ STR_0216_CAPITALIST :Capitalista
|
||||
STR_0217_MAGNATE :Magnate
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Magnate del secolo
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} archivi '{STRING}' stato!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} di {STRING} archivi '{STRING}' stato!
|
||||
STR_021D :{BLACK}
|
||||
@@ -722,6 +720,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Nomi veicoli
|
||||
STR_02BD :{BLACK}{STRING}
|
||||
STR_02BE_DEFAULT :Predefiniti
|
||||
STR_02BF_CUSTOM :Personalizzati
|
||||
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Salva i nomi personalizzati
|
||||
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Selezione nomi personalizzati
|
||||
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Salva nomi personalizzati dei veicoli
|
||||
|
||||
@@ -732,6 +731,8 @@ STR_02C5_DIFFICULTY_SETTINGS :Scelta difficolt
|
||||
STR_02C6_DIFFICULTY_SETTINGS :Scelta difficoltà
|
||||
STR_02C7_CONFIG_PATCHES :Configura patch
|
||||
STR_02C8_CONFIG_PATCHES :Configura patch
|
||||
STR_NEWGRF_SETTINGS :Impostazioni Newgrf
|
||||
STR_NEWGRF_SETTINGS2 :Impostazioni Newgrf
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostra nomi città
|
||||
@@ -740,6 +741,8 @@ STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostra nomi stazioni
|
||||
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Mostra nomi stazioni
|
||||
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Mostra cartelli
|
||||
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Mostra cartelli
|
||||
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Waypoints mostrati
|
||||
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Waypoints mostrati
|
||||
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Animazione completa
|
||||
STR_02D0_FULL_ANIMATION :{SETX 12}Animazione completa
|
||||
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Massimo dettaglio
|
||||
@@ -792,13 +795,16 @@ STR_02F8_EVERY_3_MONTHS :Ogni 3 mesi
|
||||
STR_02F9_EVERY_6_MONTHS :Ogni 6 mesi
|
||||
STR_02FA_EVERY_12_MONTHS :Ogni 12 mesi
|
||||
STR_02FB_START_A_NEW_GAME :{BLACK}Inizia nuovo gioco
|
||||
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Carica un gioco salvato
|
||||
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Guarda dimostrazione/tutorial
|
||||
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Crea uno scenario personalizzato
|
||||
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Seleziona giocatore singolo
|
||||
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Seleziona un gioco multiplayer da 2-8 giocatori
|
||||
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Mostra opzioni di gioco
|
||||
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Mostra opzioni difficoltà
|
||||
STR_0303_START_A_NEW_GAME_USING :{BLACK}Inizia una partita con uno scenario personalizzato
|
||||
STR_0304_QUIT :{BLACK}Esci
|
||||
STR_0305_QUIT_OPENTTD :{BLACK}Esci 'OpenTTD'
|
||||
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Guarda dimostrazione/tutorial
|
||||
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
|
||||
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...può essere costruito solo in città
|
||||
@@ -814,7 +820,7 @@ STR_0313_FUND_NEW_INDUSTRY :Finanzia nuove industrie
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Finanzia nuove industrie
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...può essere costruito solo in città
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...può essere costruito solo nella foresta pluviale
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...può essere costruito solo in aree desertiche
|
||||
@@ -836,10 +842,9 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Inglese
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglese
|
||||
STR_TOWNNAME_FRENCH :Francese
|
||||
STR_TOWNNAME_GERMAN :Tedesco
|
||||
STR_TOWNNAME_AMERICAN :Americano
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americano
|
||||
STR_TOWNNAME_SILLY :Stupidi
|
||||
STR_TOWNNAME_SWEDISH :Svedese
|
||||
@@ -853,23 +858,31 @@ STR_TOWNNAME_ROMANIAN :Rumeni
|
||||
STR_TOWNNAME_CZECH :Cechi
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Sterlina ({POUNDSIGN})
|
||||
STR_CURR_USD :Dollaro ($)
|
||||
STR_CURR_EUR :Euro (¤)
|
||||
STR_CURR_YEN :Yen ({YENSIGN})
|
||||
STR_CURR_ATS :Scellino Austriano (ATS)
|
||||
STR_CURR_BEF :Franco Belga (BEF)
|
||||
STR_CURR_CHF :Franco Svizzero (CHF)
|
||||
STR_CURR_CZK :Corona Ceca (CZK)
|
||||
STR_CURR_DEM :Marco Tedesco (DEM)
|
||||
STR_CURR_DKK :Corona Danese (DKK)
|
||||
STR_CURR_ESP :Peseta (ESP)
|
||||
STR_CURR_FIM :Marco Finlandese(FIM)
|
||||
STR_CURR_FRF :Franco (FRF)
|
||||
STR_CURR_GRD :Drachma Greca (GRD)
|
||||
STR_CURR_HUF :Forint Ungherese (HUF)
|
||||
STR_CURR_ISK :Corona Islandese (ISK)
|
||||
STR_CURR_ITL :Lira Italiana (ITL)
|
||||
STR_CURR_NLG :Fiorino olandese (NLG)
|
||||
STR_CURR_NOK :Corona Norvegese (NOK)
|
||||
STR_CURR_PLN :Zloty Polacco (PLN)
|
||||
STR_CURR_ROL :Leu rumeno (Lei)
|
||||
STR_CURR_RUR :Rupie Russe (RUR)
|
||||
STR_CURR_SEK :Corona Svedese (SEK)
|
||||
|
||||
STR_CURR_CUSTOM :Personalizza...
|
||||
|
||||
STR_OPTIONS_LANG :{BLACK}Lingua
|
||||
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
@@ -962,6 +975,7 @@ STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Consenti la costruzione di treni mo
|
||||
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Abilita accelerazione realistica per i treni: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Unisci stazioni ferroviarie quando sono vicine: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Lascia stazione quanto uno dei tipi di merce è a pieno carico: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Usa l'algoritmo di caricamento migliorato: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflazione: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Scarica le merci in una stazione solo se richieste: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Consenti la costruzione di ponti molto lunghi: {ORANGE}{STRING}
|
||||
@@ -1028,6 +1042,8 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posizione barra degli strumenti prin
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Sinistra
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centro
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Destra
|
||||
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Raggio di snap delle finestre: {ORANGE}{STRING} px
|
||||
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Raggio di snap delle finestre: {ORANGE}disabilitato
|
||||
|
||||
STR_CONFIG_PATCHES_GUI :{BLACK}Interfaccia
|
||||
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Costruzione
|
||||
@@ -1064,16 +1080,24 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Direzione {WAYPOINT}
|
||||
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Direzione {WAYPOINT}, {VELOCITY}
|
||||
|
||||
STR_GO_TO_WAYPOINT :Vai al {WAYPOINT}
|
||||
STR_GO_NON_STOP_TO_WAYPOINT :Procedi non-stop per {WAYPOINT}
|
||||
|
||||
STR_WAYPOINTNAME_CITY :Waypoint {TOWN}
|
||||
STR_WAYPOINTNAME_CITY_SERIAL :Waypoint {TOWN} #{COMMA16}
|
||||
STR_LANDINFO_WAYPOINT :Waypoint
|
||||
|
||||
STR_WAYPOINT :{WHITE}Waypoint
|
||||
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Seleziona il tipo di waypoint
|
||||
|
||||
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
|
||||
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
|
||||
STR_WAYPOINT_RAW :{WAYPOINT}
|
||||
STR_EDIT_WAYPOINT_NAME :{WHITE}Cambia il nome al waypoint
|
||||
|
||||
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Impossibile cambiare il nome al waypoint...
|
||||
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Trasforma la ferrovia in un waypoint
|
||||
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Impossibile costruire un waypoint ferroviario qui...
|
||||
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Impossibile rimuovere un waypoint ferroviario qui...
|
||||
|
||||
STR_BUILD_AUTORAIL_TIP :{BLACK}Costruisci binario usando la modalità automatica
|
||||
|
||||
@@ -1086,6 +1110,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Alcune industrie casuali
|
||||
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Copri la mappa con industrie costruite casualmente
|
||||
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Impossibile generare le industrie...
|
||||
|
||||
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Apri la barra 'Modellazione terreno' per alzare/abbassare il terreno, piantare alberi, ecc.
|
||||
STR_LANDSCAPING_TOOLBAR :{WHITE}Modella terreno
|
||||
STR_LEVEL_LAND_TOOLTIP :{BLACK}Livella terreno
|
||||
|
||||
@@ -1101,6 +1126,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}Impossibile costruire una chiusa qui...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Costruisci chiusa
|
||||
STR_LANDINFO_LOCK :Chiusa
|
||||
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordinate: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Impossibile rimuovere una porzione di stazione...
|
||||
@@ -1162,6 +1188,8 @@ STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
|
||||
|
||||
STR_NETWORK_PLAYER_NAME :{BLACK}Nome giocatore:
|
||||
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Questo è il nome con cui gli altri giocatori ti identificheranno
|
||||
STR_NETWORK_CONNECTION :{BLACK}Connessione:
|
||||
STR_NETWORK_CONNECTION_TIP :{BLACK}Scegli tra un gioco internet e un gioco in LAN (Local Area Network)
|
||||
|
||||
STR_NETWORK_START_SERVER :{BLACK}Avvia server
|
||||
STR_NETWORK_START_SERVER_TIP :{BLACK}Avvia il tuo server
|
||||
@@ -1173,9 +1201,20 @@ STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Clicca su un nome della lista per se
|
||||
|
||||
STR_NETWORK_FIND_SERVER :{BLACK}Trova server
|
||||
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cerca nella rete un server
|
||||
STR_NETWORK_ADD_SERVER :{BLACK}Aggiungi server
|
||||
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Aggiungi un server alla lista che verrà sempre controllata per giochi attivi.
|
||||
STR_NETWORK_ENTER_IP :{BLACK}Digita indirizzo IP del server
|
||||
|
||||
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
|
||||
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
|
||||
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients online / clients max
|
||||
STR_NETWORK_GAME_INFO :{SILVER}GAME INFO
|
||||
STR_ORANGE :{ORANGE}{STRING}
|
||||
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA8} / {COMMA8}
|
||||
STR_NETWORK_LANGUAGE :{SILVER}Lingua: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Dimens: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Versione server: {WHITE}{STRING}
|
||||
STR_NETWORK_PASSWORD :{BLACK}Password:
|
||||
|
||||
STR_NETWORK_JOIN_GAME :{BLACK}Entra nel gioco
|
||||
@@ -2231,7 +2270,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} da {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Treno {COMMA16} stà aspettando nel deposito
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nuovi Veicoli
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Costo: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocità: {GOLD}{VELOCITY}{BLACK} Potenza: {GOLD}{COMMA16}cv{}{BLACK}Consumi: {GOLD}{CURRENCY}/anno{}{BLACK}Capienza: {GOLD}{STRING}{}{BLACK}Progettato nel: {GOLD}{NUMU16}{BLACK} Vita: {GOLD}{COMMA16} anni{}{BLACK}Max. Affidabilità: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Costo: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocità: {GOLD}{VELOCITY}{BLACK} Potenza: {GOLD}{COMMA32}cv{}{BLACK}Consumi: {GOLD}{CURRENCY}/anno{}{BLACK}Capienza: {GOLD}{STRING}{}{BLACK}Progettato nel: {GOLD}{NUMU16}{BLACK} Vita: {GOLD}{COMMA16} anni{}{BLACK}Max. Affidabilità: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informazioni
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Treno troppo lungo
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Un treno può essere modificato solo quando è fermo nel deposito
|
||||
@@ -2591,3 +2630,11 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostra tutti i treni che hanno questa stazi
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostra tutti i veicoli che hanno questa stazione tra gli ordini
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostra tutti gli aerei che hanno questa stazione tra gli ordini
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostra tutte le navi che hanno questo porto tra gli ordini
|
||||
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
|
||||
@@ -1,424 +0,0 @@
|
||||
##name Latvian
|
||||
##ownname Latvie¨u valoda
|
||||
|
||||
##id 0x0000
|
||||
STR_NULL :
|
||||
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Ārpus kartes robežas
|
||||
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Pārāk tuvu kartes malai
|
||||
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nav diezgan naudas - vajag {CURRENCY}
|
||||
STR_0004 :{WHITE}{CURRENCY64}
|
||||
STR_0005 :{RED}{CURRENCY64}
|
||||
STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zemei jābūt plakanai
|
||||
STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{STRING}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (ceļā no
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Pieņem: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Pieņem: {GOLD}
|
||||
STR_000E :
|
||||
STR_000F_PASSENGERS :Pasažierus
|
||||
STR_0010_COAL :Ogles
|
||||
STR_0011_MAIL :Pastu
|
||||
STR_0012_OIL :Naftu
|
||||
STR_0013_LIVESTOCK :Liellopus
|
||||
STR_0014_GOODS :Preces
|
||||
STR_0015_GRAIN :Graudus
|
||||
STR_0016_WOOD :Kokmatereālus
|
||||
STR_0017_IRON_ORE :Dzelzs rūdu
|
||||
STR_0018_STEEL :Tēraudu
|
||||
STR_0019_VALUABLES :Vērtspapīri
|
||||
STR_001A_COPPER_ORE :Vara rūda
|
||||
STR_001B_MAIZE :Kukurūza
|
||||
STR_001C_FRUIT :Augļi
|
||||
STR_001D_DIAMONDS :Dimanti
|
||||
STR_001E_FOOD :Pārtika
|
||||
STR_001F_PAPER :Papīrs
|
||||
STR_0020_GOLD :Zelts
|
||||
STR_0021_WATER :Ūdens
|
||||
STR_0022_WHEAT :Kvieši
|
||||
STR_0023_RUBBER :Gumija
|
||||
STR_0024_SUGAR :Cukurs
|
||||
STR_0025_TOYS :Rotaļlietas
|
||||
STR_0026_CANDY :Saldumi
|
||||
STR_0027_COLA :Kola
|
||||
STR_0028_COTTON_CANDY :Cukurvate
|
||||
STR_0029_BUBBLES :Burbuļi
|
||||
STR_002A_TOFFEE :Cukurplāksnes
|
||||
STR_002B_BATTERIES :Baterijas
|
||||
STR_002C_PLASTIC :Plastmasa
|
||||
STR_002D_FIZZY_DRINKS :Burbuļūdeņi
|
||||
STR_002E :
|
||||
STR_002F_PASSENGER :Pasažieris
|
||||
STR_0030_COAL :Ogle
|
||||
STR_0031_MAIL :Pasts
|
||||
STR_0032_OIL :Nafta
|
||||
STR_0033_LIVESTOCK :Liellopi
|
||||
STR_0034_GOODS :Preces
|
||||
STR_0035_GRAIN :Graudi
|
||||
STR_0036_WOOD :Kokmatereāli
|
||||
STR_0037_IRON_ORE :Dzelzs rūda
|
||||
STR_0038_STEEL :Tērauds
|
||||
STR_0039_VALUABLES :Vērtspapīri
|
||||
STR_003A_COPPER_ORE :Vara rūda
|
||||
STR_003B_MAIZE :Kukurūza
|
||||
STR_003C_FRUIT :Augļi
|
||||
STR_003D_DIAMOND :Dimanti
|
||||
STR_003E_FOOD :Pārtika
|
||||
STR_003F_PAPER :papīrs
|
||||
STR_0040_GOLD :Zelts
|
||||
STR_0041_WATER :Ūdens
|
||||
STR_0042_WHEAT :Kvieši
|
||||
STR_0043_RUBBER :Gumija
|
||||
STR_0044_SUGAR :Cukurs
|
||||
STR_0045_TOY :Rotaļlieta
|
||||
STR_0046_CANDY :Saldumi
|
||||
STR_0047_COLA :Kola
|
||||
STR_0048_COTTON_CANDY :Cukurvate
|
||||
STR_0049_BUBBLE :Burbulis
|
||||
STR_004A_TOFFEE :Cukurplāksnīte
|
||||
STR_004B_BATTERY :Baterijas
|
||||
STR_004C_PLASTIC :Plastmasas
|
||||
STR_004D_FIZZY_DRINK :Burbuļūdeņu
|
||||
STR_004E :
|
||||
STR_004F_PASSENGER :{COMMA16} pasažieris
|
||||
STR_0050_TON_OF_COAL :{COMMA16} tonna ogļu
|
||||
STR_0051_BAG_OF_MAIL :{COMMA16} pasta maiss
|
||||
STR_0052_OF_OIL :{VOLUME} naftas
|
||||
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} liellops
|
||||
STR_0054_CRATE_OF_GOODS :{COMMA16} preču kaste
|
||||
STR_0055_TON_OF_GRAIN :{COMMA16} tonna graudu
|
||||
STR_0056_TON_OF_WOOD :{COMMA16} tonna kokmatereālu
|
||||
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonna dzelzs rūdas
|
||||
STR_0058_TON_OF_STEEL :{COMMA16} tonna tērauda
|
||||
STR_0059_BAG_OF_VALUABLES :{COMMA16} maiss ar vērtspapīriem
|
||||
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonna vara rūdas
|
||||
STR_005B_TON_OF_MAIZE :{COMMA16} tonna kukurūzas
|
||||
STR_005C_TON_OF_FRUIT :{COMMA16} tonna augļu
|
||||
STR_005D_BAG_OF_DIAMONDS :{COMMA16} maiss ar dimantiem
|
||||
STR_005E_TON_OF_FOOD :{COMMA16} tonna pārtikas preču
|
||||
STR_005F_TON_OF_PAPER :{COMMA16} tonna papīra
|
||||
STR_0060_BAG_OF_GOLD :{COMMA16} zelta maiss
|
||||
STR_0061_OF_WATER :{VOLUME} ūdens
|
||||
STR_0062_TON_OF_WHEAT :{COMMA16} tonna kviešu
|
||||
STR_0063_OF_RUBBER :{VOLUME} tonna gumijas
|
||||
STR_0064_TON_OF_SUGAR :{COMMA16} tonna cukura
|
||||
STR_0065_TOY :{COMMA16} rotaļlieta
|
||||
STR_0066_BAG_OF_CANDY :{COMMA16} saldumu maiss
|
||||
STR_0067_OF_COLA :{VOLUME} kolas
|
||||
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonna cukurvates
|
||||
STR_0069_BUBBLE :{COMMA16} burbulis
|
||||
STR_006A_TON_OF_TOFFEE :{COMMA16} tonna cukurplāksnīšu
|
||||
STR_006B_BATTERY :{COMMA16} baterija
|
||||
STR_006C_OF_PLASTIC :{VOLUME} plastmasas
|
||||
STR_006D_FIZZY_DRINK :{COMMA16} burbuļūdenis
|
||||
STR_006E :
|
||||
STR_006F_PASSENGERS :{COMMA16} pasažieri
|
||||
STR_0070_TONS_OF_COAL :{COMMA16} tonnas ogļu
|
||||
STR_0071_BAGS_OF_MAIL :{COMMA16} pasta maisi
|
||||
STR_0072_OF_OIL :{VOLUME} naftas
|
||||
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} liellopi
|
||||
STR_0074_CRATES_OF_GOODS :{COMMA16} kastes ar precēm
|
||||
STR_0075_TONS_OF_GRAIN :{COMMA16} tonnas graudu
|
||||
STR_0076_TONS_OF_WOOD :{COMMA16} tonnas kokmatereālu
|
||||
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonnas dzelzs rūdas
|
||||
STR_0078_TONS_OF_STEEL :{COMMA16} tonnas tērauda
|
||||
STR_0079_BAGS_OF_VALUABLES :{COMMA16} maisi ar vērtslietām
|
||||
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonnas vara rūdas
|
||||
STR_007B_TONS_OF_MAIZE :{COMMA16} tonnas kukurūzas
|
||||
STR_007C_TONS_OF_FRUIT :{COMMA16} tonnas augļu
|
||||
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} maisi ar dimantiem
|
||||
STR_007E_TONS_OF_FOOD :{COMMA16} tonnas pārtikas preču
|
||||
STR_007F_TONS_OF_PAPER :{COMMA16} tonnas papīra
|
||||
STR_0080_BAGS_OF_GOLD :{COMMA16} zelta maisi
|
||||
STR_0081_OF_WATER :{VOLUME} ūdens
|
||||
STR_0082_TONS_OF_WHEAT :{COMMA16} tonnas kviešu
|
||||
STR_0083_OF_RUBBER :{VOLUME} gumijas
|
||||
STR_0084_TONS_OF_SUGAR :{COMMA16} tonnas cukura
|
||||
STR_0085_TOYS :{COMMA16} rotaļlietas
|
||||
STR_0086_BAGS_OF_CANDY :{COMMA16} saldumu maisi
|
||||
STR_0087_OF_COLA :{VOLUME} kolas
|
||||
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonnas cukurvates
|
||||
STR_0089_BUBBLES :{COMMA16} burbuļi
|
||||
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonnas cukurplāksnīšu
|
||||
STR_008B_BATTERIES :{COMMA16} baterijas
|
||||
STR_008C_OF_PLASTIC :{VOLUME} plastmasas
|
||||
STR_008D_FIZZY_DRINKS :{COMMA16} burbuļūdeņu
|
||||
STR_008E :
|
||||
STR_008F_PS :{TINYFONT}PA
|
||||
STR_0090_CL :{TINYFONT}OG
|
||||
STR_0091_ML :{TINYFONT}PT
|
||||
STR_0092_OL :{TINYFONT}NF
|
||||
STR_0093_LV :{TINYFONT}LL
|
||||
STR_0094_GD :{TINYFONT}PR
|
||||
STR_0095_GR :{TINYFONT}GR
|
||||
STR_0096_WD :{TINYFONT}KM
|
||||
STR_0097_OR :{TINYFONT}DZ
|
||||
STR_0098_ST :{TINYFONT}TR
|
||||
STR_0099_VL :{TINYFONT}VP
|
||||
STR_009A_CO :{TINYFONT}VR
|
||||
STR_009B_MZ :{TINYFONT}KU
|
||||
STR_009C_FT :{TINYFONT}AU
|
||||
STR_009D_DM :{TINYFONT}DM
|
||||
STR_009E_FD :{TINYFONT}PP
|
||||
STR_009F_PR :{TINYFONT}PS
|
||||
STR_00A0_GD :{TINYFONT}ZE
|
||||
STR_00A1_WR :{TINYFONT}UD
|
||||
STR_00A2_WH :{TINYFONT}KV
|
||||
STR_00A3_RB :{TINYFONT}GU
|
||||
STR_00A4_SG :{TINYFONT}CU
|
||||
STR_00A5_TY :{TINYFONT}RT
|
||||
STR_00A6_SW :{TINYFONT}SA
|
||||
STR_00A7_CL :{TINYFONT}KO
|
||||
STR_00A8_CF :{TINYFONT}CV
|
||||
STR_00A9_BU :{TINYFONT}BB
|
||||
STR_00AA_TF :{TINYFONT}CP
|
||||
STR_00AB_BA :{TINYFONT}BT
|
||||
STR_00AC_PL :{TINYFONT}PL
|
||||
STR_00AD_FZ :{TINYFONT}BU
|
||||
STR_00AE :{WHITE}{DATE_SHORT}
|
||||
STR_00AF :{WHITE}{DATE_LONG}
|
||||
STR_00B0_MAP :{WHITE}Karte - {STRING}
|
||||
STR_00B1_GAME_OPTIONS :{WHITE}Spçles parametri
|
||||
STR_00B2_MESSAGE :{YELLOW}Ziòojums
|
||||
STR_00B3_MESSAGE_FROM :{YELLOW}Ziòojums no {STRING}
|
||||
STR_00B4_CAN_T_DO_THIS :{WHITE}Tâ nevar darît....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Ðo laukumu nevar nolîdzinât....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Oriìinâlâs autortiesîbas {COPYRIGHT} 1995 Chris Sawyer, Visas tiesîbas rezervçtas
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versija {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Oriìinâlais dizains: Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Oriìinâlâ grafika: Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Îpaða pateicîba sekojoðâm personâm:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pirms-signâli un semafori {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Pamati sliedçm un ceïu nogâzçm {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanâlu/dambju grafika {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD grupa
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
STR_00C7_QUIT :{WHITE}Beigt
|
||||
STR_00C8_YES :{BLACK}Jâ
|
||||
STR_00C9_NO :{BLACK}Nç
|
||||
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vai Tu tieðâm gribi pamest ðo spçli un iet uz {STRING}?
|
||||
STR_00CB_1 :{BLACK}1
|
||||
STR_00CC_2 :{BLACK}2
|
||||
STR_00CD_3 :{BLACK}3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range for menu ends
|
||||
|
||||
|
||||
|
||||
############ range for months starts
|
||||
############ range for months ends
|
||||
|
||||
|
||||
############ range for service numbers starts
|
||||
############ range for service numbers ends
|
||||
|
||||
|
||||
############ range for days starts
|
||||
############ range for days ends
|
||||
|
||||
|
||||
############ range for cargo acecpted starts
|
||||
############ range for cargo acecpted ends
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ start of townname region
|
||||
############ end of townname region
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Start of order review system.
|
||||
# DON'T ADD OR REMOVE LINES HERE
|
||||
# end of order system
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ network gui strings
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ end network gui strings
|
||||
|
||||
|
||||
##id 0x0800
|
||||
|
||||
##id 0x1000
|
||||
|
||||
|
||||
|
||||
##id 0x1800
|
||||
|
||||
##id 0x2000
|
||||
|
||||
##id 0x2800
|
||||
|
||||
##id 0x3000
|
||||
|
||||
|
||||
############ range for rating starts
|
||||
############ range for rating ends
|
||||
|
||||
|
||||
##id 0x3800
|
||||
|
||||
##id 0x4000
|
||||
|
||||
##id 0x4800
|
||||
|
||||
############ range for requires starts
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
##id 0x5000
|
||||
|
||||
##id 0x5800
|
||||
|
||||
|
||||
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
||||
############ These strings may never get a new id, or savegames will break!
|
||||
##id 0x6000
|
||||
|
||||
|
||||
############ end of savegame specific region!
|
||||
|
||||
##id 0x6800
|
||||
|
||||
############ range for difficulty levels starts
|
||||
############ range for difficulty levels ends
|
||||
|
||||
############ range for difficulty settings starts
|
||||
############ range for difficulty settings ends
|
||||
|
||||
|
||||
##id 0x7000
|
||||
|
||||
##id 0x8000
|
||||
|
||||
##id 0x8800
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##id 0x9000
|
||||
|
||||
|
||||
##id 0x9800
|
||||
|
||||
|
||||
##id 0xA000
|
||||
|
||||
|
||||
##id 0xB000
|
||||
|
||||
|
||||
############ Those following lines need to be in this order!!
|
||||
############ End of order list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Kan ikke gj
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan ikke rydde feltet....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Opprinnelig copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheter reservert
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versjon {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Opprinnelig design av Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafikk laget av Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Spesiell takk til:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signaler og Semaforer {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Grunnvoll for Jernbanespor på Skråninger {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Sluse grafikk {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-teamet
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD-teamet
|
||||
STR_TRANSLATED_BY :{BLACK} Oversetter(e) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperisk (miles)
|
||||
STR_013A_METRIC_KILOMETERS :Metrisk (kilometer)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke endre service-intervall
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Lukk vindu
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Vindustittel - dra her for å flytte vindu
|
||||
STR_STICKY_BUTTON :{BLACK}Merk dette vinduet som ulukkbart for 'Lukk alle vinduer'-knappen
|
||||
STR_RESIZE_BUTTON :{BLACK}Klikk og dra for å endre størrelsen på vinduet
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv bygninger o.l.
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Senk et hjørne av et landstykke
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Hev et hjørne av et landstykke
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Endringer i godtatte varer
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subsidier
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Generell informasjon
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...for langt i fra forrige destinasjon
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Beste firma som kom til 2050{}({STRING} Level)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Beste firma som nådde {NUMU16}{}({STRING} Nivå)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Firmarangering i {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Forretningsmann
|
||||
STR_0214_ENTREPRENEUR :Entreprenør
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
|
||||
STR_0217_MAGNATE :Magnat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Århundrets finansfyrste
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} oppnår '{STRING}'status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} av {STRING} oppnår '{STRING}' status!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} oppnår '{STRING}'-status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} av {STRING} oppnår '{STRING}'-status!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Innstillinger for ny grafikk
|
||||
STR_NEWGRF_SETTINGS2 :Innstillinger for ny grafikk
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Lukk ALLE vindu
|
||||
STR_CLOSE_ALL_WINDOWS2 :Lukk ALLE Vindu
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Vis bynavn
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Vis bynavn
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Vis stasjonsnavn
|
||||
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Finansier ny industri
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Finansier ny industri
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan bare bygges i byer
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan bare bygges i regnskogområder
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan bare bygges i ørkenområder
|
||||
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Engelsk
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Engelsk
|
||||
STR_TOWNNAME_FRENCH :Fransk
|
||||
STR_TOWNNAME_GERMAN :Tysk
|
||||
STR_TOWNNAME_AMERICAN :Amerikansk
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engelsk (Utvidet)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latin-Amerikansk
|
||||
STR_TOWNNAME_SILLY :Tåpelige
|
||||
STR_TOWNNAME_SWEDISH :Svensk
|
||||
@@ -862,10 +859,12 @@ STR_TOWNNAME_DUTCH :Nederlandsk
|
||||
STR_TOWNNAME_FINNISH :Finsk
|
||||
STR_TOWNNAME_POLISH :Polsk
|
||||
STR_TOWNNAME_SLOVAKISH :Slovak
|
||||
STR_TOWNNAME_NORWEGIAN :Norsk
|
||||
STR_TOWNNAME_HUNGARIAN :Ungarsk
|
||||
STR_TOWNNAME_AUSTRIAN :Østerriksk
|
||||
STR_TOWNNAME_ROMANIAN :Rumensk
|
||||
STR_TOWNNAME_CZECH :Tsjekkisk
|
||||
STR_TOWNNAME_SWISS :Sveitsisk
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pund ({POUNDSIGN})
|
||||
@@ -1019,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Bytt automatisk ut kj
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autoforny når kjøretøy er {ORANGE}{STRING}{LTBLUE} måneder før/etter maks alder
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autoforny minimum penger trengst for fornying: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Varighet til feilmelding: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Vis byers befolkning i tittel: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Usynlige trær (med gjennomsiktige bygninger): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snøhøyde: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maks stasjonspedning: {ORANGE}{STRING} {RED}Advarsel: Høy instilling gir treger spill
|
||||
@@ -1044,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard serviceintervall for fl
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standard serviceintervall for kjøretøy: {ORANGE}deaktivert
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard serviceintervall for båter: {ORANGE}{STRING} dager
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Standard serviceintervall for skip: {ORANGE}deaktivert
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Deaktiver service når havarier er slått av: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farge i avisen kommer i: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Start spillet i år: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Spillet slutter {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Jevn økonomi (Flere, mindre endringer)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillat kjøping av aksjer i andre selskaper
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ved opptrekking plasser signal hver: {ORANGE}{STRING} rute(r)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posisjon av hovedverktøylinje: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Venstre
|
||||
@@ -1137,6 +1140,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kan ikke bygge sluser her...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Bygg sluser
|
||||
STR_LANDINFO_LOCK :Sluse
|
||||
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne del av stasjonen...
|
||||
@@ -1188,6 +1192,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Velg hvilken last lokomotivet skal
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Bygg om lokomotivet til å frakte den valgte varetypen
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ikke bygge om lokomotiv...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervaller er i prosent: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Endre produksjon
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Velkommen til denne nye AI, under konstruksjon. Du kan vente deg problemer. Når du finner ett problem, lag ett skjermbilde av det og post det i forumet. Mor deg!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Advarsel: denne nye AI er fremdeles alfa! Akkurat nå, virker bare lastebiler og busser!
|
||||
@@ -1225,7 +1230,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Spr
|
||||
STR_NETWORK_TILESET :{SILVER}Brikkesett: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Kartstørrelse: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Tjenerversjon: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Tjeneradresse: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Tjeneradresse: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Startet: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Nettverksdato: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Passordbeskyttet!
|
||||
@@ -1341,6 +1346,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Det skjedde en protokoll-feil, s
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Klientversjonen er ikke den samme som tjenerversjonen.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Feil passord.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Tjeneren er full
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Du er bannlyst fra denne serveren
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Du ble sparket ut av tjeneren
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Juksing er forbudt på denne serveren
|
||||
|
||||
@@ -1481,6 +1487,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Jernbaneovergang
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Byer
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2094,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan ikke selge 25% av aksjene...
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% eies av {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% eies av {STRING}{} {COMMA16}% eies av {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} har blitt kjøpt opp av {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Dette selskapet selger ikke aksjer enda...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Damp)
|
||||
@@ -2385,7 +2393,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} fra {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tog {COMMA16} venter i togstallen
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nye tog/vogner
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Koster: {GOLD}{CURRENCY}{BLACK} Vekt: {GOLD}{COMMA16}t{}{BLACK}Fart: {GOLD}{VELOCITY}{BLACK} Kraft: {GOLD}{COMMA16}hk{}{BLACK}Driftkostnader: {GOLD}{CURRENCY}/år{}{BLACK}Kapasitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} år{}{BLACK}Maks. pålitelighet: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Pris: {GOLD}{CURRENCY}{BLACK} Vekt: {GOLD}{COMMA16}t{}{BLACK}Fart: {GOLD}{VELOCITY}{BLACK} Kraft: {GOLD}{COMMA32}hk{}{BLACK}Driftskostnad: {GOLD}{CURRENCY}/år{}{BLACK}Kapasitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} år{}{BLACK}Maks. Pålitelighet: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informasjon
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Toget er for langt
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tog kan bare endres når det står stille i togstallen
|
||||
@@ -2666,6 +2674,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan ikke navngi fly...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Navngi fly
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Innbyggerne jubler . . .{}Første fly ankommer {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Flykrasj!{}{COMMA16} dør ved {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Flystyrt!{}Fly gikk tom for drivstoff, {COMMA16} døde i eksplosjon!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Stoppested:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Endre navn
|
||||
@@ -2739,6 +2748,7 @@ STR_CURRENCY_WINDOW :{WHITE}Vanlig valuta
|
||||
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Valutakurs: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
|
||||
STR_CURRENCY_SEPARATOR :{LTBLUE}Deler:
|
||||
STR_CURRENCY_PREFIX :{LTBLUE}Prefiks:
|
||||
STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks:
|
||||
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Bytt til Euro: {ORANGE}{INT32}
|
||||
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Bytt til Euro: {ORANGE}aldri
|
||||
STR_CURRENCY_PREVIEW :{LTBLUE}Forhåndsvis: {ORANGE}{CURRENCY}
|
||||
@@ -2758,3 +2768,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Vis alle tog som har denne stasjonen p
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Vis alle kjøretøy som har denne stasjonen på deres timeplan
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Vis alle fly som har denne stasjonen på deres timeplan
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Vis alle skip som har denne stasjonen på deres timeplan
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Bytt ut kjøretøy
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Bytt ut kjøretøy
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Begynn å bytte ut kjøretøy
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Slutt å bytte ut kjøretøy
|
||||
STR_NOT_REPLACING :{BLACK}Byttes ikke ut
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Inget lokomotiv valgt
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Velg lokomotivtype å bytte ut
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Velg den nye lokomotivtypen du vil skal ta over for den du har valgt til venstre
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikk denne knappen hvis du ikke vil bytte ut lokomotivet som er valgt på venstresiden
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Klikk denne knappen hvis du vil bytte ut det valgte lokomotivet på venstresiden med det valgte lokomotivet på høyresiden
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Velg jernbanetypen du vil velge lokomotiv fra
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dette viser hvilket lokomotiv som overtar for det valgte lokomotivet på venstresiden
|
||||
STR_REPLACE_HELP :{BLACK}Dette verktøyet lar deg bytte ut en type lokomotiv med en annen. Dette blir gjort neste gang lokomotivet er innom et depot.
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Jernbane-lokomotiv
|
||||
STR_MONORAIL_VEHICLES :Monorail-lokomotiv
|
||||
STR_MAGLEV_VEHICLES :Maglev-lokomotiv
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -185,14 +185,9 @@ STR_00B3_MESSAGE_FROM :{YELLOW}Wiadomosc od {STRING}
|
||||
STR_00B4_CAN_T_DO_THIS :{WHITE}Niemozna tego zrobic....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Nie mozna wyczyscic terenu....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
|
||||
STR_00B7_VERSION :{BLACK}Wersja OpenTTD {REV}: Language Pack by Tom and PolPot and Spooqy
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Designed & Programmed by Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graphics by Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Specjalne podziekowania dla:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signaly i Semafory {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fundacja na rzecz torow na zboczach {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Grafika kanalow/sluz {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00B7_VERSION :{BLACK}Wersja OpenTTD {REV}
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Zespol OpenTTD
|
||||
STR_TRANSLATED_BY :{BLACK} Tlumacz(e) - : Tom and PolPot and Spooqy
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Brytyjski (mile)
|
||||
STR_013A_METRIC_KILOMETERS :Metryczny (kilometry)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nie mozna zmienic okresu miedzy serw
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Zamkniecie okna
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Tytul okienka - przeciagnij to by ruszyc oknem
|
||||
STR_STICKY_BUTTON :{BLACK}Zaznacza to okno jako niezamykalne dla funkcji 'Zamknij wszystkie okna'
|
||||
STR_RESIZE_BUTTON :{BLACK}Kliknij i przeciagnij by zmienic rozmiar okna
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Niszczenie budynkow itp w danym kwadracie terenu
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Obnizenie naroznika terenu
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Wywyzszenie naroznika terenu
|
||||
@@ -567,7 +564,7 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Zamiany w akceptowaniu ladunku
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subsydia
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Ogolne informacje
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...zbyt daleko od poprzedniego celu
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Pierwsza firma ktora osiagnie 2050{}({STRING} Poziom)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Czolowka firm ktora osiagnela poziom {NUMU16}{}({STRING})
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Biznesmen
|
||||
STR_0214_ENTREPRENEUR :Przedsiebiorca
|
||||
@@ -576,8 +573,9 @@ STR_0216_CAPITALIST :Kapitalista
|
||||
STR_0217_MAGNATE :Magnat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon Stulecia
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} osiaga status: '{STRING}'!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} osiaga status: '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} {STRING} osiaga status: '{STRING}'!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
@@ -742,8 +740,6 @@ STR_NEWGRF_SETTINGS :Ustawienia newgrf
|
||||
STR_NEWGRF_SETTINGS2 :Ustawienia newgrf
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Zamknij WSZYSTKIE okienka
|
||||
STR_CLOSE_ALL_WINDOWS2 :Zamknij wszystkie okienka
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Wyswietlanie nazw miast
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Wyswietlanie nazw miast
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Wyswietlanie nazw stacji
|
||||
@@ -775,6 +771,7 @@ STR_02DD_SUBSIDIES :Subsydia
|
||||
STR_02DE_MAP_OF_WORLD :Mapa swiata
|
||||
STR_EXTRA_VIEW_PORT :Extra podglad
|
||||
STR_02DF_TOWN_DIRECTORY :Lista miast
|
||||
STR_TOWN_POPULATION :{BLACK}Swiatowa populacja: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Podglad {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopuj do podgladu
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiuj obecna pozycje z glownego okna do podgladu
|
||||
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Ufunduj nowe przedsieb.
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Ufundowanie nowego przedsieb.
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...moze byc wybudowane tylko w miescie
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...moze byc wybudowane tylko w lasach deszczowych
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...moze byc wybudowane tylko na pustyni
|
||||
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Angielskie
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Angielski (Oryginal)
|
||||
STR_TOWNNAME_FRENCH :Francuskie
|
||||
STR_TOWNNAME_GERMAN :Niemieckie
|
||||
STR_TOWNNAME_AMERICAN :Amerykanskie
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Angielski (Rozszezone)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Poludniowoamerykanskie
|
||||
STR_TOWNNAME_SILLY :Glupie
|
||||
STR_TOWNNAME_SWEDISH :Szwedzkie
|
||||
@@ -862,10 +859,12 @@ STR_TOWNNAME_DUTCH :Holenderskie
|
||||
STR_TOWNNAME_FINNISH :Finskie
|
||||
STR_TOWNNAME_POLISH :Polskie
|
||||
STR_TOWNNAME_SLOVAKISH :Slowackie
|
||||
STR_TOWNNAME_NORWEGIAN :Norweskie
|
||||
STR_TOWNNAME_HUNGARIAN :Wegierskie
|
||||
STR_TOWNNAME_AUSTRIAN :Austriackie
|
||||
STR_TOWNNAME_ROMANIAN :Rumunskie
|
||||
STR_TOWNNAME_CZECH :Czeskie
|
||||
STR_TOWNNAME_SWISS :Szwajcarskie
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Funty ({POUNDSIGN})
|
||||
@@ -1019,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autoodnowienie pojazdu gdy staj
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autoodnowienie nastepuje {ORANGE}{STRING}{LTBLUE} miesiecy przed/po maks wieku
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimalna ilosc pieniedzy potrzebna do autoodnowienia: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Czas trwania komunikatu o bledzie: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Pokaz populacje miasta w jego nazwie: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Niewidoczne drzewa (razem z przezroczystymi budynkami): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Wysokosc granicy wiecznych sniegow: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maks wielkosc stacji: {ORANGE}{STRING} {RED}Uwaga: Duze wartosci spowalniaja gre
|
||||
@@ -1044,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Domyslny okres miedzy serwis. dl
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Domyslny okres miedzy serwis. dla samolotow: {ORANGE}niedostepne
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Domyslny okres miedzy serwis. dla statkow: {ORANGE}{STRING} dni
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Domyslny okres miedzy serwis. dla statkow: {ORANGE}niedostepne
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Serwis niedostepny jesli uszkodzenia pojazdow wylaczone: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Pojawianie sie kolorowych wiadomosci w: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Data rozpoczecia: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Data zakonczenia: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Pozwol na lagodna ekonomie (male zmiany)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Pozwol kupowac udzialy w innych firmach
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}W trakcie przeciagania ustaw sygnaly co: {ORANGE}{STRING} kratke(i)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pozycja glownego paska narzedzi: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :z lewej
|
||||
@@ -1137,6 +1140,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Nie mozna tutaj wybudowac sluzy...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Buduj sluzy
|
||||
STR_LANDINFO_LOCK :Sluza
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... boja w uzyciu!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Pozycja: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nie mozna usunac czesci stacji...
|
||||
@@ -1188,6 +1193,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Wybierz typ ladunku jaki ma przewoz
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Przebudowa pociagu do przewozu podswietlonych towarow
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nie mozna przebudowac pociagu...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Okres miedzy serwisowania w procentach: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmiana produkcji
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Witamy w nowym AI. Mozesz oczekiwac problemow. Gdy to sie stanie, wykonaj zrzut ekranu i wyslij go na forum. Powodzenia!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Ostrzenie: nowe AI jest ciagle w wersji alpha! Obecnie dziala tylko dla samochodow!
|
||||
@@ -1225,7 +1231,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Jezyk: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Krajobraz: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Rozmiar mapy: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Wersja serwera: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adres serwera: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adres serwera: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Data uruchomienia: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Biezaca data: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Chronione haslem!
|
||||
@@ -1341,6 +1347,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Blad protokolu, polaczenie zostalo prz
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Wersja gry nie zgadza sie z wersja gry na serwerze.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Zle haslo.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Serwer jest pelen
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Masz zabroniony dostep do tego serwera
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Zostales wyrzucony z serwera
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Ulatwienia sa niedozwolone na tym serwerze
|
||||
|
||||
@@ -1481,6 +1488,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Poziom przecinania sie drog/torow
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Miasta
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2095,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}nie mozna sprzedac 25% udzialow w te
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% w posiadaniu przez {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% w posiadaniu przez {STRING}{} {COMMA16}% w posiadaniu przez {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} zostalo przejete przez {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Ta firma nie sprzedaje jeszcze akcji...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Parowoz)
|
||||
@@ -2385,7 +2394,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} z {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Pociag {COMMA16} czeka w zajezdni
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nowe pojazdy
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Koszt: {GOLD}{CURRENCY}{BLACK} Waga: {GOLD}{COMMA16}t{}{BLACK}Predkosc: {GOLD}{VELOCITY}{BLACK} Moc: {GOLD}{COMMA16}hp{}{BLACK}Utrzymanie: {GOLD}{CURRENCY}/rok{}{BLACK}Pojemnosc: {GOLD}{STRING}{}{BLACK}Zaprojektowany: {GOLD}{NUMU16}{BLACK} Trwalosc: {GOLD}{COMMA16} lat{}{BLACK}Max. Niezawodnosc: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Koszt: {GOLD}{CURRENCY}{BLACK} Waga: {GOLD}{COMMA16}t{}{BLACK}Predkosc: {GOLD}{VELOCITY}{BLACK} Moc: {GOLD}{COMMA32}KM{}{BLACK}Koszt utrzymania: {GOLD}{CURRENCY}/rok{}{BLACK}Pojemnosc: {GOLD}{STRING}{}{BLACK}Zaprojektowano: {GOLD}{NUMU16}{BLACK} Wiek: {GOLD}{COMMA16} lat{}{BLACK}Maks. niezawodnosc: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informacje
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Pociag zbyt dlugi
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Pociag moze byc modyfikowany tylko jak jest zatrzymany w zajezdni
|
||||
@@ -2666,6 +2675,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nie mozna zmienic nazwy samolotu...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Nazwa samolotu
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Mieszkancy swietuja . . .{}pierwszy samolot przylecial do {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Katastrofa lotnicza!{}{COMMA16} ofiar na {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Wypadek lotniczy!{}Samolot rozbil sie z braku paliwa, zginelo {COMMA16} osob!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Cele:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Zmien nazwe
|
||||
@@ -2750,12 +2760,38 @@ STR_LORRY :{BLACK}{LORRY}
|
||||
STR_PLANE :{BLACK}{PLANE}
|
||||
STR_SHIP :{BLACK}{SHIP}
|
||||
|
||||
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Pociagow
|
||||
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Samochodow
|
||||
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Samolotow
|
||||
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Statkow
|
||||
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Pociag(i/ow)
|
||||
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Samochod(y/ow)
|
||||
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Samolot(y/ow)
|
||||
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Statek(i/ow)
|
||||
|
||||
STR_SCHEDULED_TRAINS_TIP :{BLACK}Pokazuje wszystkie pociagi ktore maja ta stacje w swoim rozkladzie
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Pokazuje wszystkie samochody ktore maja ta stacje w swoim rozkladzie
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Pokazuje wszystkie samoloty ktore maja ta stacje w swoim rozkladzie
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Pokazuje wszystkie statki ktore maja ta stacje w swoim rozkladzie
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Zastap pojazdy
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Zastap pojazdy
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Rozpocznij zastepowanie
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Zatrzymaj zastepowanie
|
||||
STR_NOT_REPLACING :{BLACK}Brak zastapien
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Brak zaznaczonych pojazdow
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Wybierz typ pojazdu jaki chcesz zamienic
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Wybierz typ pojazdu jakim chcesz zastapic pojazd zaznaczony po lewej stronie
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Wcisnij ten klawisz jesli nie chcesz zmieniac pojazdu ktory zaznaczono po lewej stronie
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Wcisnij ten klawisz jesli chcesz zastapic pojazd zaznaczony po lewej stronie wybranym pojazdem po prawej stronie
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Wybierz dla jakiego typu szyn chcesz zastapic pojazdy
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Wyswietla typ pojazdu na jaki bedzie zastapiony pojazd zaznaczony po lewej stronie
|
||||
STR_REPLACE_HELP :{BLACK}Ta funkcja pozwala wybrac typ pojazdu i zastapic go innym. Bedzie sie to odbywac w momencie gdy pociag zjedzie do zajezdni
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Pojazdy kolejowe
|
||||
STR_MONORAIL_VEHICLES :Pojazdy jednoszyn.
|
||||
STR_MAGLEV_VEHICLES :Pojazdy Maglew
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}N
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versão {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Design original por Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Gráficos originais por Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Agradecimentos especiais a:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Sinais e Semáforos {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Criação de linhas em desníveis {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Gráficos de canais {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 A equipa do OpenTTD
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 A equipa do OpenTTD
|
||||
STR_TRANSLATED_BY :{BLACK} Tradutor(es) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :SO/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperial (milhas)
|
||||
STR_013A_METRIC_KILOMETERS :Métrico (quilómetros)
|
||||
@@ -353,6 +349,8 @@ STR_015E_QUIT_GAME :Abandonar jogo
|
||||
STR_015F_QUIT :Sair
|
||||
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Tem a certeza que deseja abandonar este jogo?
|
||||
STR_0161_QUIT_GAME :{WHITE}Abandonar jogo
|
||||
STR_SORT_ORDER_TIP :{BLACK}Seleccione forma de ordenação (descendente/ascendente)
|
||||
STR_SORT_CRITERIA_TIP :{BLACK}Seleccione critério de ordenação
|
||||
SRT_SORT_BY :{BLACK}Ordenar por
|
||||
|
||||
STR_SORT_BY_POPULATION :{BLACK}População
|
||||
@@ -417,6 +415,8 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
|
||||
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Não é possível alterar o intervalo de serviço...
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Fechar janela
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da janela - arraste isto para mover a janela
|
||||
STR_STICKY_BUTTON :{BLACK}Marcar esta janela como não-encerrável pela tecla 'Fechar Todas as Janelas'
|
||||
STR_RESIZE_BUTTON :{BLACK}Clique e arraste para reajustar janela
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolir edifícios, etc. num quadrado de terreno
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Baixar um canto do terreno
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Levantar um canto do terreno
|
||||
@@ -539,6 +539,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Seleccionar programa 'estilo moderno
|
||||
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Seleccionar programa 'Personalizado 1'
|
||||
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleccionar programa 'Personalizado 2'
|
||||
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Limpar programa actual (somente Personaliz. 1 ou Personaliz. 2)
|
||||
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Gravar configuração de música
|
||||
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Clique na faixa de música para a adicionar ao programa actual (somente Personaliz. 1 ou Personaliz. 2)
|
||||
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ligar/Desligar programa aleatório
|
||||
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostrar janela de selecção de faixas de música
|
||||
@@ -563,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Altera
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subsídios
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Informações gerais
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...Muito distante do destino anterior
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top de empresas que chegaram a 2050{}(Nível {STRING})
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top de companhias que chegaram a {NUMU16}{}({STRING} Nivél)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tabela de Liga de Companhias em {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Negociante
|
||||
STR_0214_ENTREPRENEUR :Empresário
|
||||
@@ -572,9 +574,10 @@ STR_0216_CAPITALIST :Capitalista
|
||||
STR_0217_MAGNATE :Magnate
|
||||
STR_0218_MOGUL :Grande magnate
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Magnate do século
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} alcança o estatuto de '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de {STRING} alcança o estatuto de '{STRING}'!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} conquista '{STRING}' desempenho!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} de {STRING} conquista '{STRING}' desempenho!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -723,6 +726,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Nomes dos ve
|
||||
STR_02BD :{BLACK}{STRING}
|
||||
STR_02BE_DEFAULT :Predefinição
|
||||
STR_02BF_CUSTOM :Personalizado
|
||||
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Gravar nomes personalizados
|
||||
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Selecção de nomes dos veículos
|
||||
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Guardar nomes dos veículos personalizados no disco
|
||||
|
||||
@@ -797,13 +801,16 @@ STR_02F8_EVERY_3_MONTHS :Cada 3 meses
|
||||
STR_02F9_EVERY_6_MONTHS :Cada 6 meses
|
||||
STR_02FA_EVERY_12_MONTHS :Cada 12 meses
|
||||
STR_02FB_START_A_NEW_GAME :{BLACK}Iniciar um novo jogo
|
||||
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Carregar um jogo gravado
|
||||
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Mostrar demonstrações/tutoriais
|
||||
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Criar um cenário de jogo personalizado
|
||||
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Seleccionar jogo de 1 jogador
|
||||
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Seleccione jogo múltiple de 2 a 8 jogadores
|
||||
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Mostrar opções de jogo
|
||||
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Mostrar opções de dificuldade
|
||||
STR_0303_START_A_NEW_GAME_USING :{BLACK}Iniciar um novo jogo, utilizando um cenário personalizado guardado no disco
|
||||
STR_0304_QUIT :{BLACK}Sair
|
||||
STR_0305_QUIT_OPENTTD :{BLACK}Sair de 'OpenTTD'
|
||||
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Mostrar demonstração/tutorial
|
||||
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
|
||||
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...só se pode construir em cidades
|
||||
@@ -819,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Financiar nova ind
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financiar nova indústria
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...só se pode construir em cidades
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...só se pode construir em zonas de floresta
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...só se pode construir em zonas de deserto
|
||||
@@ -841,10 +848,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Inglês
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglês
|
||||
STR_TOWNNAME_FRENCH :Francês
|
||||
STR_TOWNNAME_GERMAN :Alemão
|
||||
STR_TOWNNAME_AMERICAN :Americano
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Inglês (Adicional)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americano
|
||||
STR_TOWNNAME_SILLY :Absurdo
|
||||
STR_TOWNNAME_SWEDISH :Sueco
|
||||
@@ -852,29 +859,38 @@ STR_TOWNNAME_DUTCH :Holand
|
||||
STR_TOWNNAME_FINNISH :Finlandês
|
||||
STR_TOWNNAME_POLISH :Polaco
|
||||
STR_TOWNNAME_SLOVAKISH :Eslovaco
|
||||
STR_TOWNNAME_NORWEGIAN :Noreguês
|
||||
STR_TOWNNAME_HUNGARIAN :Húngaro
|
||||
STR_TOWNNAME_AUSTRIAN :Austríaco
|
||||
STR_TOWNNAME_ROMANIAN :Romeno
|
||||
STR_TOWNNAME_CZECH :Checo
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Libras ({POUNDSIGN})
|
||||
STR_CURR_USD :Dólar ($)
|
||||
STR_CURR_EUR :Euro (¤)
|
||||
STR_CURR_YEN :Yen ({YENSIGN})
|
||||
STR_CURR_ATS :Shilling Austríaco (ATS)
|
||||
STR_CURR_BEF :Franco Belga (BEF)
|
||||
STR_CURR_CHF :Franco Suíço (CHF)
|
||||
STR_CURR_CZK :Coroa Checa (CZK)
|
||||
STR_CURR_DEM :Marco Alemão (DEM)
|
||||
STR_CURR_DKK :Coroa Dinamarquesa (DKK)
|
||||
STR_CURR_ESP :Peseta (ESP)
|
||||
STR_CURR_FIM :Marco Finlandês (FIM)
|
||||
STR_CURR_FRF :Franco (FRF)
|
||||
STR_CURR_GRD :Dracma Grego (GRD)
|
||||
STR_CURR_HUF :Forint Húngaro (HUF)
|
||||
STR_CURR_ISK :Coroa Islandesa (ISK)
|
||||
STR_CURR_ITL :Lira Italiana (ITL)
|
||||
STR_CURR_NLG :Guilda Holandesa (NLG)
|
||||
STR_CURR_NOK :Coroa Norueguesa (NOK)
|
||||
STR_CURR_PLN :Zloty Polaco (PLN)
|
||||
STR_CURR_ROL :Lei Romeno (Lei)
|
||||
STR_CURR_RUR :Rublo Russo (rur)
|
||||
STR_CURR_SEK :Coroa Sueca (SEK)
|
||||
|
||||
STR_CURR_CUSTOM :Personalizado...
|
||||
|
||||
STR_OPTIONS_LANG :{BLACK}Idioma
|
||||
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
@@ -1001,6 +1017,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Auto-renova
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Auto-renovação do veículo {ORANGE}{STRING}{LTBLUE} meses antes/depois da idade máx.
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Dinheiro mínimo para fazer auto-renovação: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duração das mensagens de erro: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Mostra população da cidade na janela da cidade: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Árvores invisíveis (com edifícios transparentes): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altura da linha de neve: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Tamanho máx. de estações: {ORANGE}{STRING} {RED}Valores altos tornam o jogo lento!
|
||||
@@ -1029,7 +1046,9 @@ STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Intervalo de servi
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Noticias a cores aparecem em: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Data de início: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Terminar jogo em: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Activar economia regular (alterações menores)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar acções de outras companhias
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ao arrastar colocar sinais a cada: {ORANGE}{STRING} quadrado(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posição da barra de ferramentas principal: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Esquerda
|
||||
@@ -1073,6 +1092,7 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Dirige-se a {WAYPOINT}
|
||||
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dirige-se a {WAYPOINT}, {VELOCITY}
|
||||
|
||||
STR_GO_TO_WAYPOINT :Ir via {WAYPOINT}
|
||||
STR_GO_NON_STOP_TO_WAYPOINT :Ir sem parar via {WAYPOINT}
|
||||
|
||||
STR_WAYPOINTNAME_CITY :Ponto de passagem {TOWN}
|
||||
STR_WAYPOINTNAME_CITY_SERIAL :Ponto de passagem {TOWN} #{COMMA16}
|
||||
@@ -1102,6 +1122,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}V
|
||||
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
|
||||
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Não é possível gerar indústrias...
|
||||
|
||||
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Abra a barra de modelação ambiental para elevar ou baixar terreno, plantar árvores, etc.
|
||||
STR_LANDSCAPING_TOOLBAR :{WHITE}Terreno
|
||||
STR_LEVEL_LAND_TOOLTIP :{BLACK}Nivelar terreno
|
||||
|
||||
@@ -1117,6 +1138,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}N
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Construir diques
|
||||
STR_LANDINFO_LOCK :Dique
|
||||
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Não é possível remover parte da estação...
|
||||
@@ -1168,6 +1190,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Seleccionar tipo de carga do comboi
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Adaptar comboio para transportar a carga seleccionada
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Não é possível ajustar comboio...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Os intervalos de serviço são em percentagem: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Modificar produção
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Bem-vindo à nova IA, ainda em desenvolvimento. Pode encontrar problemas. Neste caso faça uma captura de ecrã e coloque-a no fórum. Divirta-se!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Atenção: esta nova IA está ainda em versão alpha! Actualmente, só funcionam camiões e autocarros!
|
||||
@@ -1205,12 +1228,13 @@ STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Tamanho do Mapa: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Versão do servidor: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Endereço do servidor: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Endereço do servidor: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Data de inicio: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Data actual: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Protegido por password!
|
||||
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVIDOR DESLIGADO
|
||||
STR_NETWORK_SERVER_FULL :{SILVER}SERVIDOR CHEIO
|
||||
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSÃO INCOMPATÍVEL
|
||||
|
||||
STR_NETWORK_JOIN_GAME :{BLACK}Juntar-se ao jogo
|
||||
|
||||
@@ -1225,8 +1249,12 @@ STR_NETWORK_SELECT_MAP :{BLACK}Seleccione um mapa:
|
||||
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Em que mapa deseja jogar?
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Máximo de clientes:
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Escolha o número máximo de clientes. Não necessitam estar todos presentes.
|
||||
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_LAN :Rede Local
|
||||
STR_NETWORK_INTERNET :Internet
|
||||
STR_NETWORK_LAN_INTERNET :Rede Local / Internet
|
||||
STR_NETWORK_INTERNET_ADVERTISE :Internet (divulgar)
|
||||
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_2_CLIENTS :2 clientes
|
||||
STR_NETWORK_3_CLIENTS :3 clientes
|
||||
STR_NETWORK_4_CLIENTS :4 clientes
|
||||
@@ -1238,7 +1266,7 @@ STR_NETWORK_9_CLIENTS :9 clientes
|
||||
STR_NETWORK_10_CLIENTS :10 clientes
|
||||
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Idioma falado:
|
||||
STR_NETWORK_LANGUAGE_TIP :{BLACK}Outros jogadores ficarão a conhecer o idioma utilizado no servidor.
|
||||
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_START_GAME :{BLACK}Iniciar Jogo
|
||||
STR_NETWORK_START_GAME_TIP :{BLACK}Iniciar um novo jogo em rede de um mapa aleatório, ou cenário
|
||||
STR_NETWORK_LOAD_GAME :{BLACK}Abrir Jogo
|
||||
@@ -1269,15 +1297,39 @@ STR_NETWORK_REFRESH_TIP :{BLACK}Renovar a informa
|
||||
STR_NETWORK_COMPANY_INFO :{SILVER}INFORMAÇÃO DA COMPANHIA
|
||||
|
||||
STR_NETWORK_COMPANY_NAME :{SILVER}Nome da empresa: {WHITE}{STRING}
|
||||
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inauguração: {WHITE}{NUMU16}
|
||||
STR_NETWORK_VALUE :{SILVER}Valor da Companhia: {WHITE}{CURRENCY64}
|
||||
STR_NETWORK_CURRENT_BALANCE :{SILVER}Balanço actual: {WHITE}{CURRENCY64}
|
||||
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Rendimento do último ano: {WHITE}{CURRENCY64}
|
||||
STR_NETWORK_PERFORMANCE :{SILVER}Desempenho: {WHITE}{NUMU16}
|
||||
|
||||
STR_NETWORK_PLAYERS :{BLACK}#/#
|
||||
STR_NETWORK_VEHICLES :{SILVER}Veículos: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
|
||||
STR_NETWORK_STATIONS :{SILVER}Estações: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
|
||||
STR_NETWORK_PLAYERS :{SILVER}Jogadores: {WHITE}{STRING}
|
||||
|
||||
STR_NETWORK_CONNECTING :{WHITE}A ligar...
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) A ligar..
|
||||
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorizando..
|
||||
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Em espera..
|
||||
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) A obter mapa..
|
||||
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Processando dados..
|
||||
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) A registar..
|
||||
|
||||
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}A obter a informação de jogo..
|
||||
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}A obter a informação da Companhia..
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} cliente(s) à sua frente
|
||||
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbytes obtidos até agora
|
||||
|
||||
STR_NETWORK_DISCONNECT :{BLACK}Desligar
|
||||
|
||||
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Introduza a mensagem de texto a enviar
|
||||
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduza o valor do dinheiro que pretende dar
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Introduza palavra-chave
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companhia protegida. Introduza palavra-chave
|
||||
STR_NETWORK_CLIENT_LIST :{WHITE}Lista de clientes
|
||||
|
||||
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Não foram encontradas interfaces de rede ou o jogo foi compilado sem ENABLE_NETWORK
|
||||
STR_NETWORK_ERR_NOSERVER :{WHITE} Não foram encontrados jogos de rede
|
||||
@@ -1285,14 +1337,57 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} O servidor n
|
||||
STR_NETWORK_ERR_DESYNC :{WHITE} A sincronização do jogo de rede falhou.
|
||||
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} A conexão do jogo de rede perdeu-se.
|
||||
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Não foi possível abrir o jogo.
|
||||
STR_NETWORK_ERR_SERVER_START :{WHITE} Não foi possível iniciar o servidor
|
||||
STR_NETWORK_ERR_CLIENT_START :{WHITE} Não foi possível estabelecer ligação
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE} Tempo de espera esgotado na conexão #{NUMU16}.
|
||||
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Ocorreu um erro de protocolo e a ligação foi encerrada
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} A revisão deste cliente não condiz com a revisão do servidor
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Palavra-chave incorrecta
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Servidor cheio
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Foi banido deste SERVIDOR
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Você foi expulso do jogo
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Batotas não são permitidas neste servidor
|
||||
|
||||
STR_NETWORK_ERR_LEFT :deixou o jogo
|
||||
############ Leave those lines in this order!!
|
||||
STR_NETWORK_ERR_CLIENT_GENERAL :erro geral
|
||||
STR_NETWORK_ERR_CLIENT_DESYNC :erro de dessincronização
|
||||
STR_NETWORK_ERR_CLIENT_SAVEGAME :não foi possível carregar o mapa
|
||||
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :ligação perdida
|
||||
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :erro de protocolo
|
||||
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Não autorizado
|
||||
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :recebido um pacote estranho
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :revisão incorrecta
|
||||
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :nome já está a ser utilizado
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :palavra-chave do jogo está incorrecta
|
||||
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :id do jogador incorrecta em DoCommand
|
||||
STR_NETWORK_ERR_CLIENT_KICKED :avisado pelo servidor
|
||||
STR_NETWORK_ERR_CLIENT_CHEATER :estava a tentar usar batota
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CLIENT_JOINED :entrou no jogo
|
||||
STR_NETWORK_GIVE_MONEY :deu à sua empresa algum dinheiro ({CURRENCY})
|
||||
STR_NETWORK_GAVE_MONEY_AWAY :você deu {STRING} algum dinheiro ({CURRENCY})
|
||||
STR_NETWORK_CHAT_COMPANY :[Equipa] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_COMPANY :[Equipa] Para {STRING}:
|
||||
STR_NETWORK_CHAT_CLIENT :[Privado] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_CLIENT :[Privado] Para {STRING}:
|
||||
STR_NETWORK_CHAT_ALL :[Todos] {STRING}:
|
||||
STR_NETWORK_NAME_CHANGE :mudou o nome dele/dela para
|
||||
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} O servidor fechou a sessão
|
||||
STR_NETWORK_SERVER_REBOOT :{WHITE} O servidor está a reiniciar...{}Por favor espere...
|
||||
|
||||
STR_NETWORK_SERVER :Servidor
|
||||
STR_NETWORK_CLIENT :Cliente
|
||||
|
||||
STR_NETWORK_CLIENTLIST_NONE :(nenhum)
|
||||
STR_NETWORK_CLIENTLIST_KICK :Banir
|
||||
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar dinheiro
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Falar com todos
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Falar com a empresa
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensagem privada
|
||||
|
||||
|
||||
|
||||
|
||||
STR_NETWORK_SEND :{BLACK}Enviar
|
||||
|
||||
############ end network gui strings
|
||||
|
||||
@@ -1390,6 +1485,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Passagem de n
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Cidades
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -1980,6 +2076,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reconstruir sede da empresa noutro
|
||||
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Não é possível construir sede da empresa...
|
||||
STR_7072_VIEW_HQ :{BLACK}Ver sede
|
||||
STR_RELOCATE_HQ :{BLACK}Mover sede
|
||||
STR_COMPANY_PASSWORD :{BLACK}Palavra passe
|
||||
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Usar palavra passe na empresa para prevenir utilizadores não autorizados.
|
||||
STR_SET_COMPANY_PASSWORD :Definir palavra passe da empresa
|
||||
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Retrocesso Mundial!{}{}Especialistas financeiros temem crise económica!
|
||||
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Fim do retrocesso!{}{}Melhoras no comércio inspiram confiança nas indústrias à medida que a economia se fortalece!
|
||||
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alternar entre janela grande/pequena
|
||||
@@ -1993,6 +2092,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}N
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% propriedade de {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% propriedade de {STRING}{} {COMMA16}% propriedade de {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} foi comprada por {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Esta empresa ainda não troca acções...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor)
|
||||
@@ -2291,7 +2391,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} de {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Comboio {COMMA16} está a aguardar no depósito
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Novos Veículos
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Custo: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potência: {GOLD}{COMMA16}hp{}{BLACK}Custo de circulação: {GOLD}{CURRENCY}/ano{}{BLACK}Capacidade: {GOLD}{STRING}{}{BLACK}Projectado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Custo: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potência: {GOLD}{COMMA32}hp{}{BLACK}Custo de circulação: {GOLD}{CURRENCY}/ano{}{BLACK}Capacidade: {GOLD}{STRING}{}{BLACK}Projectado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informação
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Comboio muito longo
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Os comboios só podem ser alterados quando parados num depósito
|
||||
@@ -2518,6 +2618,7 @@ STR_GO_TO_SHIP_DEPOT :Ir para o dep
|
||||
SERVICE_AT_SHIP_DEPOT :Manutenção no depósito de {TOWN}
|
||||
|
||||
##id 0xA000
|
||||
STR_A000_AIRPORTS :{WHITE}Aeroportos
|
||||
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Não é possível construir aeroporto aqui...
|
||||
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar
|
||||
STR_A003_NEW_AIRCRAFT :{BLACK}Nova Aeronave
|
||||
@@ -2571,6 +2672,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}N
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Renomear aeronave
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeira aeronave chega a {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Acidente de Avião!{}{COMMA16} morrem na explosão em {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Desastre de Avião!{}Avião ficou sem combustivél, {COMMA16} morreram em incêndiol!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinos:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Renomear
|
||||
@@ -2640,6 +2742,21 @@ STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}N
|
||||
STR_NEWGRF_FILENAME :{BLACK}Nome do ficheiro:
|
||||
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
|
||||
|
||||
STR_CURRENCY_WINDOW :{WHITE}Moeda Modificada
|
||||
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taxa de troca: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
|
||||
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
|
||||
STR_CURRENCY_PREFIX :{LTBLUE}Prefixo:
|
||||
STR_CURRENCY_SUFFIX :{LTBLUE}Sufixo:
|
||||
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Mudar para Euro: {ORANGE}{INT32}
|
||||
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Mudar para Euro: {ORANGE}nunca
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Nu pot face asta....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Nu pot curãta terenul....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, toate drepturile rezervate
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versiunea {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Design original de Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graficã originalã de Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Multumiri speciale:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-semnalizare si semafoare {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fundatiile pentru constructii în pantã {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Graficã pentru canale/ecluze {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 Echipa OpenTTD
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Echipa OpenTTD
|
||||
STR_TRANSLATED_BY :{BLACK} Translator(i) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Anglo-americane (Mile)
|
||||
STR_013A_METRIC_KILOMETERS :Metrice (Kilometri)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nu pot schimba intervalul de service
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Închide fereastra
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titlul ferestrei - trage de aici pentru a muta fereastra
|
||||
STR_STICKY_BUTTON :{BLACK}Mark this window as undeletable for the 'Close All Windows' key
|
||||
STR_RESIZE_BUTTON :{BLACK}Click&drag pentru a schimba marimea ferestrei
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoleazã clãdiri, strãzi, etc. pe un pãtrat de teren
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Scade altitudinea unui vârf de teren
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Mãreste altitudinea unui vârf de teren
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Schimb
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subventii
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Informatii generale
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...prea departe de destinatia precedentã
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Clasamentul companiilor in anul {}(Titlu: {STRING})
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Primele companii care au atins {NUMU16}{}(Nivelul {STRING})
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Clasamentul companiilor in {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Om de afaceri
|
||||
STR_0214_ENTREPRENEUR :Întreprinzãtor
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalist
|
||||
STR_0217_MAGNATE :Magnat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Magnatul Secolului
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} a obtinut titlul de '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de la {STRING} a obtinut titlul de '{STRING}'!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} a dobandit titlul de '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} al {STRING} dobandeste titlul de '{STRING}'!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Setari Newgrf
|
||||
STR_NEWGRF_SETTINGS2 :Setari Newgrf
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Inchide TOATE ferestrele
|
||||
STR_CLOSE_ALL_WINDOWS2 :Inchide TOATE ferestrele
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afiseazã numele oraselor
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Afiseazã numele oraselor
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afiseazã numele statiilor
|
||||
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Obiectiv industrial nou
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Construieste un nou obiectiv ind.
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...se poate construi doar in orase
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...se poate construi doar in padurile ecuatoriale
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...se poate construi doar in zonele de desert
|
||||
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Englezesti
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Engleza (Original)
|
||||
STR_TOWNNAME_FRENCH :Frantuzesti
|
||||
STR_TOWNNAME_GERMAN :Germane
|
||||
STR_TOWNNAME_AMERICAN :Americane
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engleza (Aditional)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americane
|
||||
STR_TOWNNAME_SILLY :Amuzante (englezã)
|
||||
STR_TOWNNAME_SWEDISH :Suedeze
|
||||
@@ -862,29 +859,39 @@ STR_TOWNNAME_DUTCH :Olandeze
|
||||
STR_TOWNNAME_FINNISH :Finlandeze
|
||||
STR_TOWNNAME_POLISH :Poloneze
|
||||
STR_TOWNNAME_SLOVAKISH :Slovace
|
||||
STR_TOWNNAME_NORWEGIAN :Norvegian
|
||||
STR_TOWNNAME_HUNGARIAN :Unguresti
|
||||
STR_TOWNNAME_AUSTRIAN :Austriece
|
||||
STR_TOWNNAME_ROMANIAN :Romanesti
|
||||
STR_TOWNNAME_CZECH :Cehe
|
||||
STR_TOWNNAME_SWISS :Elvetian
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Lira sterlina ({POUNDSIGN})
|
||||
STR_CURR_USD :Dolar ($)
|
||||
STR_CURR_EUR :Euro (¤)
|
||||
STR_CURR_YEN :Yen japonez ({YENSIGN})
|
||||
STR_CURR_ATS :Siling austriac (ATS)
|
||||
STR_CURR_BEF :Franc belgian (BEF)
|
||||
STR_CURR_CHF :Franc elvetian (CHF)
|
||||
STR_CURR_CZK :Coroanã cehã (CZK)
|
||||
STR_CURR_DEM :Marca germana (DEM)
|
||||
STR_CURR_DKK :Coroanã danezã (DKK)
|
||||
STR_CURR_ESP :Peseta (ESP)
|
||||
STR_CURR_FIM :Marcã finlandezã (FIM)
|
||||
STR_CURR_FRF :Franc (FRF)
|
||||
STR_CURR_GRD :Drahmã greceascã (GRD)
|
||||
STR_CURR_HUF :Forint (HUF)
|
||||
STR_CURR_ISK :Coroanã islandezã (ISK)
|
||||
STR_CURR_ITL :Lirã italianã (ITL)
|
||||
STR_CURR_NLG :Gulden olandez (NLG)
|
||||
STR_CURR_NOK :Coroanã norvegianã (NOK)
|
||||
STR_CURR_PLN :Zlot (PLN)
|
||||
STR_CURR_ROL :Leul Greu Romanesc (Lei)
|
||||
STR_CURR_RUR :Rublã ruseascã (RUR)
|
||||
STR_CURR_SEK :Coroanã suedezã (SEK)
|
||||
|
||||
STR_CURR_CUSTOM :Propriu...
|
||||
|
||||
STR_OPTIONS_LANG :{BLACK}Limba
|
||||
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
@@ -1011,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Înnoire automatã cu {ORANGE}{STRING}{LTBLUE} luni pânã la/dupã atingerea vechimii max.
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Fonduri minime pentru înnoire automatã: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Durata mesajelor de eroare: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Afiseaza populatia unui oras langa nume: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Ascunde arborii la alegerea optiunii 'clãdiri transparente': {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altitudinea de înzãpezire: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Mãrimea maximã a statiilor: {ORANGE}{STRING} {RED}(valorile mari încetinesc jocul!)
|
||||
@@ -1036,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Intervalul de service presetat p
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Intervalul de service presetat pentru aeronave: {ORANGE}dezactivat
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Intervalul de service presetat pentru nave: {ORANGE}{STRING} zile
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Intervalul de service presetat pentru nave: {ORANGE}dezactivat
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Deactivare service cand defectiunile sunt anulate: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Stirile în culori apar în anul: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Anul de început a jocului: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Termina jocul in: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Economie cu schimbãri de productie mai reduse, dar mai frecvente
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite cumpararea de actiuni de la alte companii
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Plasare automatã a semnalelor la fiecare: {ORANGE}{STRING} pãtrãtele
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pozitia listei cu instrumente: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :stânga
|
||||
@@ -1129,6 +1140,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Nu pot construi o ecluz
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Construieste ecluzã
|
||||
STR_LANDINFO_LOCK :Ecluzã
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... baliza in uz!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordonate: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nu pot demola o parte din statie...
|
||||
@@ -1180,6 +1193,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Alege tipul de marf
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Modificã trenul pentru a transporta marfa aleasã
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nu pot modifica trenul...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Intervaluri de service in procente: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Schimba productia
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Salut! Sunt noul algoritm AI, încã în teste. Dacã apar probleme, salveazã un screenshot si pune-l pe forum. Baftã!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Atentie: algoritmul AI este în stadiul alfa! Momentan este valabil doar pentru autovehicule!
|
||||
@@ -1217,7 +1231,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Limba: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Marimea hartii: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Versiune server: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa server: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa server: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Data de inceput: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Data curenta: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Protejat cu parola!
|
||||
@@ -1239,6 +1253,8 @@ STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ce hart
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Numar maxim de clienti
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Alege un numar maxim de clienti. Nu trebuie ocupate toate locurile.
|
||||
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_LAN :LAN
|
||||
STR_NETWORK_INTERNET :Internet
|
||||
STR_NETWORK_LAN_INTERNET :LAN / Internet
|
||||
STR_NETWORK_INTERNET_ADVERTISE :Internet (fa reclama)
|
||||
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
@@ -1331,6 +1347,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE}Eroare de protocol. Conexiunea a fost i
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE}Versiunea acestui client este diferita de cea a serverului.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE}Parola gresita.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE}Serverul este plin
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Acessul tau este interzis pe acest server
|
||||
STR_NETWORK_ERR_KICKED :{WHITE}Ai fost dat afara de pe server
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Cheat-urile nu sunt permise pe acest server
|
||||
|
||||
@@ -1471,6 +1488,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Traversare la nivel cu calea ferat
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Orase
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2061,6 +2079,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Muta sediul companiei (costa 1% din
|
||||
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nu pot construi sediul...
|
||||
STR_7072_VIEW_HQ :{BLACK}Vezi sediul
|
||||
STR_RELOCATE_HQ :{BLACK}Muta sediu
|
||||
STR_COMPANY_PASSWORD :{BLACK}Parola
|
||||
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Protejeaza-ti compania cu o parola pentru a preveni accesul neautorizat.
|
||||
STR_SET_COMPANY_PASSWORD :Alege parola companiei
|
||||
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Recesiune mondialã!{}{}Expertii financiari se tem de ceea ce e mai rãu odatã cu prãbusirea economicã!
|
||||
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Recesiunea s-a încheiat!{}{}Cresterea comertului dã încredere industriei, iar economia se redreseazã!
|
||||
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Comutator pentru mãrimea ferestrei
|
||||
@@ -2074,6 +2095,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Nu pot vinde 25% din aceast
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% detinute de {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% detinute de {STRING}{} {COMMA16}% detinute de {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} a fost preluatã de {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Aceasta companie inca nu vinde actiuni...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Aburi)
|
||||
@@ -2372,7 +2394,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} de la {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Trenul {COMMA16} asteaptã în depou
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Vehicule noi
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Greutate: {GOLD}{COMMA16}t{}{BLACK}Vitezã: {GOLD}{VELOCITY}{BLACK} Putere: {GOLD}{COMMA16}cp{}{BLACK}Cost rulare: {GOLD}{CURRENCY}/an{}{BLACK}Capacitate: {GOLD}{STRING}{}{BLACK}An aparitie: {GOLD}{NUMU16}{BLACK} Vârstã: {GOLD}{COMMA16} ani{}{BLACK}Eficientã max.: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Greutate: {GOLD}{COMMA16}t{}{BLACK}Viteza: {GOLD}{VELOCITY}{BLACK} Putere: {GOLD}{COMMA32}cp{}{BLACK}Cost operational: {GOLD}{CURRENCY}/an{}{BLACK}Capacitate: {GOLD}{STRING}{}{BLACK}Design in: {GOLD}{NUMU16}{BLACK} Varsta: {GOLD}{COMMA16} ani{}{BLACK}Eficienta max.: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informatii
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Tren prea lung
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Trenurile pot fi modificate doar când se aflã într-un depou
|
||||
@@ -2653,6 +2675,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nu pot redenumi aeronava...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Redenumeste aeronava
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Cetãtenii sãrbãtoresc {}sosirea primei aeronave la {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Accident aviatic!{}{COMMA16} victime în urma prãbusirii de la {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accident aerian!{}Aeronava in pana de combustibil, {COMMA16} victime in urma dezastrulu!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinatii:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Redenumire
|
||||
@@ -2722,6 +2745,15 @@ STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Nu exista fisiere newgrf instalate! Ci
|
||||
STR_NEWGRF_FILENAME :{BLACK}Nume fisier:
|
||||
STR_NEWGRF_GRF_ID :{BLACK}ID GRF:
|
||||
|
||||
STR_CURRENCY_WINDOW :{WHITE}Moneda proprie
|
||||
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Curs de schimb: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
|
||||
STR_CURRENCY_SEPARATOR :{LTBLUE}Separator:
|
||||
STR_CURRENCY_PREFIX :{LTBLUE}Prefix:
|
||||
STR_CURRENCY_SUFFIX :{LTBLUE}Sufix:
|
||||
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Adera la Euro: {ORANGE}{INT32}
|
||||
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Adera la Euro: {ORANGE}niciodata
|
||||
STR_CURRENCY_PREVIEW :{LTBLUE}Previzualizare: {ORANGE}{CURRENCY}
|
||||
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Schimba un parametru al monedei proprii
|
||||
|
||||
STR_TRAIN :{BLACK}{TRAIN}
|
||||
STR_LORRY :{BLACK}{LORRY}
|
||||
@@ -2737,3 +2769,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Afiseaza toate trenurile care opresc in ace
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Afiseaza toate autovehiculele care opresc in aceasta statie
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Afiseaza toate aeronavele care opresc in aceasta statie
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Afiseaza toate navele care opresc in aceasta statie
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Inlocuieste vehicule
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Inlocuire vehicule
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Incepere inlocuire vehicule
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Oprire inlocuire vehicuke
|
||||
STR_NOT_REPLACING :{BLACK}Neinlocuire
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nici un vehicul selectat
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Alege tipul de vehicul pentru inlocuire
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Alege noul tip de vehicul cu care doresti sa inlocuiesti tipul de vehicul din stanga
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Apasa acest buton daca nu doresti sa inlocuiesti vehiculele selectate in stanga
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Apasa acest buton daca doresti sa inlocuiesti vehiculele selectate in stanga cu cele selectate in dreapta
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Alege un tip de cale ferata pentru care sa selectezi vehiculele
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Afiseaza cu ce model vor fi inlocuite vehiculele din stanga
|
||||
STR_REPLACE_HELP :{BLACK}Aceasta functie iti permite sa selectezi un model de vehicul si sa-l inlocuiesti cu altul. Schimbarea se va efectua automat la intrarea vehiculului intr-un depou.
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Vehicule feroviare
|
||||
STR_MONORAIL_VEHICLES :Vehicule Monorail
|
||||
STR_MAGLEV_VEHICLES :Vehicule Maglev
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
##name Russian_latin_char
|
||||
##ownname Russkiy
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Takto sa to neda...
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Oblast sa neda vycistit...
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Original design by Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graphics by Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Specialne podakovanie patri:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Specialne Semafory a Semafory {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Stavanie trate na strmych plochach {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Grafika vodnych kanalov {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
|
||||
STR_TRANSLATED_BY :{BLACK} Preklad - gpsoft
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperial (mile)
|
||||
STR_013A_METRIC_KILOMETERS :Metric (kilometre)
|
||||
@@ -353,6 +349,8 @@ STR_015E_QUIT_GAME :Koniec hry
|
||||
STR_015F_QUIT :Ukoncit program
|
||||
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Si si isty ze chces ukoncit tuto hru ?
|
||||
STR_0161_QUIT_GAME :{WHITE}Koniec hry
|
||||
STR_SORT_ORDER_TIP :{BLACK}Vyber sposob triedenia (zostupny/vzostupny)
|
||||
STR_SORT_CRITERIA_TIP :{BLACK}Vyber, podla coho sa ma triedit
|
||||
SRT_SORT_BY :{BLACK}Usporiadat podla
|
||||
|
||||
STR_SORT_BY_POPULATION :{BLACK}Populacia
|
||||
@@ -417,6 +415,8 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
|
||||
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nieje mozne zmenit servisny interval...
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Zavriet okno
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Nadpis okna - potiahni pre posun okna
|
||||
STR_STICKY_BUTTON :{BLACK}Oznacit toto okno, aby sa nedalo zatvorit klavesou 'Zavri vsetky okna'
|
||||
STR_RESIZE_BUTTON :{BLACK}Uchop a tahaj pre zmenu velkosti okna
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Zburanie budov, cistenie terenu
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Znizit roh terenu
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Zvysit roh terenu
|
||||
@@ -539,6 +539,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Vybrat 'Novy styl'
|
||||
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vybrat 'Vlastny 1' (uzivatelom definovany) program
|
||||
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vybrat 'Vlastny 2' (uzivatelom definovany) program
|
||||
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Vymazat aktualny program (len Vlastny 1 a Vlastny 2 program)
|
||||
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Ulozit nastavenie hudby
|
||||
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Kliknut na stopu pre ulozenie (len Vlastny 1 a Vlastny 2 program)
|
||||
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zapnut / Vypnut nahodny vyber
|
||||
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zobrazit okno pre vyber hudobnych stop
|
||||
@@ -563,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Zmeny prijmu nakladu
|
||||
STR_020E_SUBSIDIES :{YELLOW}Dotacie
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Hlavne informacie
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...prilis daleko z predchadzajuceho ciela
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Najlepsie spolocnosti ktore dosiahli rok 2050{}({STRING} Uroven)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Najlepsie spolocnosti, ktore dosiahli {NUMU16}{}({STRING} uroven)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tabulka spolocnosti v roku {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Obchodnik
|
||||
STR_0214_ENTREPRENEUR :Podnikatel
|
||||
@@ -572,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalista
|
||||
STR_0217_MAGNATE :Magnat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} dosiahol '{STRING}' stav!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} dosiahnuti {STRING} '{STRING}' stavu!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} ziskal oznacenie '{STRING}' !
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} z {STRING} ziskal oznacenie '{STRING}' !
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -723,6 +726,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Nazvy vozidiel
|
||||
STR_02BD :{BLACK}{STRING}
|
||||
STR_02BE_DEFAULT :Vychodzie
|
||||
STR_02BF_CUSTOM :Vlastne
|
||||
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Ulozit vlastne nazvy
|
||||
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Vyber nazvu vozidiel
|
||||
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Ulozit vlastne nazvy vozidiel na disk
|
||||
|
||||
@@ -768,6 +772,7 @@ STR_02DD_SUBSIDIES :Dotacie
|
||||
STR_02DE_MAP_OF_WORLD :Mapa sveta
|
||||
STR_EXTRA_VIEW_PORT :Extra pohlad
|
||||
STR_02DF_TOWN_DIRECTORY :Zoznam miest
|
||||
STR_TOWN_POPULATION :{BLACK}Svetova populacia: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pohlad {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Nastavit pohlad podla mapy
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Nastavit pohlad podla hlavneho pohladu
|
||||
@@ -797,13 +802,16 @@ STR_02F8_EVERY_3_MONTHS :Kazde 3 mesiace
|
||||
STR_02F9_EVERY_6_MONTHS :Kazdych 6 mesiacov
|
||||
STR_02FA_EVERY_12_MONTHS :Kazdych 6 mesiacov
|
||||
STR_02FB_START_A_NEW_GAME :{BLACK}Spustit novu hru
|
||||
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Nacitat ulozenu hru
|
||||
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Pozriet Vyucbu/ukazky
|
||||
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Vytvorit vlastny svet / scenar
|
||||
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Vyber jednouzivatelskej hry
|
||||
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Vyberte hru pre 2-8 hracov
|
||||
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Zobraz nastavenia hry
|
||||
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Zobraz nastavenia obtiaznosti
|
||||
STR_0303_START_A_NEW_GAME_USING :{BLACK}Spustit novu hru z pouzitim vlastneho scenara
|
||||
STR_0304_QUIT :{BLACK}Ukoncit program
|
||||
STR_0305_QUIT_OPENTTD :{BLACK}Ukoncit 'OpenTTD'
|
||||
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Pozriet Vyucbu/ukazky
|
||||
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
|
||||
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...moze byt postavene len v meste
|
||||
@@ -819,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Financovat novy priemysel
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financovat novy priemysel
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...moze byt postavene len v meste
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...moze byt postavene len v dazdovom pralese
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...moze byt postavene len v pusti
|
||||
@@ -841,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Anglicke
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglicke
|
||||
STR_TOWNNAME_FRENCH :Francuzke
|
||||
STR_TOWNNAME_GERMAN :Nemecke
|
||||
STR_TOWNNAME_AMERICAN :Americke
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglicke (Dalsie)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latinsko-Americke
|
||||
STR_TOWNNAME_SILLY :Hlupe (anglicky)
|
||||
STR_TOWNNAME_SWEDISH :Svedske
|
||||
@@ -852,29 +860,39 @@ STR_TOWNNAME_DUTCH :Holandske
|
||||
STR_TOWNNAME_FINNISH :Finske
|
||||
STR_TOWNNAME_POLISH :Polske
|
||||
STR_TOWNNAME_SLOVAKISH :Slovenske
|
||||
STR_TOWNNAME_NORWEGIAN :Norske
|
||||
STR_TOWNNAME_HUNGARIAN :Madarske
|
||||
STR_TOWNNAME_AUSTRIAN :Rakuske
|
||||
STR_TOWNNAME_ROMANIAN :Rumunske
|
||||
STR_TOWNNAME_CZECH :Ceske
|
||||
STR_TOWNNAME_SWISS :Svajciarske
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Libry ({POUNDSIGN})
|
||||
STR_CURR_USD :Dolare ($)
|
||||
STR_CURR_EUR :Euro (¤)
|
||||
STR_CURR_YEN :Jeny ({YENSIGN})
|
||||
STR_CURR_ATS :Rakuske Silingy (ATS)
|
||||
STR_CURR_BEF :Belgicke Franky (BEF)
|
||||
STR_CURR_CHF :Svajciarske Franky (CHF)
|
||||
STR_CURR_CZK :Ceske Koruny (CZK)
|
||||
STR_CURR_DEM :Nemecke marky(DEM)
|
||||
STR_CURR_DKK :Danske Koruny (DKK)
|
||||
STR_CURR_ESP :Pesety (ESP)
|
||||
STR_CURR_FIM :Finske Marky (FIM)
|
||||
STR_CURR_FRF :Franky (FRF)
|
||||
STR_CURR_GRD :Grecke Drachny (GRD)
|
||||
STR_CURR_HUF :Madarske Forinty (HUF)
|
||||
STR_CURR_ISK :Islandske Koruny (ISK)
|
||||
STR_CURR_ITL :Talianske Liry (ITL)
|
||||
STR_CURR_NLG :Danske Guldeny (NLG)
|
||||
STR_CURR_NOK :Norske Koruny (NOK)
|
||||
STR_CURR_PLN :Polske Zloty (PLN)
|
||||
STR_CURR_ROL :Rumunske Lei
|
||||
STR_CURR_RUR :Rusle Ruble (rur)
|
||||
STR_CURR_SEK :Svedske Koruny (SEK)
|
||||
|
||||
STR_CURR_CUSTOM :Vlasne...
|
||||
|
||||
STR_OPTIONS_LANG :{BLACK}Jazyk
|
||||
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
@@ -962,7 +980,8 @@ STR_CONFIG_PATCHES_OFF :Vyp.
|
||||
STR_CONFIG_PATCHES_ON :Zap.
|
||||
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Zobraz rychlost vozidla v stavovej liste: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Umoznit vystavbu na sikmine a pobrezi: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Umoznit odstranenie viacerych mestskych ciest, mostov, tunelov, etc: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Povolit v oblasti pokrytia realistickejsiu velkost: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Umoznit odstranenie viacerych mestskych ciest, mostov, atd.: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Umoznit stavbu dlhych vlakov: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Zapnut realnu akceleraciu vlakov: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Umoznit spajat stanice: {ORANGE}{STRING}
|
||||
@@ -989,7 +1008,7 @@ STR_CONFIG_PATCHES_NEW_TRAIN_PATHFIND :{LTBLUE}Novy algoritmus pre hladanie s
|
||||
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Vzdy povolit male letiska: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Vlak sa strati pokial nic nedosiahne za: {ORANGE}{STRING} dni
|
||||
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Vlak bude zruzeny ak neurobi zisk za: {ORANGE}vypnute
|
||||
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Vlak bude zruseny, ak neurobi zisk za: {ORANGE}vypnute
|
||||
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Obnovenie prikazu vozidla: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :nie
|
||||
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :ano, okrem zastavenych vozidiel (v garazi)
|
||||
@@ -997,12 +1016,13 @@ STR_CONFIG_PATCHES_ORDER_REVIEW_ON :ano, u vsetkych vozidiel
|
||||
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Upozornit na stratu vlaku: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Stare vozidla sa neprestanu vyrabat: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automaticka obnova dopravnych prostriedkov, ked su stare
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Obnovit vozidlo {ORANGE}{STRING}{LTBLUE} mesiacov pred/po dosiahnuti maximalneho veku
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimalny pocet penazi pre automaticke obnovovanie vozidiel: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Obnovit vozidlo {ORANGE}{STRING}{LTBLUE} mesiacov pred/po dosiahnuti max. veku
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Min. mnozstvo penazi pre automaticke obnovovanie vozidiel: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Dlzka zobrazenia chybovej spravy: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Zobrazit populaciu mesta v jeho nazve: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Neviditelne stromy (pri priesvitnych budovach): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Uroven ciary snehu: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximalne pokrytie stanice: {ORANGE}{STRING} {RED}Vystraha: Vysoke hodnoty spomaluju hru
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max. pokrytie stanice: {ORANGE}{STRING} {RED}Pozor: Vysoke hodnoty spomaluju hru
|
||||
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Automaticke opravy vrtulnikov v heliporte: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Maximalny pocet vlakov hraca: {ORANGE}{STRING}
|
||||
@@ -1025,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Imlicitny servisny interval pre
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Implicitny servisny interval pre lietadla: {ORANGE}vypnuty
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Implicitny servisny interval pre lode: {ORANGE}{STRING} dni/%
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Implicitny servisny interval pre lode: {ORANGE}vypnuty
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Vypnut servisy, ak su vypnute poruchy: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farebne novinky sa objavia v roku: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Datum zaciatku hry: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Ukoncit hru v roku: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Mierne zmeny ekonomiky (viac mensich zmien)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Povolit nakup akcii od ostatnych spolocnosti
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging place signals every: {ORANGE}{STRING} tile(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pozicia hlavneho menu: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Na lavo
|
||||
@@ -1072,6 +1095,7 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Smeruje do {WAYPOINT}
|
||||
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Smeruje do {WAYPOINT}, {VELOCITY}
|
||||
|
||||
STR_GO_TO_WAYPOINT :Chod cez {WAYPOINT}
|
||||
STR_GO_NON_STOP_TO_WAYPOINT :Chod bez zastavky cez {WAYPOINT}
|
||||
|
||||
STR_WAYPOINTNAME_CITY :Smerovy bod {TOWN}
|
||||
STR_WAYPOINTNAME_CITY_SERIAL :Smerovy bod {TOWN} #{COMMA16}
|
||||
@@ -1101,6 +1125,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Vela nahodneho priemyslu
|
||||
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Pokryt mapu s nahodne umiestnenym priemyslom
|
||||
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nemozem vygenerovat priemysel
|
||||
|
||||
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Otvorit panel nastrojov pre zvysenie/znizenie terenu, vysadzby stromov, atd.
|
||||
STR_LANDSCAPING_TOOLBAR :{WHITE}Zmena terenu
|
||||
STR_LEVEL_LAND_TOOLTIP :{BLACK}Menit teren
|
||||
|
||||
@@ -1116,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Tu sa neda postavit stavidlo...
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Postavit stavidla...
|
||||
STR_LANDINFO_LOCK :Stavidlo
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... boja sa pouziva!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Suradnice: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nemozno odstranit cast stanice...
|
||||
@@ -1167,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Vybrat typ prepravovaneho nakladu
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Prerobit vlak na prepravu vybraneho nakladu
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nemozno prerobit vlak...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Servisne intervaly su v percentach: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmenit produkciu
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Vitajte v novom AI. Mozete ocakavat problemy. Ak by nejake nastali urobte screenshot a poslite ho na forum.
|
||||
TEMP_AI_ACTIVATED :{WHITE}Varovanie: toto nove AI je iba alpha verzia! Momentalne iba automobily funguju!
|
||||
@@ -1204,12 +1232,13 @@ STR_NETWORK_LANGUAGE :{SILVER}Jazyk: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Prostredie: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Velkost mapy: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Verzia servera: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa servera: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa servera: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Datum zaciatku: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Aktualny date: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Heslo:
|
||||
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER JE OFFLINE
|
||||
STR_NETWORK_SERVER_FULL :{SILVER}SERVER JE PLNY
|
||||
STR_NETWORK_VERSION_MISMATCH :{SILVER}ROZNE VERZIE
|
||||
|
||||
STR_NETWORK_JOIN_GAME :{BLACK}Pripojit sa
|
||||
|
||||
@@ -1224,8 +1253,12 @@ STR_NETWORK_SELECT_MAP :{BLACK}Vyber mapu:
|
||||
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ktoru mapu chces hrat?
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maximalny pocet klientov:
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Zvol maximalny pocet klientov. Moze sa ich pripojit aj menej.
|
||||
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_LAN :LAN
|
||||
STR_NETWORK_INTERNET :Internet
|
||||
STR_NETWORK_LAN_INTERNET :LAN / Internet
|
||||
STR_NETWORK_INTERNET_ADVERTISE :Internet (oznamit)
|
||||
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_2_CLIENTS :2 klienti
|
||||
STR_NETWORK_3_CLIENTS :3 klienti
|
||||
STR_NETWORK_4_CLIENTS :4 klienti
|
||||
@@ -1237,7 +1270,7 @@ STR_NETWORK_9_CLIENTS :9 klientov
|
||||
STR_NETWORK_10_CLIENTS :10 klientov
|
||||
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Jazyk hracov:
|
||||
STR_NETWORK_LANGUAGE_TIP :{BLACK}Aby ostatni hraci vedeli, akym jazykom sa bude hovorit na serveri.
|
||||
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_START_GAME :{BLACK}Spustit hru
|
||||
STR_NETWORK_START_GAME_TIP :{BLACK}Zacat sietovu hru z nahodnej mapy alebo scenaria
|
||||
STR_NETWORK_LOAD_GAME :{BLACK}Nacitat hru
|
||||
@@ -1286,6 +1319,7 @@ STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Overovanie..
|
||||
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Cakam..
|
||||
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Stahovanie mapy..
|
||||
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Spracovanie dat..
|
||||
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registracia..
|
||||
|
||||
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Prijem informacii o hre..
|
||||
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Prijem informacii o spolocnosti..
|
||||
@@ -1314,7 +1348,9 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Chyba vznikla v protokole a spojenie j
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revizia hry u tohto klienta nezodpoveda revizii hry na serveri.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Chybne heslo.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Server je plny
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Si zablokovany na tomto serveri
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Bol si vyhodeny z hry
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Cheatovanie nie je povolene na tomto serveri
|
||||
|
||||
STR_NETWORK_ERR_LEFT :opustil hru
|
||||
############ Leave those lines in this order!!
|
||||
@@ -1330,15 +1366,32 @@ STR_NETWORK_ERR_CLIENT_NAME_IN_USE :meno sa uz pouziva
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :chybne heslo
|
||||
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :chybne id hraca v DoCommand
|
||||
STR_NETWORK_ERR_CLIENT_KICKED :vyhodeny zo servera
|
||||
STR_NETWORK_ERR_CLIENT_CHEATER :sa pokusal cheatovat
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CLIENT_JOINED :vstupil do hry
|
||||
STR_NETWORK_GIVE_MONEY :ti dal nejake peniaze ({CURRENCY})
|
||||
STR_NETWORK_GAVE_MONEY_AWAY :dal si {STRING} nejake penazi ({CURRENCY})
|
||||
STR_NETWORK_CHAT_COMPANY :[Tim] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_COMPANY :[Tim] pre {STRING}:
|
||||
STR_NETWORK_CHAT_CLIENT :[Osobny] {STRING}:
|
||||
STR_NETWORK_CHAT_TO_CLIENT :[Privatny] pre {STRING}:
|
||||
STR_NETWORK_CHAT_ALL :[Vsetci] {STRING}:
|
||||
STR_NETWORK_NAME_CHANGE :si zmenil meno na
|
||||
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Server ukoncil relaciu
|
||||
STR_NETWORK_SERVER_REBOOT :{WHITE} Server sa restartuje...{}Cakajte prosim...
|
||||
|
||||
STR_NETWORK_SERVER :Server
|
||||
STR_NETWORK_CLIENT :Klient
|
||||
|
||||
STR_NETWORK_CLIENTLIST_NONE :(nikto)
|
||||
STR_NETWORK_CLIENTLIST_KICK :Vyhodit
|
||||
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Darovat peniaze
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napisat vsetkym
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napisat pre spolocnost
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privatna sprava
|
||||
|
||||
|
||||
|
||||
STR_NETWORK_SEND :{BLACK}Poslat
|
||||
|
||||
############ end network gui strings
|
||||
|
||||
@@ -1436,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Zeleznicny prejazd
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Mesta
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2026,6 +2080,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sidlo spolocnosti mozes premiestnit
|
||||
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Sidlo spolocnosti sa neda postavit...
|
||||
STR_7072_VIEW_HQ :{BLACK}Pozriet sidlo
|
||||
STR_RELOCATE_HQ :{BLACK}Premiestnit sidlo
|
||||
STR_COMPANY_PASSWORD :{BLACK}Heslo
|
||||
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Heslo-ochrana vasej spolocnosti proti neautorizovanemu pripojeniu hracov
|
||||
STR_SET_COMPANY_PASSWORD :Nastavte heslo spolocnosti
|
||||
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Svetova kriza!{}{}Financni experti maju obavy z prepadu ekonomiky!
|
||||
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Koniec krizy!{}{}Ocakava sa vzostup predaja a posilnenie ekonomiky!
|
||||
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Prepinac velkosti okna
|
||||
@@ -2039,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}25% podiel v tejto spolocnosti sa ne
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% vlastnene {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% vlastnene {STRING}{} {COMMA16}% vlastnene {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} bola kupena spolocnostou {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Tato spolocnost zatial neobchoduje s akciami...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Parny)
|
||||
@@ -2337,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} z {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Vlak {COMMA16} caka v depe
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nove vozidla
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Nosnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Vykon: {GOLD}{COMMA16}hp{}{BLACK}Cena prevadzky: {GOLD}{CURRENCY}/rok{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Navrnute: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} rokov{}{BLACK}Spolahlivost: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Nosnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Vykon: {GOLD}{COMMA32}hp{}{BLACK}Cena prevadzky: {GOLD}{CURRENCY}/rok{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Navrnute: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} rokov{}{BLACK}Spolahlivost: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Informacie
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Vlak je prilis dlhy
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Vlaky sa daju prerobit len v depe
|
||||
@@ -2564,6 +2622,7 @@ STR_GO_TO_SHIP_DEPOT :Chod do {TOWN} Lodenice
|
||||
SERVICE_AT_SHIP_DEPOT :Opravit v {TOWN} Lodenici
|
||||
|
||||
##id 0xA000
|
||||
STR_A000_AIRPORTS :{WHITE}Letiska
|
||||
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Tu sa letisko neda postavit...
|
||||
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar
|
||||
STR_A003_NEW_AIRCRAFT :{BLACK}Nove Lietadlo
|
||||
@@ -2617,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nemozno pomenovat lietadlo...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Pomenovat lietadlo
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Mesto oslavuje . . .{}Prve lietadlo pristalo na {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Letecka havaria!{}{COMMA16} mrtvych pri poziari na {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Letecka havaria!{}Lietadlu doslo palivo, {COMMA16} mrtvych pri poziari!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Ciele:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Premenovat
|
||||
@@ -2686,6 +2746,15 @@ STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Nie su nainstalovane ziadne subory s n
|
||||
STR_NEWGRF_FILENAME :{BLACK}Nazov suboru:
|
||||
STR_NEWGRF_GRF_ID :{BLACK}ID GRF:
|
||||
|
||||
STR_CURRENCY_WINDOW :{WHITE}Vlastna mena
|
||||
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurz meny: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
|
||||
STR_CURRENCY_SEPARATOR :{LTBLUE}Oddelovac:
|
||||
STR_CURRENCY_PREFIX :{LTBLUE}Predpona:
|
||||
STR_CURRENCY_SUFFIX :{LTBLUE}Pripona:
|
||||
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Prechod na Euro: {ORANGE}{INT32}
|
||||
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Prechod na Euro: {ORANGE}nikdy
|
||||
STR_CURRENCY_PREVIEW :{LTBLUE}Nahlad: {ORANGE}{CURRENCY}
|
||||
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Zmenit parametre vlastnej meny
|
||||
|
||||
STR_TRAIN :{BLACK}{TRAIN}
|
||||
STR_LORRY :{BLACK}{LORRY}
|
||||
@@ -2697,3 +2766,32 @@ STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Auta
|
||||
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Lietadla
|
||||
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Lode
|
||||
|
||||
STR_SCHEDULED_TRAINS_TIP :{BLACK}Zobrazit vsetky vlaky, ktore maju tuto stanicu v cestovnom poriadku
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Zobrazit vsetky auta, ktore maju tuto stanicu v cestovnom poriadku
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Zobrazit vsetky lietadla, ktore maju tuto stanicu v cestovnom poriadku
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Zobrazit vsetky lode, ktore maju tuto stanicu v cestovnom poriadku
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Vymena vozidiel
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Vymena vozidiel
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Zacat vymenu vozidiel
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Zastavit vymenu vozidiel
|
||||
STR_NOT_REPLACING :{BLACK}Nevymiena sa
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nie je oznacene vozidlo
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vyber typ lokomotivy na vymenu
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vyber typ novej lokomotivy, ktoru chces pouzit namiesto typu v lavom zozname
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Stlac toto tlacidlo, ak nechces vymienat typ lokomotivy vybrany v lavom zozname
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Stlac toto tlacidlo, ak chces zacat vymienat typ lokomotivy v lavom zozname za typ lokomotivy v pravom zozname
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Vyber typ kolajnic, pre ktore chces vymienat lokomotivy
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Tu sa zobrazuje, za ktoru lokomotiva sa lokomotiva v lavom zozname zamenuje
|
||||
STR_REPLACE_HELP :{BLACK}Umoznuje vybrat typ lokomotivy, ktory automaticky sa zameni za iny typ, ak vlaky s takouto lokomotivou sa zastavia v depe
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Lokomotiva pre zeleznicu
|
||||
STR_MONORAIL_VEHICLES :Lokomotiva pre jednokolajovku
|
||||
STR_MAGLEV_VEHICLES :Lokomotiva pre magneticku drahu
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}No se puede hacer eso....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}No se puede desbrozar esta zona....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright Original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versión {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Diseño original de Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Gráficos originales de Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Nuestro agradecimiento especial a:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-señales y semáforos {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Carreteras en cuesta {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Gráficos de Canales {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 El equipo OpenTTD
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 El equipo OpenTTD
|
||||
STR_TRANSLATED_BY :{BLACK} Traductor(es) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Imperial (millas)
|
||||
STR_013A_METRIC_KILOMETERS :Métrica (kilómetros)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}No es posible cambiar el intervalo d
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Cerrar ventana
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Título de la ventana - arrastrelo para mover la ventana
|
||||
STR_STICKY_BUTTON :{BLACK}Marcar esta ventana como no borrable para el comando de 'Cerrar Todas las Ventanas'
|
||||
STR_RESIZE_BUTTON :{BLACK}Pulse y arrastre para redimensionar la ventana
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. en un bloque de terreno
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Bajar una esquina del terreno
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Subir una esquina del terreno
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Cambios en la aceptaci
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subvenciones
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Información general
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...demasiado lejano del destino anterior
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top de empresas que han llegado al 2050{}({STRING} nivel)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top de empresas que han alcanzado {NUMU16}{}(Nivel {STRING})
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tabla clasificatoria de empresas en {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Hombre de negocios
|
||||
STR_0214_ENTREPRENEUR :Empresario
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalista
|
||||
STR_0217_MAGNATE :Magnate
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Magnate del siglo
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} alcanza el estatus de '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de {STRING} alcanza el estatus de '{STRING}'!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} logra el estado '{STRING}'!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} de {STRING} logra el estado '{STRING}'!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Configuraci
|
||||
STR_NEWGRF_SETTINGS2 :Configuración Newgrf
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Cerrar TODAS las ventanas
|
||||
STR_CLOSE_ALL_WINDOWS2 :Cerrar TODAS las ventanas
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Ver nombres de poblaciones
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Ver nombres de poblaciones
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Ver nombres de estaciones
|
||||
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fundar nueva industria
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fundar nueva industria
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...sólo se puede construir en poblaciones
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...sólo se puede construir en áreas de selva
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...sólo se puede construir en áreas desérticas
|
||||
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Inglés
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglés
|
||||
STR_TOWNNAME_FRENCH :Francés
|
||||
STR_TOWNNAME_GERMAN :Alemán
|
||||
STR_TOWNNAME_AMERICAN :Americano
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Inglés (Adicional)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latinoamericano
|
||||
STR_TOWNNAME_SILLY :Tontos
|
||||
STR_TOWNNAME_SWEDISH :Sueco
|
||||
@@ -862,10 +859,12 @@ STR_TOWNNAME_DUTCH :Holand
|
||||
STR_TOWNNAME_FINNISH :Finlandés
|
||||
STR_TOWNNAME_POLISH :Polaco
|
||||
STR_TOWNNAME_SLOVAKISH :Eslovaco
|
||||
STR_TOWNNAME_NORWEGIAN :Noruego
|
||||
STR_TOWNNAME_HUNGARIAN :Húngaro
|
||||
STR_TOWNNAME_AUSTRIAN :Austríaco
|
||||
STR_TOWNNAME_ROMANIAN :Rumano
|
||||
STR_TOWNNAME_CZECH :Checo
|
||||
STR_TOWNNAME_SWISS :Suizo
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Libras ({POUNDSIGN})
|
||||
@@ -1019,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Renovaci
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Renovación aut. si tiene {ORANGE}{STRING}{LTBLUE} meses antes/después edad max
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Renovar automát. usando la menor cantidad de dinero: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duración del mensaje de error: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Muestra la población de esta población en esta etiqueta: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Árboles invisibles (con edificios transparentes): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altura de la línea de nieve: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Expansión máxima de est.: {ORANGE}{STRING} {RED}Atención: Valores altos relantizan
|
||||
@@ -1044,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Intervalo de despacho por defect
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Intervalo de despacho por defecto para aviones: {ORANGE}no
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Intervalo de despacho por defecto para barcos: {ORANGE}{STRING} días
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Intervalo de despacho por defecto para barcos: {ORANGE}no
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Desactivar servicio cuando las averías están desactivadas: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Noticias en color aparecen en: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Fecha de inicio: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Fin del juego en: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Activar economía suave (cambios más pequeños)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permitir comprar acciones de otras empresas
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Cuando arrastre colocar señales cada: {ORANGE}{STRING} casilla(s)
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posición de la barra de herramientas principal: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Izquierda
|
||||
@@ -1137,6 +1140,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}No se pueden construir d
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Constuir dársenas
|
||||
STR_LANDINFO_LOCK :Dársena
|
||||
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}No se puede retirar parte de la estación...
|
||||
@@ -1188,6 +1192,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Elegir tipo de carga para que el tr
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Reformar tren para transportar mercancía resaltada
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}No se puede reformar tren...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}intervalo de despachos está en porcentaje: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambiar producción
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Bienvenido a esta nueva IA, en progreso. Puede esperar problemas. Cuando los encuentres, haz una captura de pantalla y envíala al foro. Disfruta!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Atención: esta nueva IA está en fase alpha! Actualmente, solo los camiones y autobuses funcionan!
|
||||
@@ -1225,7 +1230,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Tamaño Mapa: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Versión servidor: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Dirección servidor: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Dirección servidor: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Fecha inicio: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Fecha actual: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Protegido por contraseña!
|
||||
@@ -1341,10 +1346,11 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Se ha producido un error de protocolo
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} La versión de este cliente no corresponde con la versión de este servidor.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Contraseña incorrecta.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} El servidor está lleno
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Has sido baneado de este servidor
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Has sido expulsado de este servidor
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Los cheats (trucos) no son permitidos en este servidor
|
||||
|
||||
STR_NETWORK_ERR_LEFT :has abandonado el juego
|
||||
STR_NETWORK_ERR_LEFT :ha abandonado el juego
|
||||
############ Leave those lines in this order!!
|
||||
STR_NETWORK_ERR_CLIENT_GENERAL :error general
|
||||
STR_NETWORK_ERR_CLIENT_DESYNC :error de desync
|
||||
@@ -1481,6 +1487,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Paso a nivel
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Poblaciones
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2094,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}No se puede vender el 25% de accione
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% propiedad de {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% propiedad de {STRING}{} {COMMA16}% propiedad de {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} ha sido comprada por {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Esta empresa todavía no dispone acciones a la venta...
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor)
|
||||
@@ -2385,7 +2393,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} desde {STATION}
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}El tren {COMMA16} está esperando en el depósito
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nuevos Vehículos
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16} toneladas{}{BLACK}Velocidad: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{COMMA16}cv{}{BLACK}Coste de operación: {GOLD}{CURRENCY}/año{}{BLACK}Capacidad: {GOLD}{STRING}{}{BLACK}Diseñado en: {GOLD}{NUMU16}{BLACK} Vida útil: {GOLD}{COMMA16} años{}{BLACK}Fiabilidad máxima: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16} toneladas{}{BLACK}Velocidad: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{COMMA32}cv{}{BLACK}Coste de operación: {GOLD}{CURRENCY}/año{}{BLACK}Capacidad: {GOLD}{STRING}{}{BLACK}Diseñado en: {GOLD}{NUMU16}{BLACK} Vida útil: {GOLD}{COMMA16} años{}{BLACK}Fiabilidad máxima: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Información
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Tren demasiado largo
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Los trenes únicamente puede ser modificados en el interior de los depósitos
|
||||
@@ -2666,6 +2674,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}No se puede nombrar aeronave...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Nombrar aeronave
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Los ciudadanos celebran . . .{}¡Primera aeronave llega a {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}¡Avión siniestrado!{}{COMMA16} fallecidos en la explosión en {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accidente aéreo!{}La aeronave se quedó sin combustible, {COMMA16} personas mueren en la tragedia!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinos:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Renombrar
|
||||
@@ -2759,3 +2768,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostrar todos los trenes que tienen esta es
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostrar todos los vehículos de carretera que tienen esta estación en su horario
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostrar todos las aeronaves que tienen esta estación en su horario
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostrar todos los barcos que tienen esta estación en su horario
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Reemplazar vehículos
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplazar vehículos
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Empezar a reemplazar vehículos
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Parar de reemplazar vehículos
|
||||
STR_NOT_REPLACING :{BLACK}No reemplazar
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No hay vehículos seleccionados
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Seleccione tipo de locomotora a reemplazar
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Seleccione nuevo tipo de locomotora a usar en vez de la locomotora seleccionada a la izquierda
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Presiona este botón si no quieres reemplazar la locomotora seleccionada en la izquierda
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Presiona este botón si quieres reemplazar la locomotora seleccionada a la izquierda por la seleccionada en la derecha
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Seleccione tipo de rail para seleccionar locomotoras para ese tipo
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Muestra que locomotora será reemplazada
|
||||
STR_REPLACE_HELP :{BLACK}Esta función permite seleccionar un tipo de locomotora y reemplazarla por otra. El cambio se realizará cuando el vehículo llegue al depósito
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Vehículos de rail
|
||||
STR_MONORAIL_VEHICLES :Vehículos monorail
|
||||
STR_MAGLEV_VEHICLES :Vehículos de Lev. Mag.
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Kan inte utf
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan inte röja området...
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig äganderätt {COPYRIGHT} 1995 Chris Sawyer, Alla rättigheter reserverade
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Ursprungligen designat av Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafik av Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Speciella tack till:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Försignaler och Semaforer {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Grunden för järnväg på sluttningar {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal- och slussgrafik {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-teamet
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD-teamet
|
||||
STR_TRANSLATED_BY :{BLACK} Översättare -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
STR_OSNAME_OS2 :OS/2
|
||||
|
||||
STR_0139_IMPERIAL_MILES :Engelsk mil (miles)
|
||||
STR_013A_METRIC_KILOMETERS :Metrisk (kilometer)
|
||||
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan inte
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Stäng fönster
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Fönstertitel - dra för att flytta fönstret
|
||||
STR_STICKY_BUTTON :{BLACK}Markera detta fönster så att det finns kvar även fast man använder 'Stäng alla fönster' knappen
|
||||
STR_RESIZE_BUTTON :{BLACK}Klicka och dra för att förstora fönstret
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv ned byggnader etc. på en ruta mark
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Sänk ett hörn av marken
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Höj upp ett hörn av marken
|
||||
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}
|
||||
STR_020E_SUBSIDIES :{YELLOW}Subventioner
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Generell information
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...för långt från föregående destination
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Bästa företag som nått år 2050{}({STRING} Level)
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached {NUMU16}{}({STRING} Level)
|
||||
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Company League Table in {NUMU16}
|
||||
STR_0212 :{BIGFONT}{COMMA16}.
|
||||
STR_0213_BUSINESSMAN :Affärsman
|
||||
STR_0214_ENTREPRENEUR :Entreprenör
|
||||
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
|
||||
STR_0217_MAGNATE :Magnat
|
||||
STR_0218_MOGUL :Mogul
|
||||
STR_0219_TYCOON_OF_THE_CENTURY :Århundradets Tycoon
|
||||
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} uppnår '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} av {STRING} uppnår '{STRING}' status!
|
||||
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
|
||||
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
|
||||
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} uppnår '{STRING}' status!
|
||||
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} från {STRING} uppnår '{STRING}' status!
|
||||
STR_021D :{BLACK}
|
||||
STR_021E :{WHITE}
|
||||
STR_021F :{BLUE}{COMMA16}
|
||||
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf inst
|
||||
STR_NEWGRF_SETTINGS2 :Newgrf inställningar
|
||||
STR_GAMEOPTMENU_0A :
|
||||
STR_GAMEOPTMENU_0B :
|
||||
STR_CLOSE_ALL_WINDOWS :Stänga alla fönster
|
||||
STR_CLOSE_ALL_WINDOWS2 :Stäng alla fönster
|
||||
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stadsnamn visas
|
||||
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Stadsnamn visas
|
||||
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnamn visas
|
||||
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subventioner
|
||||
STR_02DE_MAP_OF_WORLD :Världskarta
|
||||
STR_EXTRA_VIEW_PORT :Nytt vy fönster
|
||||
STR_02DF_TOWN_DIRECTORY :Lista av städer
|
||||
STR_TOWN_POPULATION :{BLACK}Världsbefolkning: {COMMA32}
|
||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vy fönster {COMMA16}
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiera till vy
|
||||
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiera kartans position till detta Vyfönster
|
||||
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Bekosta ny industri
|
||||
############ range ends here
|
||||
|
||||
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Bekosta ny industri
|
||||
STR_0315 :{STRING}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan bara byggas i städer
|
||||
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan bara byggas i regnskog
|
||||
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan bara byggas på öken
|
||||
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ENGLISH :Engelska
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Engelska
|
||||
STR_TOWNNAME_FRENCH :Franska
|
||||
STR_TOWNNAME_GERMAN :Tyska
|
||||
STR_TOWNNAME_AMERICAN :Amerikanska
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engelska (Extra)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Latinamerikanska
|
||||
STR_TOWNNAME_SILLY :Löjliga
|
||||
STR_TOWNNAME_SWEDISH :Svenska
|
||||
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Holl
|
||||
STR_TOWNNAME_FINNISH :Finska
|
||||
STR_TOWNNAME_POLISH :Polska
|
||||
STR_TOWNNAME_SLOVAKISH :Slovakiska
|
||||
STR_TOWNNAME_NORWEGIAN :Norska
|
||||
STR_TOWNNAME_HUNGARIAN :Hungarianska
|
||||
STR_TOWNNAME_AUSTRIAN :Australienska
|
||||
STR_TOWNNAME_ROMANIAN :Rumänska
|
||||
STR_TOWNNAME_CZECH :Tjeckiska
|
||||
STR_TOWNNAME_SWISS :Schweiziska
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pund ({POUNDSIGN})
|
||||
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}F
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Förnya automatiskt fordon {ORANGE}{STRING}{LTBLUE} månader före/efter maximal ålder
|
||||
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minst mängd pengar i kassan för automatisk förnyelse av fordon: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Hur länge felmeddelanden visas: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Visa befolkningsmängd i stadsnamnet: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Osynliga träd (när genomskinliga byggnader är valt): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snölinjeshöjd: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximal spridning av en station: {ORANGE}{STRING} {RED}Varning: Hög inställning slöar ner spelet
|
||||
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard serviceintervall f
|
||||
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standard serviceintervall för flygplan: {ORANGE}av
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard serviceintervall för skepp: {ORANGE}{STRING} dagar
|
||||
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Default service interval for ships: {ORANGE}av
|
||||
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Disable servicing when breakdowns set to none: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Färgade nyheter visas i: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Startdatum: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Avsluta spelet om: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Lugn ekonomi (flera små ändringar)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillåt inköp av aktier från andra företag
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Vid utdragning av signaler, placera en signal var: {ORANGE}{STRING} ruta
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position av verktygsraden: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vänster
|
||||
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kan ej bygga slussar h
|
||||
STR_BUILD_LOCKS_TIP :{BLACK}Bygg slussar
|
||||
STR_LANDINFO_LOCK :Sluss
|
||||
|
||||
STR_BUOY_IS_IN_USE :{WHITE}... bojen används!
|
||||
|
||||
STR_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
|
||||
|
||||
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan ej ta bort del av station...
|
||||
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}V
|
||||
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Anpassa tåg för att bära vald godstyp
|
||||
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ej anpassa tåg...
|
||||
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Visa serviceintervall i procent: {ORANGE}{STRING}
|
||||
STR_CONFIG_GAME_PRODUCTION :{WHITE}Ändra produktion
|
||||
|
||||
TEMP_AI_IN_PROGRESS :{WHITE}Välkommen till denna nya AI, under uppbyggnad. Du kan räkna med att det finns problem med den. När något sådant händer, ta en skärmdump och lägg ut den på forumet. Mycket nöje!
|
||||
TEMP_AI_ACTIVATED :{WHITE}Varning: den nya AI:n är fortfarande i alpha-stadiet! Just nu funkar bara vägfordon!
|
||||
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Spr
|
||||
STR_NETWORK_TILESET :{SILVER}Klimat: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Kartstorlek: {WHITE}{COMMA16}x{COMMA16}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Serverversion: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradress: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradress: {WHITE}{STRING} : {NUMU16}
|
||||
STR_NETWORK_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Nuvarande datum: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Lösenordsskyddad!
|
||||
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vi gjorde ett protokollfel och v
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Servern har en annan version än denna klient.
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Fel lösenord.
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Servern är full
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Du är bannlyst från den här servern
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Du är utkastad från servern
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Fusk är inte tillåtet på denna server
|
||||
|
||||
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :J
|
||||
|
||||
##id 0x2000
|
||||
STR_2000_TOWNS :{WHITE}Städer
|
||||
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
|
||||
STR_2001 :{WHITE}{STRING}
|
||||
STR_2002 :{TINYFONT}{BLACK}{STRING}
|
||||
STR_2003 :{TINYFONT}{WHITE}{STRING}
|
||||
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan inte s
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA16}% ägd av {STRING})
|
||||
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% ägd av {STRING}{} {COMMA16}% ägd av {STRING})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} har tagits över av {STRING}!
|
||||
STR_7080_PROTECTED :{WHITE}Det här företaget bedriver inte aktiehandel ännu....
|
||||
|
||||
##id 0x8000
|
||||
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Ånga)
|
||||
@@ -2385,13 +2395,13 @@ STR_8813_FROM :{LTBLUE}{CARGO} fr
|
||||
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tåg {COMMA16} väntar i depå
|
||||
STR_8815_NEW_VEHICLES :{BLACK}Nytt fordon
|
||||
STR_8816 :{BLACK}-
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Vikt: {GOLD}{COMMA16}t{}{BLACK}Hastighet: {GOLD}{VELOCITY}{BLACK} Effekt: {GOLD}{COMMA16}hp{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/yr{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Livslängd: {GOLD}{COMMA16} år{}{BLACK}Max. tillförlitlighet: {GOLD}{COMMA8}%
|
||||
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Vikt: {GOLD}{COMMA16}t{}{BLACK}Hastighet: {GOLD}{VELOCITY}{BLACK} Effekt: {GOLD}{COMMA32}hp{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/år{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designår: {GOLD}{NUMU16}{BLACK} Livstid: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
|
||||
STR_8818_INFORMATION :{BLACK}Information
|
||||
STR_8819_TRAIN_TOO_LONG :{WHITE}Tåg för långt
|
||||
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tåg kan bara ändras när det står still inuti en depå
|
||||
STR_881B_TRAINS :{WHITE}{STRING} - {COMMA16} Tåg
|
||||
STR_881C_NEW_RAIL_VEHICLES :{WHITE}Nytt tågfordon
|
||||
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Nytt monorail-Fordon
|
||||
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Nytt monorail-fordon
|
||||
STR_881E_NEW_MAGLEV_VEHICLES :{WHITE}Nytt maglev-Fordon
|
||||
STR_881F_BUILD_VEHICLE :{BLACK}Bygg fordon
|
||||
STR_8820_RENAME :{BLACK}Byt namn på
|
||||
@@ -2457,10 +2467,10 @@ STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}G
|
||||
STR_SERVICE_HINT :{BLACK}Skippa den här ordern om inte servning behövs
|
||||
STR_8859_NEW_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt {STRING} nu tillgängligt!
|
||||
STR_885A :{BLACK}{BIGFONT}{STRING}
|
||||
STR_885B_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kostnad: {CURRENCY} Vikt: {COMMA16}t{}Hastighet: {VELOCITY} Effekt: {COMMA16}hp{}Löpande kostnad: {CURRENCY}/yr{}Kapacitet: {STRING}
|
||||
STR_885B_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kostnad: {CURRENCY} Vikt: {COMMA16}t{}Hastighet: {VELOCITY} Effekt: {COMMA16}hp{}Löpande kostnad: {CURRENCY}/år{}Kapacitet: {STRING}
|
||||
STR_885C_BROKEN_DOWN :{RED}Motorstopp
|
||||
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Ålder: {LTBLUE}{STRING}{BLACK} Löpande kostnad: {LTBLUE}{CURRENCY}/yr
|
||||
STR_885E_WEIGHT_T_POWER_HP_MAX_SPEED :{BLACK}Vikt: {LTBLUE}{COMMA16}t {BLACK}Effekt: {LTBLUE}{COMMA32}hp{BLACK} Max. hastighet: {LTBLUE}{VELOCITY}
|
||||
STR_885E_WEIGHT_T_POWER_HP_MAX_SPEED :{BLACK}Vikt: {LTBLUE}{COMMA16}t {BLACK}Effekt: {LTBLUE}{COMMA32}hp{BLACK} Tophastighet: {LTBLUE}{VELOCITY}
|
||||
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinst detta år: {LTBLUE}{CURRENCY} (förra år: {CURRENCY})
|
||||
STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Tillförlitlighet: {LTBLUE}{COMMA8}% {BLACK}Motorstopp sedan förra service: {LTBLUE}{COMMA16}
|
||||
STR_8861_STOPPED :{RED}Stoppat
|
||||
@@ -2487,13 +2497,13 @@ STR_9004_NEW_VEHICLES :{BLACK}Nytt Fordon
|
||||
STR_9005_INFORMATION :{BLACK}Information
|
||||
STR_9006_NEW_ROAD_VEHICLES :{WHITE}Nytt Vägfordon
|
||||
STR_9007_BUILD_VEHICLE :{BLACK}Bygg Fordon
|
||||
STR_9008_COST_SPEED_RUNNING_COST :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/yr{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
|
||||
STR_9008_COST_SPEED_RUNNING_COST :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/år{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designår: {GOLD}{NUMU16}{BLACK} Livstid: {GOLD}{COMMA16} år{}{BLACK}Max. tillförlitlighet: {GOLD}{COMMA8}%
|
||||
STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan inte bygga vägfordon...
|
||||
STR_900A_MUST_BUILD_ROAD_VEHICLE :{WHITE}Måste bygga bussgarage först
|
||||
STR_900B_ORDERS :{WHITE}{STRING} (Order)
|
||||
STR_900C_DETAILS :{WHITE}{STRING} (Detaljer)
|
||||
STR_900D_AGE_RUNNING_COST_YR :{BLACK}Ålder: {LTBLUE}{STRING}{BLACK} Löpande kostnad: {LTBLUE}{CURRENCY}/yr
|
||||
STR_900E_MAX_SPEED :{BLACK}Max. hastighet: {LTBLUE}{VELOCITY}
|
||||
STR_900E_MAX_SPEED :{BLACK}Tophastighet: {LTBLUE}{VELOCITY}
|
||||
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinst detta år: {LTBLUE}{CURRENCY} (förra år: {CURRENCY})
|
||||
STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Tillförlitlighet: {LTBLUE}{COMMA8}% {BLACK}Motorstopp sedan förra service: {LTBLUE}{COMMA16}
|
||||
STR_9011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Byggt: {LTBLUE}{NUMU16}{BLACK} Värde: {LTBLUE}{CURRENCY}
|
||||
@@ -2522,7 +2532,7 @@ STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}V
|
||||
STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Bygg markerat vägfordon
|
||||
STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt vägfordon tillgängligt!
|
||||
STR_9029 :{BLACK}{BIGFONT}{STRING}
|
||||
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Kostnad: {CURRENCY}{}Hastighet: {VELOCITY}{}Löpande kostnad: {CURRENCY}/yr{}Kapacitet: {STRING}
|
||||
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Kostnad: {CURRENCY}{}Hastighet: {VELOCITY}{}Löpande kostnad: {CURRENCY}/år{}Kapacitet: {STRING}
|
||||
|
||||
STR_902C_NAME_ROAD_VEHICLE :{WHITE}Byt namn på vägfordon
|
||||
STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Kan inte byta namn på vägfordon...
|
||||
@@ -2550,7 +2560,7 @@ STR_9806_CAN_T_BUILD_SHIPS :{WHITE}Kan inte bygga skepp...
|
||||
STR_9807_MUST_BUILD_SHIP_DEPOT_FIRST :{WHITE}Måste bygga skeppsdepå först
|
||||
STR_9808_NEW_SHIPS :{WHITE}Nytt Skepp
|
||||
STR_9809_BUILD_SHIP :{BLACK}Bygg Skepp
|
||||
STR_980A_COST_SPEED_CAPACITY_RUNNING :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Kapacitet: {GOLD}{STRING} {STRING}{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/yr{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
|
||||
STR_980A_COST_SPEED_CAPACITY_RUNNING :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Kapacitet: {GOLD}{STRING} {STRING}{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/år{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
|
||||
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Skepp måste vara stoppat i depå
|
||||
STR_980C_CAN_T_SELL_SHIP :{WHITE}Kan inte sälja skepp...
|
||||
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Kan inte bygga skepp...
|
||||
@@ -2559,7 +2569,7 @@ STR_980F :{WHITE}{STRING}
|
||||
STR_9810_ORDERS :{WHITE}{STRING} (Order)
|
||||
STR_9811_DETAILS :{WHITE}{STRING} (Detaljer)
|
||||
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Ålder: {LTBLUE}{STRING}{BLACK} Löpande kostnad: {LTBLUE}{CURRENCY}/yr
|
||||
STR_9813_MAX_SPEED :{BLACK}Max. hastighet: {LTBLUE}{VELOCITY}
|
||||
STR_9813_MAX_SPEED :{BLACK}Tophastighet: {LTBLUE}{VELOCITY}
|
||||
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinst detta år: {LTBLUE}{CURRENCY} (förra år: {CURRENCY})
|
||||
STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Tillförlitlighet: {LTBLUE}{COMMA8}% {BLACK}Motorstopp sedan förra service: {LTBLUE}{COMMA16}
|
||||
STR_9816_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Byggt: {LTBLUE}{NUMU16}{BLACK} Värde: {LTBLUE}{CURRENCY}
|
||||
@@ -2587,7 +2597,7 @@ STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Skicka skepp till dep
|
||||
STR_982B_SHOW_SHIP_DETAILS :{BLACK}Visa skeppdetaljer
|
||||
STR_982C_NEW_SHIP_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt skepp tillgängligt!
|
||||
STR_982D :{BLACK}{BIGFONT}{STRING}
|
||||
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max hastighet: {VELOCITY}{}Kapacitet: {STRING}{}Löpande kostnad: {CURRENCY}/år
|
||||
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Tophastighet: {VELOCITY}{}Kapacitet: {STRING}{}Löpande kostnad: {CURRENCY}/år
|
||||
STR_982F_NAME_SHIP :{BLACK}Byt namn på skepp
|
||||
|
||||
STR_9831_NAME_SHIP :{WHITE}Byt namn på skepp
|
||||
@@ -2619,14 +2629,14 @@ STR_A003_NEW_AIRCRAFT :{BLACK}Nytt Flygplan
|
||||
STR_A004_INFORMATION :{BLACK}Information
|
||||
STR_A005_NEW_AIRCRAFT :{WHITE}Nytt Flygplan
|
||||
STR_A006_BUILD_AIRCRAFT :{BLACK}Bygg Flygplan
|
||||
STR_A007_COST_SPEED_CAPACITY_PASSENGERS :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Kapacitet: {GOLD}{COMMA16} passagerare, {COMMA16} postsäckar{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/yr{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
|
||||
STR_A007_COST_SPEED_CAPACITY_PASSENGERS :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Kapacitet: {GOLD}{COMMA16} passagerare, {COMMA16} postsäckar{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/år{}{BLACK}Designår: {GOLD}{NUMU16}{BLACK} Livstid: {GOLD}{COMMA16} år{}{BLACK}Max. tillförlitlighet: {GOLD}{COMMA8}%
|
||||
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Kan inte bygga flygplan...
|
||||
STR_A009_AIRCRAFT :{WHITE}{STRING} - {COMMA16} Flygplan
|
||||
STR_A00A :{WHITE}{STRING}
|
||||
STR_A00B_ORDERS :{WHITE}{STRING} (Order)
|
||||
STR_A00C_DETAILS :{WHITE}{STRING} (Detaljer)
|
||||
STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Ålder: {LTBLUE}{STRING}{BLACK} Löpande kostnad: {LTBLUE}{CURRENCY}/yr
|
||||
STR_A00E_MAX_SPEED :{BLACK}Max. hastighet: {LTBLUE}{VELOCITY}
|
||||
STR_A00E_MAX_SPEED :{BLACK}Tophastighet: {LTBLUE}{VELOCITY}
|
||||
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinst detta år: {LTBLUE}{CURRENCY} (förra år: {CURRENCY})
|
||||
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Tillförlitlighet: {LTBLUE}{COMMA8}% {BLACK}Motorstopp sedan förra service: {LTBLUE}{COMMA16}
|
||||
STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Byggt: {LTBLUE}{NUMU16}{BLACK} Värde: {LTBLUE}{CURRENCY}
|
||||
@@ -2659,13 +2669,14 @@ STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Skicka flygplan till hangar
|
||||
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Visa flygplan detaljer
|
||||
STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt flygplan tillgängligt!
|
||||
STR_A02D :{BLACK}{BIGFONT}{STRING}
|
||||
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max hastighet: {VELOCITY}{}Kapacitet: {COMMA16} passagerare, {COMMA16} postsäckar{}Löpande kostnad: {CURRENCY}/år
|
||||
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Tophastighet: {VELOCITY}{}Kapacitet: {COMMA16} passagerare, {COMMA16} postsäckar{}Löpande kostnad: {CURRENCY}/år
|
||||
|
||||
STR_A030_NAME_AIRCRAFT :{WHITE}Byt namn på flygplan
|
||||
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan inte byta namn på flygplan...
|
||||
STR_A032_NAME_AIRCRAFT :{BLACK}Byt namn på flygplan
|
||||
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Invånarna firar . . .{}Första flygplanet ankommer till {STATION}!
|
||||
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Flygplanskrasch!{}{COMMA16} dör i eldklot på {STATION}
|
||||
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Flygplanskrasch!{}Flygplanet fick slut på bränsle, {COMMA16} dör i eldklot!
|
||||
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinationer:
|
||||
STR_A036 :{TINYFONT}{BLACK}{STATION}
|
||||
STR_A037_RENAME :{BLACK}Byt namn på
|
||||
@@ -2759,3 +2770,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Visa alla t
|
||||
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Visa alla vägfordon där denna station finns med i rutten
|
||||
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Visa alla flygplan där denna station finns med i rutten
|
||||
STR_SCHEDULED_SHIPS_TIP :{BLACK}Visa alla skepp där denna station finns med i rutten
|
||||
|
||||
STR_REPLACE_VEHICLES :{BLACK}Byt ut fordon
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Byt ut fordon
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Börja byta ut fordon
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Sluta byta ut fordon
|
||||
STR_NOT_REPLACING :{BLACK}Byter inte ut
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Inget fordon valt
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Välj fordonstyp att byta ut
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Välj den nya fordonstyp du vill använda i stället för den till vänster valda typen
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryck för att sluta byta ut fordonstypen vald på vänster sida
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Tryck för att börja byta ut fordonstypen vald på vänster sida med fordonstypen på höger sida
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Välj järnvägstyp för att byta ut fordon
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Visa vilket fordon, det vänstra fordonet byts ut till, om något
|
||||
STR_REPLACE_HELP :{BLACK}Detta gör det möjligt att byta ut en fordonstyp med en annan typ, när tågen av den ursprungliga typen anländer till en depå
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Järnvägsfordon
|
||||
STR_MONORAIL_VEHICLES :Monorail-fordon
|
||||
STR_MAGLEV_VEHICLES :Maglevfordon
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
|
||||
|
||||
@@ -1,473 +0,0 @@
|
||||
##name Turkish
|
||||
##ownname Türkçe
|
||||
|
||||
##id 0x0000
|
||||
STR_NULL :
|
||||
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Harita Siniri
|
||||
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Harita sinirina çok yakin
|
||||
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Yetersiz Nakit- Gereken {CURRENCY}
|
||||
STR_0004 :{WHITE}{CURRENCY64}
|
||||
STR_0005 :{RED}{CURRENCY64}
|
||||
STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zeminin düz olmasi gerekiyor
|
||||
STR_0008_WAITING :{BLACK}Bekliyor: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{STRING}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (Tasindigi Istasyon:
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Kabul: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Kabul: {GOLD}
|
||||
STR_000E :
|
||||
STR_000F_PASSENGERS :Yolcu
|
||||
STR_0010_COAL :Kömür
|
||||
STR_0011_MAIL :Posta
|
||||
STR_0012_OIL :Petrol
|
||||
STR_0013_LIVESTOCK :Hayvansal Ürünler
|
||||
STR_0014_GOODS :Mamül Madde
|
||||
STR_0015_GRAIN :Hububat
|
||||
STR_0016_WOOD :Agaç
|
||||
STR_0017_IRON_ORE :Demir
|
||||
STR_0018_STEEL :Çelik
|
||||
STR_0019_VALUABLES :Mücevherat
|
||||
STR_001A_COPPER_ORE :Bakir
|
||||
STR_001B_MAIZE :Maize
|
||||
STR_001C_FRUIT :Meyve
|
||||
STR_001D_DIAMONDS :Elmas
|
||||
STR_001E_FOOD :Gida
|
||||
STR_001F_PAPER :Kagit
|
||||
STR_0020_GOLD :Altin
|
||||
STR_0021_WATER :Su
|
||||
STR_0022_WHEAT :Bugday
|
||||
STR_0023_RUBBER :Kauçuk
|
||||
STR_0024_SUGAR :Seker
|
||||
STR_0025_TOYS :Oyuncak
|
||||
STR_0026_CANDY :Sekerleme
|
||||
STR_0027_COLA :Kola
|
||||
STR_0028_COTTON_CANDY :Pamuk Helva
|
||||
STR_0029_BUBBLES :Köpükçük
|
||||
STR_002A_TOFFEE :Tofita
|
||||
STR_002B_BATTERIES :Pil
|
||||
STR_002C_PLASTIC :Plastik
|
||||
STR_002D_FIZZY_DRINKS :Fizzy Gazozu
|
||||
STR_002E :
|
||||
STR_002F_PASSENGER :Yolcu
|
||||
STR_0030_COAL :Kömür
|
||||
STR_0031_MAIL :Posta
|
||||
STR_0032_OIL :Petrol
|
||||
STR_0033_LIVESTOCK :Hayvansal Ürün
|
||||
STR_0034_GOODS :Mamül Madde
|
||||
STR_0035_GRAIN :Hububat
|
||||
STR_0036_WOOD :Agaç
|
||||
STR_0037_IRON_ORE :Demir
|
||||
STR_0038_STEEL :Çelik
|
||||
STR_0039_VALUABLES :Mücevherat
|
||||
STR_003A_COPPER_ORE :Bakir
|
||||
STR_003B_MAIZE :Maize
|
||||
STR_003C_FRUIT :Meyve
|
||||
STR_003D_DIAMOND :Elmas
|
||||
STR_003E_FOOD :Gida
|
||||
STR_003F_PAPER :Kagit
|
||||
STR_0040_GOLD :Altin
|
||||
STR_0041_WATER :Su
|
||||
STR_0042_WHEAT :Bugday
|
||||
STR_0043_RUBBER :Kauçuk
|
||||
STR_0044_SUGAR :Seker
|
||||
STR_0045_TOY :Oyuncak
|
||||
STR_0046_CANDY :Tatli
|
||||
STR_0047_COLA :Kola
|
||||
STR_0048_COTTON_CANDY :Pamuk Helva
|
||||
STR_0049_BUBBLE :Köpükçük
|
||||
STR_004A_TOFFEE :Tofita
|
||||
STR_004B_BATTERY :Pil
|
||||
STR_004C_PLASTIC :Plastik
|
||||
STR_004D_FIZZY_DRINK :Fizzy Gazozu
|
||||
STR_004E :
|
||||
STR_004F_PASSENGER :{COMMA16} yolcu
|
||||
STR_0050_TON_OF_COAL :{COMMA16} ton kömür
|
||||
STR_0051_BAG_OF_MAIL :{COMMA16} çanta posta
|
||||
STR_0052_OF_OIL :{VOLUME} petrol
|
||||
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} adet hayvansal ürün
|
||||
STR_0054_CRATE_OF_GOODS :{COMMA16} kasa mamül madde
|
||||
STR_0055_TON_OF_GRAIN :{COMMA16} ton hububat
|
||||
STR_0056_TON_OF_WOOD :{COMMA16} ton agaç
|
||||
STR_0057_TON_OF_IRON_ORE :{COMMA16} ton demir
|
||||
STR_0058_TON_OF_STEEL :{COMMA16} ton çelik
|
||||
STR_0059_BAG_OF_VALUABLES :{COMMA16} çanta mücevherat
|
||||
STR_005A_TON_OF_COPPER_ORE :{COMMA16} ton bakir
|
||||
STR_005B_TON_OF_MAIZE :{COMMA16} ton misir
|
||||
STR_005C_TON_OF_FRUIT :{COMMA16} ton meyve
|
||||
STR_005D_BAG_OF_DIAMONDS :{COMMA16} çanta elmas
|
||||
STR_005E_TON_OF_FOOD :{COMMA16} ton gida
|
||||
STR_005F_TON_OF_PAPER :{COMMA16} ton kagit
|
||||
STR_0060_BAG_OF_GOLD :{COMMA16} çanta altin
|
||||
STR_0061_OF_WATER :{VOLUME} su
|
||||
STR_0062_TON_OF_WHEAT :{COMMA16} ton bugday
|
||||
STR_0063_OF_RUBBER :{VOLUME} of rubber
|
||||
STR_0064_TON_OF_SUGAR :{COMMA16} ton seker
|
||||
STR_0065_TOY :{COMMA16} oyuncak
|
||||
STR_0066_BAG_OF_CANDY :{COMMA16} çanta sekerleme
|
||||
STR_0067_OF_COLA :{VOLUME} kola
|
||||
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} ton pamuk helva
|
||||
STR_0069_BUBBLE :{COMMA16} köpükçük
|
||||
STR_006A_TON_OF_TOFFEE :{COMMA16} ton tofita
|
||||
STR_006B_BATTERY :{COMMA16} pil
|
||||
STR_006C_OF_PLASTIC :{VOLUME} plastik
|
||||
STR_006D_FIZZY_DRINK :{COMMA16} fizzy gazozu
|
||||
STR_006E :
|
||||
STR_006F_PASSENGERS :{COMMA16} yolcu
|
||||
STR_0070_TONS_OF_COAL :{COMMA16} ton kömür
|
||||
STR_0071_BAGS_OF_MAIL :{COMMA16} çanta posta
|
||||
STR_0072_OF_OIL :{VOLUME} petrol
|
||||
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} adet hayvansal ürün
|
||||
STR_0074_CRATES_OF_GOODS :{COMMA16} kasa mamül madde
|
||||
STR_0075_TONS_OF_GRAIN :{COMMA16} ton hububat
|
||||
STR_0076_TONS_OF_WOOD :{COMMA16} ton agaç
|
||||
STR_0077_TONS_OF_IRON_ORE :{COMMA16} ton demir
|
||||
STR_0078_TONS_OF_STEEL :{COMMA16} ton çelik
|
||||
STR_0079_BAGS_OF_VALUABLES :{COMMA16} çanta mücevherat
|
||||
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} ton bakir
|
||||
STR_007B_TONS_OF_MAIZE :{COMMA16} ton misir
|
||||
STR_007C_TONS_OF_FRUIT :{COMMA16} ton meyve
|
||||
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} çanta elmas
|
||||
STR_007E_TONS_OF_FOOD :{COMMA16} ton gida
|
||||
STR_007F_TONS_OF_PAPER :{COMMA16} ton kagit
|
||||
STR_0080_BAGS_OF_GOLD :{COMMA16} çanta altin
|
||||
STR_0081_OF_WATER :{VOLUME} su
|
||||
STR_0082_TONS_OF_WHEAT :{COMMA16} ton bugday
|
||||
STR_0083_OF_RUBBER :{VOLUME} kauçuk
|
||||
STR_0084_TONS_OF_SUGAR :{COMMA16} ton seker
|
||||
STR_0085_TOYS :{COMMA16} oyuncak
|
||||
STR_0086_BAGS_OF_CANDY :{COMMA16} çanta sekerleme
|
||||
STR_0087_OF_COLA :{VOLUME} kola
|
||||
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} ton pamuk helva
|
||||
STR_0089_BUBBLES :{COMMA16} köpükçük
|
||||
STR_008A_TONS_OF_TOFFEE :{COMMA16} ton tofita
|
||||
STR_008B_BATTERIES :{COMMA16} pil
|
||||
STR_008C_OF_PLASTIC :{VOLUME} plastik
|
||||
STR_008D_FIZZY_DRINKS :{COMMA16} fizzy gazozu
|
||||
STR_008E :
|
||||
STR_008F_PS :{TINYFONT}YL
|
||||
STR_0090_CL :{TINYFONT}KÖ
|
||||
STR_0091_ML :{TINYFONT}PO
|
||||
STR_0092_OL :{TINYFONT}PE
|
||||
STR_0093_LV :{TINYFONT}HÜ
|
||||
STR_0094_GD :{TINYFONT}MM
|
||||
STR_0095_GR :{TINYFONT}HB
|
||||
STR_0096_WD :{TINYFONT}AG
|
||||
STR_0097_OR :{TINYFONT}OR
|
||||
STR_0098_ST :{TINYFONT}ÇE
|
||||
STR_0099_VL :{TINYFONT}MÜ
|
||||
STR_009A_CO :{TINYFONT}KO
|
||||
STR_009B_MZ :{TINYFONT}MI
|
||||
STR_009C_FT :{TINYFONT}FT
|
||||
STR_009D_DM :{TINYFONT}DM
|
||||
STR_009E_FD :{TINYFONT}GI
|
||||
STR_009F_PR :{TINYFONT}KA
|
||||
STR_00A0_GD :{TINYFONT}MM
|
||||
STR_00A1_WR :{TINYFONT}WR
|
||||
STR_00A2_WH :{TINYFONT}BU
|
||||
STR_00A3_RB :{TINYFONT}KU
|
||||
STR_00A4_SG :{TINYFONT}SG
|
||||
STR_00A5_TY :{TINYFONT}OY
|
||||
STR_00A6_SW :{TINYFONT}TA
|
||||
STR_00A7_CL :{TINYFONT}KÖ
|
||||
STR_00A8_CF :{TINYFONT}PH
|
||||
STR_00A9_BU :{TINYFONT}KP
|
||||
STR_00AA_TF :{TINYFONT}TF
|
||||
STR_00AB_BA :{TINYFONT}PI
|
||||
STR_00AC_PL :{TINYFONT}PL
|
||||
STR_00AD_FZ :{TINYFONT}FG
|
||||
STR_00AE :{WHITE}{DATE_SHORT}
|
||||
STR_00AF :{WHITE}{DATE_LONG}
|
||||
STR_00B0_MAP :{WHITE}Map - {STRING}
|
||||
STR_00B1_GAME_OPTIONS :{WHITE}Oyun Seçenekleri
|
||||
STR_00B2_MESSAGE :{YELLOW}Mesaj
|
||||
STR_00B3_MESSAGE_FROM :{YELLOW}Mesaj {STRING}
|
||||
STR_00B4_CAN_T_DO_THIS :{WHITE}Bunu yapamazsiniz..
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Bu bölgeyi temizleyemezsiniz...
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Orjinal telif hakki {COPYRIGHT} 1995 Chris Sawyer, Tüm haklari saklidir
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versiyon {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Orjinal tasarim: Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Orjinal grafikler: Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Özel Tesekkürler:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Ön-Sinyaller ve Semaforlar {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Egimlerdeki Yollarin Temelleri {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Kilit grafikleri {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD ekibi
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
STR_00C7_QUIT :{WHITE}Çik
|
||||
STR_00C8_YES :{BLACK}Evet
|
||||
STR_00C9_NO :{BLACK}Hayir
|
||||
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Oyunu sonlandirip {STRING}'a dönmek istediginizden emin misiniz?
|
||||
STR_00CB_1 :{BLACK}1
|
||||
STR_00CC_2 :{BLACK}2
|
||||
STR_00CD_3 :{BLACK}3
|
||||
STR_00CE_4 :{BLACK}4
|
||||
STR_00CF_5 :{BLACK}5
|
||||
STR_00D0_NOTHING :Hiç
|
||||
STR_00D1_DARK_BLUE :Koyu Mavi
|
||||
STR_00D2_PALE_GREEN :Açik Yesil
|
||||
STR_00D3_PINK :Pembe
|
||||
STR_00D4_YELLOW :Sari
|
||||
STR_00D5_RED :Kirmizi
|
||||
STR_00D6_LIGHT_BLUE :Açik Mavi
|
||||
STR_00D7_GREEN :Yesil
|
||||
STR_00D8_DARK_GREEN :Koyu Yesil
|
||||
STR_00D9_BLUE :Mavi
|
||||
STR_00DA_CREAM :Krem
|
||||
STR_00DB_MAUVE :Leylak
|
||||
STR_00DC_PURPLE :Mor
|
||||
STR_00DD_ORANGE :Turuncu
|
||||
STR_00DE_BROWN :Kahverengi
|
||||
STR_00DF_GREY :Gri
|
||||
STR_00E0_WHITE :Beyaz
|
||||
STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Oyunda çok fazla vasita var
|
||||
STR_00E2 :{BLACK}{COMMA16}
|
||||
STR_00E3 :{RED}{COMMA16}
|
||||
STR_00E4_LOCATION :{BLACK}Konum
|
||||
STR_00E5_CONTOURS :Dis Hatlar
|
||||
STR_00E6_VEHICLES :Vasitalar
|
||||
STR_00E7_INDUSTRIES :Endüstriler
|
||||
STR_00E8_ROUTES :Yollar
|
||||
STR_00E9_VEGETATION :Bitkiler
|
||||
STR_00EA_OWNERS :Sahipler
|
||||
STR_00EB_ROADS :{BLACK}{TINYFONT}Yollar
|
||||
STR_00EC_RAILROADS :{BLACK}{TINYFONT}Demiryollari
|
||||
STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Istasyon/Havaalani/Liman
|
||||
STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Binalar/Endüstriler
|
||||
STR_00EF_VEHICLES :{BLACK}{TINYFONT}Vasitalar
|
||||
STR_00F0_100M :{BLACK}{TINYFONT}100m
|
||||
STR_00F1_200M :{BLACK}{TINYFONT}200m
|
||||
STR_00F2_300M :{BLACK}{TINYFONT}300m
|
||||
STR_00F3_400M :{BLACK}{TINYFONT}400m
|
||||
STR_00F4_500M :{BLACK}{TINYFONT}500m
|
||||
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trenler
|
||||
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Yol Tasitlari
|
||||
STR_00F7_SHIPS :{BLACK}{TINYFONT}Gemiler
|
||||
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Hava Tasitlari
|
||||
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Nakil Rotalari
|
||||
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Kömür Madeni
|
||||
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Enerji Santrali
|
||||
STR_00FC_FOREST :{BLACK}{TINYFONT}Orman
|
||||
STR_00FD_SAWMILL :{BLACK}{TINYFONT}Biçki Fabrikasi
|
||||
STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Petrol Rafinerisi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range for menu ends
|
||||
|
||||
|
||||
|
||||
############ range for months starts
|
||||
############ range for months ends
|
||||
|
||||
|
||||
############ range for service numbers starts
|
||||
############ range for service numbers ends
|
||||
|
||||
|
||||
############ range for days starts
|
||||
############ range for days ends
|
||||
|
||||
|
||||
############ range for cargo acecpted starts
|
||||
############ range for cargo acecpted ends
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ start of townname region
|
||||
############ end of townname region
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Start of order review system.
|
||||
# DON'T ADD OR REMOVE LINES HERE
|
||||
# end of order system
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ network gui strings
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ end network gui strings
|
||||
|
||||
|
||||
##id 0x0800
|
||||
|
||||
##id 0x1000
|
||||
|
||||
|
||||
|
||||
##id 0x1800
|
||||
|
||||
##id 0x2000
|
||||
|
||||
##id 0x2800
|
||||
|
||||
##id 0x3000
|
||||
|
||||
|
||||
############ range for rating starts
|
||||
############ range for rating ends
|
||||
|
||||
|
||||
##id 0x3800
|
||||
|
||||
##id 0x4000
|
||||
|
||||
##id 0x4800
|
||||
|
||||
############ range for requires starts
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
##id 0x5000
|
||||
|
||||
##id 0x5800
|
||||
|
||||
|
||||
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
||||
############ These strings may never get a new id, or savegames will break!
|
||||
##id 0x6000
|
||||
|
||||
|
||||
############ end of savegame specific region!
|
||||
|
||||
##id 0x6800
|
||||
|
||||
############ range for difficulty levels starts
|
||||
############ range for difficulty levels ends
|
||||
|
||||
############ range for difficulty settings starts
|
||||
############ range for difficulty settings ends
|
||||
|
||||
|
||||
##id 0x7000
|
||||
|
||||
##id 0x8000
|
||||
|
||||
##id 0x8800
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##id 0x9000
|
||||
|
||||
|
||||
##id 0x9800
|
||||
|
||||
|
||||
##id 0xA000
|
||||
|
||||
|
||||
##id 0xB000
|
||||
|
||||
|
||||
############ Those following lines need to be in this order!!
|
||||
############ End of order list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,2 +1,433 @@
|
||||
##name Russian_latin_char
|
||||
##ownname Russkiy
|
||||
|
||||
##id 0x0000
|
||||
STR_NULL :
|
||||
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Za krayami karti
|
||||
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Blizko k krayu karti
|
||||
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Ne hvataet deneg - neobhodimo {CURRENCY}
|
||||
STR_0004 :{WHITE}{CURRENCY64}
|
||||
STR_0005 :{RED}{CURRENCY64}
|
||||
STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Neobhodima ploskaya poverhnosty
|
||||
STR_0008_WAITING :{BLACK}Ozhidanie: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{STRING}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (marshrut iz
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Prinimaetsya: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Prinimaetsya: {GOLD}
|
||||
STR_000E :
|
||||
STR_000F_PASSENGERS :Passajiri
|
||||
STR_0010_COAL :Ugoly
|
||||
STR_0011_MAIL :Pochta
|
||||
STR_0012_OIL :Nefty
|
||||
STR_0013_LIVESTOCK :Domashniy skot
|
||||
STR_0014_GOODS :Tovary
|
||||
STR_0015_GRAIN :Zerno
|
||||
STR_0016_WOOD :Derevo
|
||||
STR_0017_IRON_ORE :Zheleznaya Ruda
|
||||
STR_0018_STEEL :Staly
|
||||
STR_0019_VALUABLES :Dragocennosti
|
||||
STR_001A_COPPER_ORE :Mednaya Ruda
|
||||
STR_001B_MAIZE :Kukuruza
|
||||
STR_001C_FRUIT :Frukti
|
||||
STR_001D_DIAMONDS :Almazi
|
||||
STR_001E_FOOD :Prodovolstvie
|
||||
STR_001F_PAPER :Bumaga
|
||||
STR_0020_GOLD :Zoloto
|
||||
STR_0021_WATER :Voda
|
||||
STR_0022_WHEAT :Pshenica
|
||||
STR_0023_RUBBER :Rezina
|
||||
STR_0024_SUGAR :Sahar
|
||||
STR_0025_TOYS :Igrushki
|
||||
STR_0026_CANDY :Sladosti
|
||||
STR_0027_COLA :Kola
|
||||
STR_0028_COTTON_CANDY :Saharnaya vata
|
||||
STR_0029_BUBBLES :Puzirki
|
||||
STR_002A_TOFFEE :Iriska
|
||||
STR_002B_BATTERIES :Batareyki
|
||||
STR_002C_PLASTIC :Plastik
|
||||
STR_002D_FIZZY_DRINKS :Shipuchie napitki
|
||||
STR_002E :
|
||||
STR_002F_PASSENGER :Passajiri
|
||||
STR_0030_COAL :Ugoly
|
||||
STR_0031_MAIL :Pochta
|
||||
STR_0032_OIL :Nefty
|
||||
STR_0033_LIVESTOCK :Domashniy skot
|
||||
STR_0034_GOODS :Tovary
|
||||
STR_0035_GRAIN :Zerno
|
||||
STR_0036_WOOD :Derevo
|
||||
STR_0037_IRON_ORE :Zheleznaya ruda
|
||||
STR_0038_STEEL :Staly
|
||||
STR_0039_VALUABLES :Dragocennosti
|
||||
STR_003A_COPPER_ORE :Mednaya ruda
|
||||
STR_003B_MAIZE :Kukuruza
|
||||
STR_003C_FRUIT :Frukti
|
||||
STR_003D_DIAMOND :Almazi
|
||||
STR_003E_FOOD :Prodovolstvie
|
||||
STR_003F_PAPER :Bumaga
|
||||
STR_0040_GOLD :Zoloto
|
||||
STR_0041_WATER :Voda
|
||||
STR_0042_WHEAT :Pshenica
|
||||
STR_0043_RUBBER :Rezina
|
||||
STR_0044_SUGAR :Sahar
|
||||
STR_0045_TOY :Igrushki
|
||||
STR_0046_CANDY :Sladosti
|
||||
STR_0047_COLA :Kola
|
||||
STR_0048_COTTON_CANDY :Saharnaya vata
|
||||
STR_0049_BUBBLE :Puzirki
|
||||
STR_004A_TOFFEE :Iriska
|
||||
STR_004B_BATTERY :Batareyki
|
||||
STR_004C_PLASTIC :Plastik
|
||||
STR_004D_FIZZY_DRINK :Shipuchie napitki
|
||||
STR_004E :
|
||||
STR_004F_PASSENGER :{COMMA16} passajirov
|
||||
STR_0050_TON_OF_COAL :{COMMA16} tonna uglya
|
||||
STR_0051_BAG_OF_MAIL :{COMMA16} sumka s pochtoy
|
||||
STR_0052_OF_OIL :{VOLUME} nefti
|
||||
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} golov domashnego skota
|
||||
STR_0054_CRATE_OF_GOODS :{COMMA16} korobka s tovarom
|
||||
STR_0055_TON_OF_GRAIN :{COMMA16} tonna zerna
|
||||
STR_0056_TON_OF_WOOD :{COMMA16} tonna dereva
|
||||
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonna zheleznoy rudi
|
||||
STR_0058_TON_OF_STEEL :{COMMA16} tonna stali
|
||||
STR_0059_BAG_OF_VALUABLES :{COMMA16} sumka s dragocennostyami
|
||||
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonna mednoy rudi
|
||||
STR_005B_TON_OF_MAIZE :{COMMA16} tonna kukuruzi
|
||||
STR_005C_TON_OF_FRUIT :{COMMA16} tonna fruktov
|
||||
STR_005D_BAG_OF_DIAMONDS :{COMMA16} meshok s almazami
|
||||
STR_005E_TON_OF_FOOD :{COMMA16} tonna prodovolstviya
|
||||
STR_005F_TON_OF_PAPER :{COMMA16} tonna bumagi
|
||||
STR_0060_BAG_OF_GOLD :{COMMA16} meshok zolota
|
||||
STR_0061_OF_WATER :{VOLUME} vodi
|
||||
STR_0062_TON_OF_WHEAT :{COMMA16} tonna pshenici
|
||||
STR_0063_OF_RUBBER :{VOLUME} rezini
|
||||
STR_0064_TON_OF_SUGAR :{COMMA16} tonna sahara
|
||||
STR_0065_TOY :{COMMA16} igrushka
|
||||
STR_0066_BAG_OF_CANDY :{COMMA16} meshok sladostey
|
||||
STR_0067_OF_COLA :{VOLUME} koli
|
||||
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonna saharnoy vati
|
||||
STR_0069_BUBBLE :{COMMA16} puzirki
|
||||
STR_006A_TON_OF_TOFFEE :{COMMA16} tonna irisok
|
||||
STR_006B_BATTERY :{COMMA16} batareyki
|
||||
STR_006C_OF_PLASTIC :{VOLUME} plastika
|
||||
STR_006D_FIZZY_DRINK :{COMMA16} shipuchie napitki
|
||||
STR_006E :
|
||||
STR_006F_PASSENGERS :{COMMA16} passajiri
|
||||
STR_0070_TONS_OF_COAL :{COMMA16} tonn uglya
|
||||
STR_0071_BAGS_OF_MAIL :{COMMA16} meshkov s pochtoy
|
||||
STR_0072_OF_OIL :{VOLUME} nefti
|
||||
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} golov domashnego skota
|
||||
STR_0074_CRATES_OF_GOODS :{COMMA16} korobok s tovarom
|
||||
STR_0075_TONS_OF_GRAIN :{COMMA16} tonn zerna
|
||||
STR_0076_TONS_OF_WOOD :{COMMA16} tonn dereva
|
||||
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonn zheleznoy rudi
|
||||
STR_0078_TONS_OF_STEEL :{COMMA16} tonn stali
|
||||
STR_0079_BAGS_OF_VALUABLES :{COMMA16} meshkov s dragocennostyami
|
||||
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonn mednoy rudi
|
||||
STR_007B_TONS_OF_MAIZE :{COMMA16} tonn kukuruzi
|
||||
STR_007C_TONS_OF_FRUIT :{COMMA16} tonn fruktov
|
||||
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} meshkov s almazami
|
||||
STR_007E_TONS_OF_FOOD :{COMMA16} tonn prodovolstviya
|
||||
STR_007F_TONS_OF_PAPER :{COMMA16} tonn bumagi
|
||||
STR_0080_BAGS_OF_GOLD :{COMMA16} meshkov zolota
|
||||
STR_0081_OF_WATER :{VOLUME} vodi
|
||||
STR_0082_TONS_OF_WHEAT :{COMMA16} tonn pshenici
|
||||
STR_0083_OF_RUBBER :{VOLUME} rezini
|
||||
STR_0084_TONS_OF_SUGAR :{COMMA16} tonn sahara
|
||||
STR_0085_TOYS :{COMMA16} igrushek
|
||||
STR_0086_BAGS_OF_CANDY :{COMMA16} meshkov so sladostyami
|
||||
STR_0087_OF_COLA :{VOLUME} koli
|
||||
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonn saharnoy vati
|
||||
STR_0089_BUBBLES :{COMMA16} puzirkov
|
||||
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonn irisok
|
||||
STR_008B_BATTERIES :{COMMA16} batareek
|
||||
STR_008C_OF_PLASTIC :{VOLUME} plastika
|
||||
STR_008D_FIZZY_DRINKS :{COMMA16} shipuchih napitkov
|
||||
STR_008E :
|
||||
STR_008F_PS :{TINYFONT}PS
|
||||
STR_0090_CL :{TINYFONT}CL
|
||||
STR_0091_ML :{TINYFONT}ML
|
||||
STR_0092_OL :{TINYFONT}OL
|
||||
STR_0093_LV :{TINYFONT}LV
|
||||
STR_0094_GD :{TINYFONT}GD
|
||||
STR_0095_GR :{TINYFONT}GR
|
||||
STR_00AF :{WHITE}{DATE_LONG}
|
||||
STR_00B0_MAP :{WHITE}Karta - {STRING}
|
||||
STR_00B1_GAME_OPTIONS :{WHITE}Igrovie Opcii
|
||||
STR_00B2_MESSAGE :{YELLOW}Soobshenie
|
||||
STR_00B3_MESSAGE_FROM :{YELLOW}Soobshenie ot {STRING}
|
||||
STR_00B4_CAN_T_DO_THIS :{WHITE}Ne mogu eto sdelaty....
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Ne vozmozno ochistity etu mestnosty....
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Originalnie avtorskie prava {COPYRIGHT} 1995 Chris Sawyer, Vse prava sohraneni
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versiya {REV}
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Komanda OpenTTD
|
||||
STR_TRANSLATED_BY :{BLACK} Perevodchik(i) -
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
STR_00C7_QUIT :{WHITE}Vihod
|
||||
STR_00C8_YES :{BLACK}Da
|
||||
STR_00C9_NO :{BLACK}Net
|
||||
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vi uvereni, chto hotite pokinuty etu igru i vernutsya k {STRING}?
|
||||
STR_00CB_1 :{BLACK}1
|
||||
STR_00CC_2 :{BLACK}2
|
||||
STR_00CD_3 :{BLACK}3
|
||||
STR_00CE_4 :{BLACK}4
|
||||
STR_00CF_5 :{BLACK}5
|
||||
STR_00D0_NOTHING :Nichego
|
||||
STR_00D1_DARK_BLUE :Temno-Siniy
|
||||
STR_00D2_PALE_GREEN :Bledno-Zeleniy
|
||||
STR_00D3_PINK :Rozoviy
|
||||
STR_00D4_YELLOW :Zheltiy
|
||||
STR_00D5_RED :Krasniy
|
||||
STR_00D6_LIGHT_BLUE :Svetlo-Siniy
|
||||
STR_00D7_GREEN :Zeleniy
|
||||
STR_00D8_DARK_GREEN :Temno-Zeleniy
|
||||
STR_00D9_BLUE :Siniy
|
||||
STR_00DA_CREAM :Kremoviy
|
||||
STR_00DB_MAUVE :Liloviy
|
||||
STR_00DC_PURPLE :Purpurniy
|
||||
STR_00DD_ORANGE :Oranjeviy
|
||||
STR_00DE_BROWN :Korichneviy
|
||||
STR_00DF_GREY :Seriy
|
||||
STR_00E0_WHITE :Beliy
|
||||
STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Slishkom mnogo transporta v igre
|
||||
STR_00E2 :{BLACK}{COMMA16}
|
||||
STR_00E3 :{RED}{COMMA16}
|
||||
STR_00E4_LOCATION :{BLACK}Poziciya
|
||||
STR_00E5_CONTOURS :Konturi
|
||||
STR_00E6_VEHICLES :Transportnie sredstva
|
||||
STR_00E7_INDUSTRIES :Industrii
|
||||
STR_00E8_ROUTES :Marshruti
|
||||
STR_00E9_VEGETATION :Rastitelnosty
|
||||
STR_00EA_OWNERS :Vladelci
|
||||
STR_00EB_ROADS :{BLACK}{TINYFONT}Dorogi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range for menu ends
|
||||
|
||||
|
||||
|
||||
############ range for months starts
|
||||
############ range for months ends
|
||||
|
||||
|
||||
############ range for service numbers starts
|
||||
############ range for service numbers ends
|
||||
|
||||
|
||||
############ range for days starts
|
||||
############ range for days ends
|
||||
|
||||
|
||||
############ range for cargo acecpted starts
|
||||
############ range for cargo acecpted ends
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
|
||||
|
||||
|
||||
############ range for menu starts
|
||||
############ range ends here
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ start of townname region
|
||||
############ end of townname region
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Start of order review system.
|
||||
# DON'T ADD OR REMOVE LINES HERE
|
||||
# end of order system
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ network gui strings
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ end network gui strings
|
||||
|
||||
|
||||
##id 0x0800
|
||||
|
||||
##id 0x1000
|
||||
|
||||
|
||||
|
||||
##id 0x1800
|
||||
|
||||
##id 0x2000
|
||||
|
||||
##id 0x2800
|
||||
|
||||
##id 0x3000
|
||||
|
||||
|
||||
############ range for rating starts
|
||||
############ range for rating ends
|
||||
|
||||
|
||||
##id 0x3800
|
||||
|
||||
##id 0x4000
|
||||
|
||||
##id 0x4800
|
||||
|
||||
############ range for requires starts
|
||||
############ range for requires ends
|
||||
|
||||
|
||||
##id 0x5000
|
||||
|
||||
##id 0x5800
|
||||
|
||||
|
||||
############ WARNING, using range 0x6000 for strings that are stored in the savegame
|
||||
############ These strings may never get a new id, or savegames will break!
|
||||
##id 0x6000
|
||||
|
||||
|
||||
############ end of savegame specific region!
|
||||
|
||||
##id 0x6800
|
||||
|
||||
############ range for difficulty levels starts
|
||||
############ range for difficulty levels ends
|
||||
|
||||
############ range for difficulty settings starts
|
||||
############ range for difficulty settings ends
|
||||
|
||||
|
||||
##id 0x7000
|
||||
|
||||
##id 0x8000
|
||||
|
||||
##id 0x8800
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##id 0x9000
|
||||
|
||||
|
||||
##id 0x9800
|
||||
|
||||
|
||||
##id 0xA000
|
||||
|
||||
|
||||
##id 0xB000
|
||||
|
||||
|
||||
############ Those following lines need to be in this order!!
|
||||
############ End of order list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
|
||||
@@ -186,12 +186,6 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Bunu yapamazsiniz..
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Bu bölgeyi temizleyemezsiniz...
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Orjinal telif hakki {COPYRIGHT} 1995 Chris Sawyer, Tüm haklari saklidir
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD versiyon {REV}
|
||||
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Orjinal tasarim: Chris Sawyer
|
||||
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Orjinal grafikler: Simon Foster
|
||||
STR_SPECIAL_THANKS :{BLACK}Özel Tesekkürler:
|
||||
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Ön-Sinyaller ve Semaforlar {COPYRIGHT} 2003 Michael Blunck
|
||||
STR_SPECIAL_THANKS_CANALS :{BLACK}° Egimlerdeki Yollarin Temelleri {COPYRIGHT} Marcin Grzegorczyk
|
||||
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Kilit grafikleri {COPYRIGHT} 2003-2004 George
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD ekibi
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
@@ -351,6 +345,7 @@ STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Petrol Rafinerisi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ network gui strings
|
||||
@@ -471,3 +466,11 @@ STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Petrol Rafinerisi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
|
||||
############ End of list of rail types
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ CFG=langs - Win32 Debug
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
@@ -35,9 +36,10 @@ MTL=midl.exe
|
||||
# PROP Output_Dir ""
|
||||
# PROP Intermediate_Dir ""
|
||||
# PROP Target_Dir ""
|
||||
# Begin Target
|
||||
|
||||
# Begin Target
|
||||
# Name "langs - Win32 Debug"
|
||||
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lang\american.txt
|
||||
@@ -49,8 +51,8 @@ InputPath=.\lang\american.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\catalan.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\catalan.txt
|
||||
@@ -60,8 +62,8 @@ InputPath=.\lang\catalan.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\czech.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\czech.txt
|
||||
@@ -71,8 +73,8 @@ InputPath=.\lang\czech.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\danish.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\danish.txt
|
||||
@@ -82,8 +84,8 @@ InputPath=.\lang\danish.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\dutch.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\dutch.txt
|
||||
@@ -93,8 +95,8 @@ InputPath=.\lang\dutch.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\english.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\english.txt
|
||||
@@ -104,8 +106,8 @@ InputPath=.\lang\english.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\finnish.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\finnish.txt
|
||||
@@ -115,8 +117,8 @@ InputPath=.\lang\finnish.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\french.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\french.txt
|
||||
@@ -126,8 +128,8 @@ InputPath=.\lang\french.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\galician.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\galician.txt
|
||||
@@ -137,8 +139,8 @@ InputPath=.\lang\galician.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\german.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\german.txt
|
||||
@@ -148,8 +150,8 @@ InputPath=.\lang\german.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\hungarian.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\hungarian.txt
|
||||
@@ -159,8 +161,8 @@ InputPath=.\lang\hungarian.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\icelandic.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\icelandic.txt
|
||||
@@ -170,8 +172,8 @@ InputPath=.\lang\icelandic.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\italian.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\italian.txt
|
||||
@@ -181,19 +183,8 @@ InputPath=.\lang\italian.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lang\latvian.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\latvian.txt
|
||||
|
||||
"lang\latvian.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
strgen\debug\strgen.exe lang\latvian.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lang\norwegian.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\norwegian.txt
|
||||
@@ -203,8 +194,8 @@ InputPath=.\lang\norwegian.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\origveh.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\origveh.txt
|
||||
@@ -214,8 +205,8 @@ InputPath=.\lang\origveh.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\polish.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\polish.txt
|
||||
@@ -225,8 +216,8 @@ InputPath=.\lang\polish.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\portuguese.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\portuguese.txt
|
||||
@@ -236,8 +227,8 @@ InputPath=.\lang\portuguese.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\romanian.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\romanian.txt
|
||||
@@ -247,19 +238,8 @@ InputPath=.\lang\romanian.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lang\russian.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\russian.txt
|
||||
|
||||
"lang\russian.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
strgen\debug\strgen.exe lang\russian.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lang\slovak.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\slovak.txt
|
||||
@@ -269,8 +249,8 @@ InputPath=.\lang\slovak.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\spanish.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\spanish.txt
|
||||
@@ -280,8 +260,8 @@ InputPath=.\lang\spanish.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
# Begin Source File
|
||||
SOURCE=.\lang\swedish.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\swedish.txt
|
||||
@@ -291,16 +271,6 @@ InputPath=.\lang\swedish.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lang\turkish.txt
|
||||
# Begin Custom Build
|
||||
InputPath=.\lang\turkish.txt
|
||||
|
||||
"lang\turkish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
strgen\debug\strgen.exe lang\turkish.txt
|
||||
|
||||
# End Custom Build
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef MACROS_H
|
||||
#define MACROS_H
|
||||
|
||||
#include "map.h"
|
||||
|
||||
#define MAX_INT 0x7FFFFFFF
|
||||
|
||||
#ifdef min
|
||||
@@ -68,13 +70,6 @@ static inline int64 BIGMULS(int32 a, int32 b) {
|
||||
|
||||
#define LANDSCAPE_SIZE_FACTOR 1
|
||||
|
||||
#define TILE_FROM_XY(x,y) (int)((((y) >> 4) << TILE_X_BITS) + ((x) >> 4))
|
||||
#define TILE_XY(x,y) (int)(((y) << TILE_X_BITS) + (x))
|
||||
|
||||
#define IS_TILETYPE(_t_, _s_) (_map_type_and_height[(_t_)] >> 4 == (_s_))
|
||||
#define GET_TILETYPE(_t_) (_map_type_and_height[(_t_)] >> 4)
|
||||
#define GET_TILEHEIGHT(_t_) ((_map_type_and_height[_t_] & 0xF) * 8)
|
||||
|
||||
enum {
|
||||
CORRECT_Z_BITS = 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4 | 1 << 5 | 1 << 6 | 1 << 7
|
||||
};
|
||||
@@ -82,30 +77,6 @@ enum {
|
||||
|
||||
#define TILE_ASSERT(x) assert( TILE_MASK(x) == (x) );
|
||||
|
||||
extern uint SafeTileAdd(uint x, int add, const char *exp, const char *file, int line);
|
||||
|
||||
#if !defined(_DEBUG) || TILE_X_BITS != 8
|
||||
# define TILE_ADD(x,y) ((x)+(y))
|
||||
#else
|
||||
# if defined(__GNUC__)
|
||||
# define TILE_ADD(x,y) (SafeTileAdd((x),(y), "??", __FILE__, __LINE__))
|
||||
# else
|
||||
# define TILE_ADD(x,y) (SafeTileAdd((x),(y), #x ## ", " ## #y, __FILE__, __LINE__))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define TILE_ADDXY(tile, x, y) TILE_ADD(tile, TILE_XY(x,y))
|
||||
|
||||
#if TILE_X_BITS == 8
|
||||
#define GET_TILE_X(t) (uint)((byte)(t))
|
||||
#define GET_TILE_Y(t) (uint)((t) >> 8)
|
||||
#define TILE_MASK(x) ((uint16)(x))
|
||||
#else
|
||||
#define GET_TILE_X(t) (uint)((t) & ((1 << TILE_X_BITS)-1))
|
||||
#define GET_TILE_Y(t) (uint)((t) >> TILE_X_BITS)
|
||||
#define TILE_MASK(x) (int)((x) & ((1 << (TILE_X_BITS + TILE_Y_BITS))-1))
|
||||
#endif
|
||||
|
||||
//#define REMADP_COORDS(x,y,z) { int t = x; x = (y-t)*2; y+=t-z; }
|
||||
|
||||
#define PACK_POINT(x,y) ((x) | ((y) << 16))
|
||||
@@ -114,9 +85,10 @@ extern uint SafeTileAdd(uint x, int add, const char *exp, const char *file, int
|
||||
|
||||
#define PACK_PPOINT(p) PACK_POINT((p).x, (p).y)
|
||||
|
||||
#define HASBIT(x,y) ((x) & (1 << (y)))
|
||||
#define SETBIT(x,y) ((x) |= (1 << (y)))
|
||||
#define CLRBIT(x,y) ((x) &= ~(1 << (y)))
|
||||
#define HASBIT(x,y) ((x) & (1 << (y)))
|
||||
#define SETBIT(x,y) ((x) |= (1 << (y)))
|
||||
#define CLRBIT(x,y) ((x) &= ~(1 << (y)))
|
||||
#define TOGGLEBIT(x,y) ((x) ^= (1 << (y)))
|
||||
|
||||
// checking more bits. Maybe unneccessary, but easy to use
|
||||
#define HASBITS(x,y) ((x) & (y))
|
||||
@@ -148,14 +120,6 @@ static inline int FindFirstBit2x64(int value)
|
||||
}
|
||||
|
||||
|
||||
#if TILE_X_BITS + TILE_Y_BITS <= 16
|
||||
typedef uint16 TileIndex;
|
||||
typedef int16 TileIndexDiff;
|
||||
#else
|
||||
typedef uint32 TileIndex;
|
||||
typedef int32 TileIndexDiff;
|
||||
#endif
|
||||
|
||||
/* [min,max), strictly less than */
|
||||
#define IS_BYTE_INSIDE(a,min,max) ((byte)((a)-(min)) < (byte)((max)-(min)))
|
||||
#define IS_INT_INSIDE(a,min,max) ((uint)((a)-(min)) < (uint)((max)-(min)))
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "console.h"
|
||||
#include "sound.h"
|
||||
#include "network.h"
|
||||
#include "signs.h"
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
#include "network_data.h"
|
||||
@@ -25,11 +26,11 @@
|
||||
|
||||
|
||||
/* Min/Max date for scenario editor */
|
||||
static const uint MinDate = 0; // 1920-01-01
|
||||
static const uint MinDate = 0; // 1920-01-01 (MAX_YEAR_BEGIN_REAL)
|
||||
static const uint MaxDate = 29220; // 2000-01-01
|
||||
|
||||
extern void DoTestSave();
|
||||
extern void DoTestLoad();
|
||||
extern void DoTestSave(void);
|
||||
extern void DoTestLoad(void);
|
||||
|
||||
extern bool disable_computer;
|
||||
|
||||
@@ -40,14 +41,15 @@ static byte _terraform_size = 1;
|
||||
static byte _last_built_railtype;
|
||||
extern void GenerateWorld(int mode);
|
||||
|
||||
extern void GenerateIndustries();
|
||||
extern void GenerateTowns();
|
||||
extern void GenerateIndustries(void);
|
||||
extern void GenerateTowns(void);
|
||||
|
||||
extern uint GetCurrentCurrencyRate();
|
||||
extern uint GetCurrentCurrencyRate(void);
|
||||
|
||||
extern void CcTerraform(bool success, uint tile, uint32 p1, uint32 p2);
|
||||
|
||||
void HandleOnEditTextCancel() {
|
||||
void HandleOnEditTextCancel(void)
|
||||
{
|
||||
switch(_rename_what) {
|
||||
#ifdef ENABLE_NETWORK
|
||||
case 4:
|
||||
@@ -87,6 +89,9 @@ void HandleOnEditText(WindowEvent *e) {
|
||||
// Give money
|
||||
int32 money = atoi(e->edittext.str) / GetCurrentCurrencyRate();
|
||||
char msg[100];
|
||||
|
||||
money = clamp(money, 0, 0xFFFFFF); // Clamp between 16 million and 0
|
||||
|
||||
// Give 'id' the money, and substract it from ourself
|
||||
if (!DoCommandP(0, money, id, NULL, CMD_GIVE_MONEY)) break;
|
||||
|
||||
@@ -107,7 +112,19 @@ void HandleOnEditText(WindowEvent *e) {
|
||||
}
|
||||
}
|
||||
|
||||
// this code is shared for the majority of the pushbuttons
|
||||
/**
|
||||
* This code is shared for the majority of the pushbuttons.
|
||||
* Handles e.g. the pressing of a button (to build things), playing of click sound and sets certain parameters
|
||||
*
|
||||
* @param w Window which called the function
|
||||
* @param widget ID of the widget (=button) that called this function
|
||||
* @param cursor How should the cursor image change? E.g. cursor with depot image in it
|
||||
* @param mode Tile highlighting mode, e.g. drawing a rectangle or a dot on the ground
|
||||
* @param placeproc Procedure which will be called when someone clicks on the map
|
||||
|
||||
* @return true if the button is clicked, false if it's unclicked
|
||||
*/
|
||||
|
||||
bool HandlePlacePushButton(Window *w, int widget, uint32 cursor, int mode, PlaceProc *placeproc)
|
||||
{
|
||||
uint32 mask = 1 << widget;
|
||||
@@ -142,7 +159,7 @@ static void ToolbarPauseClick(Window *w)
|
||||
{
|
||||
if (_networking && !_network_server) { return;} // only server can pause the game
|
||||
|
||||
if (DoCommandP(0, _pause?0:1, 0, NULL, CMD_PAUSE))
|
||||
if (DoCommandP(0, _pause ? 0 : 1, 0, NULL, CMD_PAUSE))
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
}
|
||||
|
||||
@@ -163,14 +180,13 @@ static void MenuClickSettings(int index)
|
||||
case 2: ShowPatchesSelection(); return;
|
||||
case 3: ShowNewgrf(); return;
|
||||
|
||||
case 5: DeleteAllNonVitalWindows(); return;
|
||||
case 6: _display_opt ^= DO_SHOW_TOWN_NAMES; MarkWholeScreenDirty(); return;
|
||||
case 7: _display_opt ^= DO_SHOW_STATION_NAMES; MarkWholeScreenDirty(); return;
|
||||
case 8: _display_opt ^= DO_SHOW_SIGNS; MarkWholeScreenDirty(); return;
|
||||
case 9: _display_opt ^= DO_WAYPOINTS; MarkWholeScreenDirty(); return;
|
||||
case 10: _display_opt ^= DO_FULL_ANIMATION; MarkWholeScreenDirty(); return;
|
||||
case 11: _display_opt ^= DO_FULL_DETAIL; MarkWholeScreenDirty(); return;
|
||||
case 12: _display_opt ^= DO_TRANS_BUILDINGS; MarkWholeScreenDirty(); return;
|
||||
case 5: _display_opt ^= DO_SHOW_TOWN_NAMES; MarkWholeScreenDirty(); return;
|
||||
case 6: _display_opt ^= DO_SHOW_STATION_NAMES; MarkWholeScreenDirty(); return;
|
||||
case 7: _display_opt ^= DO_SHOW_SIGNS; MarkWholeScreenDirty(); return;
|
||||
case 8: _display_opt ^= DO_WAYPOINTS; MarkWholeScreenDirty(); return;
|
||||
case 9: _display_opt ^= DO_FULL_ANIMATION; MarkWholeScreenDirty(); return;
|
||||
case 10: _display_opt ^= DO_FULL_DETAIL; MarkWholeScreenDirty(); return;
|
||||
case 11: _display_opt ^= DO_TRANS_BUILDINGS; MarkWholeScreenDirty(); return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,7 +263,7 @@ static void MenuClickFinances(int index)
|
||||
}
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
extern void ShowClientList();
|
||||
extern void ShowClientList(void);
|
||||
#endif /* ENABLE_NETWORK */
|
||||
|
||||
static void MenuClickCompany(int index)
|
||||
@@ -349,14 +365,14 @@ void ShowNetworkGiveMoneyWindow(byte player)
|
||||
ShowQueryString(STR_EMPTY, STR_NETWORK_GIVE_MONEY_CAPTION, 30, 180, 1, 0);
|
||||
}
|
||||
|
||||
void ShowNetworkNeedGamePassword()
|
||||
void ShowNetworkNeedGamePassword(void)
|
||||
{
|
||||
_rename_id = NETWORK_GAME_PASSWORD;
|
||||
_rename_what = 4;
|
||||
ShowQueryString(STR_EMPTY, STR_NETWORK_NEED_GAME_PASSWORD_CAPTION, 20, 180, WC_SELECT_GAME, 0);
|
||||
}
|
||||
|
||||
void ShowNetworkNeedCompanyPassword()
|
||||
void ShowNetworkNeedCompanyPassword(void)
|
||||
{
|
||||
_rename_id = NETWORK_COMPANY_PASSWORD;
|
||||
_rename_what = 4;
|
||||
@@ -367,7 +383,7 @@ void ShowNetworkNeedCompanyPassword()
|
||||
|
||||
void ShowRenameSignWindow(SignStruct *ss)
|
||||
{
|
||||
_rename_id = ss - _sign_list;
|
||||
_rename_id = ss->index;
|
||||
_rename_what = 0;
|
||||
ShowQueryString(ss->str, STR_280B_EDIT_SIGN_TEXT, 30, 180, 1, 0);
|
||||
}
|
||||
@@ -378,7 +394,8 @@ void ShowRenameWaypointWindow(Waypoint *cp)
|
||||
|
||||
/* Are we allowed to change the name of the waypoint? */
|
||||
if (!CheckTileOwnership(cp->xy)) {
|
||||
ShowErrorMessage(_error_message, STR_CANT_CHANGE_WAYPOINT_NAME, GET_TILE_X(cp->xy) * 16, GET_TILE_Y(cp->xy) * 16);
|
||||
ShowErrorMessage(_error_message, STR_CANT_CHANGE_WAYPOINT_NAME,
|
||||
TileX(cp->xy) * 16, TileY(cp->xy) * 16);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -388,20 +405,7 @@ void ShowRenameWaypointWindow(Waypoint *cp)
|
||||
ShowQueryString(STR_WAYPOINT_RAW, STR_EDIT_WAYPOINT_NAME, 30, 180, 1, 0);
|
||||
}
|
||||
|
||||
void CcPlaceSign(bool success, uint tile, uint32 p1, uint32 p2)
|
||||
{
|
||||
if (success) {
|
||||
ShowRenameSignWindow(_new_sign_struct);
|
||||
ResetObjectToPlace();
|
||||
}
|
||||
}
|
||||
|
||||
void PlaceProc_Sign(uint tile)
|
||||
{
|
||||
DoCommandP(tile, 0, 0, CcPlaceSign, CMD_PLACE_SIGN | CMD_MSG(STR_2809_CAN_T_PLACE_SIGN_HERE));
|
||||
}
|
||||
|
||||
static void SelectSignTool()
|
||||
static void SelectSignTool(void)
|
||||
{
|
||||
if (_cursor.sprite == 0x2D2)
|
||||
ResetObjectToPlace();
|
||||
@@ -548,14 +552,14 @@ static void MenuWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
}
|
||||
|
||||
static Widget _menu_widgets[] = {
|
||||
{ WWT_PANEL, 14, 0, 159, 0, 65535, 0, STR_NULL},
|
||||
static const Widget _menu_widgets[] = {
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 0, 159, 0, 65535, 0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
|
||||
static Widget _player_menu_widgets[] = {
|
||||
{ WWT_PANEL, 14, 0, 240, 0, 81, 0, STR_NULL},
|
||||
static const Widget _player_menu_widgets[] = {
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 0, 240, 0, 81, 0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -596,7 +600,7 @@ static void UpdatePlayerMenuHeight(Window *w)
|
||||
SetWindowDirty(w);
|
||||
num = num * 10 + 2;
|
||||
w->height = num;
|
||||
_player_menu_widgets[0].bottom = _player_menu_widgets[0].top + num - 1;
|
||||
w->widget[0].bottom = w->widget[0].top + num - 1;
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
}
|
||||
@@ -712,8 +716,6 @@ static void PlayerMenuWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
static Window *PopupMainToolbMenu(Window *w, int x, int main_button, StringID base_string, int item_count)
|
||||
{
|
||||
int h;
|
||||
|
||||
x += w->left;
|
||||
|
||||
SETBIT(w->click_state, (byte)main_button);
|
||||
@@ -721,8 +723,8 @@ static Window *PopupMainToolbMenu(Window *w, int x, int main_button, StringID ba
|
||||
|
||||
DeleteWindowById(WC_TOOLBAR_MENU, 0);
|
||||
|
||||
_menu_widgets[0].bottom = h = item_count * 10 + 1;
|
||||
w = AllocateWindow(x, 0x16, 0xA0, h+1, MenuWndProc, WC_TOOLBAR_MENU, _menu_widgets);
|
||||
w = AllocateWindow(x, 0x16, 0xA0, item_count * 10 + 2, MenuWndProc, WC_TOOLBAR_MENU, _menu_widgets);
|
||||
w->widget[0].bottom = item_count * 10 + 1;
|
||||
w->flags4 &= ~WF_WHITE_BORDER_MASK;
|
||||
|
||||
WP(w,menu_d).item_count = item_count;
|
||||
@@ -821,7 +823,7 @@ static void ToolbarTrainClick(Window *w)
|
||||
Vehicle *v;
|
||||
int dis = -1;
|
||||
FOR_ALL_VEHICLES(v)
|
||||
if (v->type == VEH_Train && v->subtype == 0) CLRBIT(dis, v->owner);
|
||||
if (v->type == VEH_Train && v->subtype == TS_Front_Engine) CLRBIT(dis, v->owner);
|
||||
PopupMainPlayerToolbMenu(w, 310, 13, dis);
|
||||
}
|
||||
|
||||
@@ -917,7 +919,7 @@ bool DoZoomInOutWindow(int how, Window *w)
|
||||
return true;
|
||||
}
|
||||
|
||||
static void MaxZoomIn()
|
||||
static void MaxZoomIn(void)
|
||||
{
|
||||
while (DoZoomInOutWindow(ZOOM_IN, FindWindowById(WC_MAIN_WINDOW, 0) ) ) {}
|
||||
}
|
||||
@@ -985,16 +987,16 @@ static void ToolbarOptionsClick(Window *w)
|
||||
{
|
||||
uint16 x;
|
||||
|
||||
w = PopupMainToolbMenu(w, 43, 2, STR_02C3_GAME_OPTIONS, 13);
|
||||
w = PopupMainToolbMenu(w, 43, 2, STR_02C3_GAME_OPTIONS, 12);
|
||||
|
||||
x = (uint16)-1;
|
||||
if (_display_opt & DO_SHOW_TOWN_NAMES) x &= ~(1<<6);
|
||||
if (_display_opt & DO_SHOW_STATION_NAMES) x &= ~(1<<7);
|
||||
if (_display_opt & DO_SHOW_SIGNS) x &= ~(1<<8);
|
||||
if (_display_opt & DO_WAYPOINTS) x &= ~(1<<9);
|
||||
if (_display_opt & DO_FULL_ANIMATION) x &= ~(1<<10);
|
||||
if (_display_opt & DO_FULL_DETAIL) x &= ~(1<<11);
|
||||
if (_display_opt & DO_TRANS_BUILDINGS) x &= ~(1<<12);
|
||||
if (_display_opt & DO_SHOW_TOWN_NAMES) x &= ~(1<<5);
|
||||
if (_display_opt & DO_SHOW_STATION_NAMES) x &= ~(1<<6);
|
||||
if (_display_opt & DO_SHOW_SIGNS) x &= ~(1<<7);
|
||||
if (_display_opt & DO_WAYPOINTS) x &= ~(1<<8);
|
||||
if (_display_opt & DO_FULL_ANIMATION) x &= ~(1<<9);
|
||||
if (_display_opt & DO_FULL_DETAIL) x &= ~(1<<10);
|
||||
if (_display_opt & DO_TRANS_BUILDINGS) x &= ~(1<<11);
|
||||
WP(w,menu_d).checked_items = x;
|
||||
}
|
||||
|
||||
@@ -1073,7 +1075,7 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w)
|
||||
}
|
||||
}
|
||||
|
||||
static void ResetLandscape()
|
||||
static void ResetLandscape(void)
|
||||
{
|
||||
_random_seeds[0][0] = InteractiveRandom();
|
||||
_random_seeds[0][1] = InteractiveRandom();
|
||||
@@ -1083,11 +1085,11 @@ static void ResetLandscape()
|
||||
}
|
||||
|
||||
static const Widget _ask_reset_landscape_widgets[] = {
|
||||
{ WWT_TEXTBTN, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 4, 11, 179, 0, 13, STR_022C_RESET_LANDSCAPE, STR_NULL},
|
||||
{ WWT_IMGBTN, 4, 0, 179, 14, 91, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
|
||||
{ WWT_TEXTBTN, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 179, 0, 13, STR_022C_RESET_LANDSCAPE, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 4, 0, 179, 14, 91, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -1107,10 +1109,13 @@ static void AskResetLandscapeWndProc(Window *w, WindowEvent *e)
|
||||
break;
|
||||
case 4:
|
||||
DeleteWindow(w);
|
||||
if(mode) { // reset landscape
|
||||
DeleteWindowByClass(WC_INDUSTRY_VIEW);
|
||||
DeleteWindowByClass(WC_TOWN_VIEW);
|
||||
DeleteWindowByClass(WC_LAND_INFO);
|
||||
|
||||
if (mode) { // reset landscape
|
||||
ResetLandscape();
|
||||
}
|
||||
else { // make random landscape
|
||||
} else { // make random landscape
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
_switch_mode = SM_GENRANDLAND;
|
||||
}
|
||||
@@ -1142,10 +1147,10 @@ static void CommonRaiseLowerBigLand(uint tile, int mode)
|
||||
|
||||
_generating_world = true;
|
||||
|
||||
// tile = TILE_FROM_XY(GET_TILE_X(tile)*16+_tile_fract_coords.x + 8,GET_TILE_Y(tile)*16+_tile_fract_coords.y + 8);
|
||||
// tile = TILE_FROM_XY(TileX(tile) * 16 + _tile_fract_coords.x + 8, TileY(tile) * 16 + _tile_fract_coords.y + 8);
|
||||
|
||||
if (_terraform_size == 1) {
|
||||
DoCommandP(tile, 8, (uint32)mode, CcTerraform, CMD_TERRAFORM_LAND | CMD_AUTO);
|
||||
DoCommandP(tile, 8, (uint32)mode, CcTerraform, CMD_TERRAFORM_LAND | CMD_AUTO | CMD_MSG(_error_message_2));
|
||||
} else {
|
||||
SndPlayTileFx(SND_1F_SPLAT, tile);
|
||||
|
||||
@@ -1155,18 +1160,18 @@ static void CommonRaiseLowerBigLand(uint tile, int mode)
|
||||
/* Raise land */
|
||||
h = 15;
|
||||
BEGIN_TILE_LOOP(tile2, size, size, tile)
|
||||
h = min(h, _map_type_and_height[tile2]&0xF);
|
||||
h = min(h, TileHeight(tile2));
|
||||
END_TILE_LOOP(tile2, size, size, tile)
|
||||
} else {
|
||||
/* Lower land */
|
||||
h = 0;
|
||||
BEGIN_TILE_LOOP(tile2, size, size, tile)
|
||||
h = max(h, _map_type_and_height[tile2]&0xF);
|
||||
h = max(h, TileHeight(tile2));
|
||||
END_TILE_LOOP(tile2, size, size, tile)
|
||||
}
|
||||
|
||||
BEGIN_TILE_LOOP(tile2, size, size, tile)
|
||||
if ((uint)(_map_type_and_height[tile2]&0xF) == h) {
|
||||
if (TileHeight(tile2) == h) {
|
||||
DoCommandP(tile2, 8, (uint32)mode, NULL, CMD_TERRAFORM_LAND | CMD_AUTO);
|
||||
}
|
||||
END_TILE_LOOP(tile2, size, size, tile)
|
||||
@@ -1189,7 +1194,7 @@ static void PlaceProc_LowerBigLand(uint tile)
|
||||
//{
|
||||
// if (success) {
|
||||
//SndPlayTileFx(0x10, tile);
|
||||
//CreateEffectVehicleAbove(GET_TILE_X(tile)*16 + 8,GET_TILE_Y(tile)*16 + 8, 2, EV_DEMOLISH);
|
||||
//CreateEffectVehicleAbove(TileX(tile) * 16 + 8, TileY(tile) * 16 + 8, 2, EV_DEMOLISH);
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -1201,11 +1206,10 @@ static void PlaceProc_LowerBigLand(uint tile)
|
||||
|
||||
static void PlaceProc_RockyArea(uint tile)
|
||||
{
|
||||
if (!IS_TILETYPE(tile, MP_CLEAR))
|
||||
if (!IsTileType(tile, MP_CLEAR) && !IsTileType(tile, MP_TREES))
|
||||
return;
|
||||
|
||||
_map5[tile] = (_map5[tile] & ~0x1C) | 8;
|
||||
MarkTileDirtyByTile(tile);
|
||||
ModifyTile(tile, MP_SETTYPE(MP_CLEAR) | MP_MAP5, (_map5[tile] & ~0x1C) | 0xB);
|
||||
SndPlayTileFx(SND_1F_SPLAT, tile);
|
||||
}
|
||||
|
||||
@@ -1239,21 +1243,21 @@ static void PlaceProc_Desert(uint tile)
|
||||
}
|
||||
|
||||
static const Widget _scen_edit_land_gen_widgets[] = {
|
||||
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 153, 0, 13, STR_0223_LAND_GENERATION,STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, 7, 0, 153, 14, 99, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 22, 43, 14, 35, 0x2B6, STR_018F_RAISE_A_CORNER_OF_LAND},
|
||||
{ WWT_IMGBTN, 14, 44, 65, 14, 35, 0x2B7, STR_018E_LOWER_A_CORNER_OF_LAND},
|
||||
{ WWT_IMGBTN, 14, 0, 21, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_TEXTBTN, 14, 125, 135, 43, 54, STR_0224, STR_0228_INCREASE_SIZE_OF_LAND_AREA},
|
||||
{ WWT_TEXTBTN, 14, 125, 135, 56, 67, STR_0225, STR_0229_DECREASE_SIZE_OF_LAND_AREA},
|
||||
{ WWT_TEXTBTN, 14, 20, 135, 75, 86, STR_0226_RANDOM_LAND, STR_022A_GENERATE_RANDOM_LAND},
|
||||
{ WWT_TEXTBTN, 14, 20, 135, 88, 99, STR_0227_RESET_LAND, STR_022B_RESET_LANDSCAPE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 153, 0, 13, STR_0223_LAND_GENERATION,STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 153, 14, 99, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 22, 43, 14, 35, 0x2B6, STR_018F_RAISE_A_CORNER_OF_LAND},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 44, 65, 14, 35, 0x2B7, STR_018E_LOWER_A_CORNER_OF_LAND},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 21, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 125, 135, 43, 54, STR_0224, STR_0228_INCREASE_SIZE_OF_LAND_AREA},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 125, 135, 56, 67, STR_0225, STR_0229_DECREASE_SIZE_OF_LAND_AREA},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 20, 135, 75, 86, STR_0226_RANDOM_LAND, STR_022A_GENERATE_RANDOM_LAND},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 20, 135, 88, 99, STR_0227_RESET_LAND, STR_022B_RESET_LANDSCAPE},
|
||||
|
||||
{ WWT_IMGBTN, 14, 88, 109, 14, 35, 0xFF4, STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE},
|
||||
{ WWT_IMGBTN, 14, 110, 131, 14, 35, 0xFF5, STR_028D_PLACE_LIGHTHOUSE},
|
||||
{ WWT_IMGBTN, 14, 132, 153, 14, 35, 0xFF6, STR_028E_PLACE_TRANSMITTER},
|
||||
{ WWT_IMGBTN, 14, 66, 87, 14, 35, SPR_OPENTTD_BASE+68, STR_LEVEL_LAND_TOOLTIP},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 88, 109, 14, 35, 0xFF4, STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 110, 131, 14, 35, 0xFF5, STR_028D_PLACE_LIGHTHOUSE},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 132, 153, 14, 35, 0xFF6, STR_028E_PLACE_TRANSMITTER},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 66, 87, 14, 35, SPR_OPENTTD_BASE+68, STR_LEVEL_LAND_TOOLTIP},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -1270,10 +1274,10 @@ static const int8 _multi_terraform_coords[][2] = {
|
||||
|
||||
static void ScenEditLandGenWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
// XXX: show different tooltips in desert mode
|
||||
switch(e->event) {
|
||||
case WE_PAINT:
|
||||
// XXX: only show reset button when nothing was built
|
||||
// XXX - lighthouse button is widget 11!! Don't forget when changing
|
||||
w->widget[11].tooltips = (_opt.landscape == LT_DESERT) ? STR_028F_DEFINE_DESERT_AREA : STR_028D_PLACE_LIGHTHOUSE;
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
{
|
||||
@@ -1408,15 +1412,15 @@ static void PlaceProc_Town(uint tile)
|
||||
|
||||
|
||||
static const Widget _scen_edit_town_gen_widgets[] = {
|
||||
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 159, 0, 13, STR_0233_TOWN_GENERATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, 7, 0, 159, 14, 81, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, 14, 2, 157, 16, 27, STR_0234_NEW_TOWN, STR_0235_CONSTRUCT_NEW_TOWN},
|
||||
{ WWT_TEXTBTN, 14, 2, 157, 29, 40, STR_023D_RANDOM_TOWN, STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION},
|
||||
{ WWT_TEXTBTN, 14, 2, 157, 42, 53, STR_MANY_RANDOM_TOWNS, STR_RANDOM_TOWNS_TIP},
|
||||
{ WWT_TEXTBTN, 14, 2, 53, 68, 79, STR_02A1_SMALL, STR_02A4_SELECT_TOWN_SIZE},
|
||||
{ WWT_TEXTBTN, 14, 54, 105, 68, 79, STR_02A2_MEDIUM, STR_02A4_SELECT_TOWN_SIZE},
|
||||
{ WWT_TEXTBTN, 14, 106, 157, 68, 79, STR_02A3_LARGE, STR_02A4_SELECT_TOWN_SIZE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 159, 0, 13, STR_0233_TOWN_GENERATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 159, 14, 81, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 16, 27, STR_0234_NEW_TOWN, STR_0235_CONSTRUCT_NEW_TOWN},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 29, 40, STR_023D_RANDOM_TOWN, STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 42, 53, STR_MANY_RANDOM_TOWNS, STR_RANDOM_TOWNS_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 53, 68, 79, STR_02A1_SMALL, STR_02A4_SELECT_TOWN_SIZE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 54, 105, 68, 79, STR_02A2_MEDIUM, STR_02A4_SELECT_TOWN_SIZE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 106, 157, 68, 79, STR_02A3_LARGE, STR_02A4_SELECT_TOWN_SIZE},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -1493,96 +1497,97 @@ static void ToolbarScenGenTown(Window *w)
|
||||
|
||||
|
||||
static const Widget _scenedit_industry_normal_widgets[] = {
|
||||
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
|
||||
{ WWT_IMGBTN, 7, 0, 169, 14, 224, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
|
||||
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 68, 79, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 107, 118, STR_0245_OIL_RIG, STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 120, 131, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 133, 144, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 159, 170, STR_0249_IRON_ORE_MINE, STR_026B_CONSTRUCT_IRON_ORE_MINE},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 185, 196, STR_024B_BANK, STR_026D_CONSTRUCT_BANK_CAN_ONLY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_0245_OIL_RIG, STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_0249_IRON_ORE_MINE, STR_026B_CONSTRUCT_IRON_ORE_MINE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 185, 196, STR_024B_BANK, STR_026D_CONSTRUCT_BANK_CAN_ONLY},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
|
||||
static const Widget _scenedit_industry_hilly_widgets[] = {
|
||||
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
|
||||
{ WWT_IMGBTN, 7, 0, 169, 14, 224, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
|
||||
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 68, 79, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 107, 118, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 120, 131, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 133, 144, STR_024F_GOLD_MINE, STR_0271_CONSTRUCT_GOLD_MINE},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 159, 170, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_024F_GOLD_MINE, STR_0271_CONSTRUCT_GOLD_MINE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _scenedit_industry_desert_widgets[] = {
|
||||
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
|
||||
{ WWT_IMGBTN, 7, 0, 169, 14, 224, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
|
||||
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 42, 53, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 55, 66, STR_0251_FRUIT_PLANTATION, STR_0274_PLANT_FRUIT_PLANTATION},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 68, 79, STR_0252_RUBBER_PLANTATION,STR_0275_PLANT_RUBBER_PLANTATION},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 81, 92, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 94, 105, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 107, 118, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 120, 131, STR_0253_WATER_SUPPLY, STR_0276_CONSTRUCT_WATER_SUPPLY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 133, 144, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 146, 157, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 159, 170, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 172, 183, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 185, 196, STR_0255_DIAMOND_MINE, STR_0278_CONSTRUCT_DIAMOND_MINE},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 198, 209, STR_0256_COPPER_ORE_MINE, STR_0279_CONSTRUCT_COPPER_ORE_MINE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0251_FRUIT_PLANTATION, STR_0274_PLANT_FRUIT_PLANTATION},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0252_RUBBER_PLANTATION,STR_0275_PLANT_RUBBER_PLANTATION},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_0253_WATER_SUPPLY, STR_0276_CONSTRUCT_WATER_SUPPLY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 185, 196, STR_0255_DIAMOND_MINE, STR_0278_CONSTRUCT_DIAMOND_MINE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 198, 209, STR_0256_COPPER_ORE_MINE, STR_0279_CONSTRUCT_COPPER_ORE_MINE},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _scenedit_industry_candy_widgets[] = {
|
||||
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION,STR_NULL},
|
||||
{ WWT_IMGBTN, 7, 0, 169, 14, 224, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION,STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
|
||||
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 42, 53, STR_0257_COTTON_CANDY_FOREST,STR_027A_PLANT_COTTON_CANDY_FOREST},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 55, 66, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 68, 79, STR_0259_BATTERY_FARM, STR_027C_CONSTRUCT_BATTERY_FARM},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 81, 92, STR_025A_COLA_WELLS, STR_027D_CONSTRUCT_COLA_WELLS},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 94, 105, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 107, 118, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 120, 131, STR_025D_PLASTIC_FOUNTAINS, STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 133, 144, STR_025E_FIZZY_DRINK_FACTORY,STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 146, 157, STR_025F_BUBBLE_GENERATOR, STR_0282_CONSTRUCT_BUBBLE_GENERATOR},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 159, 170, STR_0260_TOFFEE_QUARRY, STR_0283_CONSTRUCT_TOFFEE_QUARRY},
|
||||
{ WWT_TEXTBTN, 14, 2, 167, 172, 183, STR_0261_SUGAR_MINE, STR_0284_CONSTRUCT_SUGAR_MINE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0257_COTTON_CANDY_FOREST,STR_027A_PLANT_COTTON_CANDY_FOREST},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0259_BATTERY_FARM, STR_027C_CONSTRUCT_BATTERY_FARM},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_025A_COLA_WELLS, STR_027D_CONSTRUCT_COLA_WELLS},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_025D_PLASTIC_FOUNTAINS, STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_025E_FIZZY_DRINK_FACTORY,STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_025F_BUBBLE_GENERATOR, STR_0282_CONSTRUCT_BUBBLE_GENERATOR},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_0260_TOFFEE_QUARRY, STR_0283_CONSTRUCT_TOFFEE_QUARRY},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_0261_SUGAR_MINE, STR_0284_CONSTRUCT_SUGAR_MINE},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
int _industry_type_to_place;
|
||||
|
||||
static bool AnyTownExists() {
|
||||
static bool AnyTownExists(void)
|
||||
{
|
||||
Town *t;
|
||||
FOR_ALL_TOWNS(t) {
|
||||
if (t->xy)
|
||||
@@ -1883,39 +1888,39 @@ static void MainToolbarWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _toolb_normal_widgets[] = {
|
||||
{ WWT_PANEL, 14, 0, 21, 0, 21, 0x2D6, STR_0171_PAUSE_GAME},
|
||||
{ WWT_PANEL, 14, 22, 43, 0, 21, SPR_OPENTTD_BASE + 57, STR_FAST_FORWARD},
|
||||
{ WWT_PANEL, 14, 44, 65, 0, 21, 0x2EF, STR_0187_OPTIONS},
|
||||
{ WWT_PANEL_2, 14, 66, 87, 0, 21, 0x2D4, STR_0172_SAVE_GAME_ABANDON_GAME},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 0, 21, 0, 21, 0x2D6, STR_0171_PAUSE_GAME},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 22, 43, 0, 21, SPR_OPENTTD_BASE + 57, STR_FAST_FORWARD},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 44, 65, 0, 21, 0x2EF, STR_0187_OPTIONS},
|
||||
{ WWT_PANEL_2, RESIZE_NONE, 14, 66, 87, 0, 21, 0x2D4, STR_0172_SAVE_GAME_ABANDON_GAME},
|
||||
|
||||
{ WWT_PANEL, 14, 96, 117, 0, 21, 0x2C4, STR_0174_DISPLAY_MAP},
|
||||
{ WWT_PANEL, 14, 118, 139, 0, 21, 0xFED, STR_0176_DISPLAY_TOWN_DIRECTORY},
|
||||
{ WWT_PANEL, 14, 140, 161, 0, 21, 0x2A7, STR_02DC_DISPLAY_SUBSIDIES},
|
||||
{ WWT_PANEL, 14, 162, 183, 0, 21, 0x513, STR_0173_DISPLAY_LIST_OF_COMPANY},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 96, 117, 0, 21, 0x2C4, STR_0174_DISPLAY_MAP},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 118, 139, 0, 21, 0xFED, STR_0176_DISPLAY_TOWN_DIRECTORY},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 140, 161, 0, 21, 0x2A7, STR_02DC_DISPLAY_SUBSIDIES},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 162, 183, 0, 21, 0x513, STR_0173_DISPLAY_LIST_OF_COMPANY},
|
||||
|
||||
{ WWT_PANEL, 14, 191, 212, 0, 21, 0x2E1, STR_0177_DISPLAY_COMPANY_FINANCES},
|
||||
{ WWT_PANEL, 14, 213, 235, 0, 21, 0x2E7, STR_0178_DISPLAY_COMPANY_GENERAL},
|
||||
{ WWT_PANEL, 14, 236, 257, 0, 21, 0x2E9, STR_0179_DISPLAY_GRAPHS},
|
||||
{ WWT_PANEL, 14, 258, 279, 0, 21, 0x2AC, STR_017A_DISPLAY_COMPANY_LEAGUE},
|
||||
{ WWT_PANEL, 14, 280, 301, 0, 21, 0x2E5, STR_0312_FUND_CONSTRUCTION_OF_NEW},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 191, 212, 0, 21, 0x2E1, STR_0177_DISPLAY_COMPANY_FINANCES},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 213, 235, 0, 21, 0x2E7, STR_0178_DISPLAY_COMPANY_GENERAL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 236, 257, 0, 21, 0x2E9, STR_0179_DISPLAY_GRAPHS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 258, 279, 0, 21, 0x2AC, STR_017A_DISPLAY_COMPANY_LEAGUE},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 280, 301, 0, 21, 0x2E5, STR_0312_FUND_CONSTRUCTION_OF_NEW},
|
||||
|
||||
{ WWT_PANEL, 14, 310, 331, 0, 21, 0x2DB, STR_017B_DISPLAY_LIST_OF_COMPANY},
|
||||
{ WWT_PANEL, 14, 332, 353, 0, 21, 0x2DC, STR_017C_DISPLAY_LIST_OF_COMPANY},
|
||||
{ WWT_PANEL, 14, 354, 375, 0, 21, 0x2DD, STR_017D_DISPLAY_LIST_OF_COMPANY},
|
||||
{ WWT_PANEL, 14, 376, 397, 0, 21, 0x2DE, STR_017E_DISPLAY_LIST_OF_COMPANY},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 310, 331, 0, 21, 0x2DB, STR_017B_DISPLAY_LIST_OF_COMPANY},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 332, 353, 0, 21, 0x2DC, STR_017C_DISPLAY_LIST_OF_COMPANY},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 354, 375, 0, 21, 0x2DD, STR_017D_DISPLAY_LIST_OF_COMPANY},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 376, 397, 0, 21, 0x2DE, STR_017E_DISPLAY_LIST_OF_COMPANY},
|
||||
|
||||
{ WWT_PANEL, 14, 406, 427, 0, 21, 0x2DF, STR_017F_ZOOM_THE_VIEW_IN},
|
||||
{ WWT_PANEL, 14, 428, 449, 0, 21, 0x2E0, STR_0180_ZOOM_THE_VIEW_OUT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 406, 427, 0, 21, 0x2DF, STR_017F_ZOOM_THE_VIEW_IN},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 428, 449, 0, 21, 0x2E0, STR_0180_ZOOM_THE_VIEW_OUT},
|
||||
|
||||
{ WWT_PANEL, 14, 457, 478, 0, 21, 0x2D7, STR_0181_BUILD_RAILROAD_TRACK},
|
||||
{ WWT_PANEL, 14, 479, 500, 0, 21, 0x2D8, STR_0182_BUILD_ROADS},
|
||||
{ WWT_PANEL, 14, 501, 522, 0, 21, 0x2D9, STR_0183_BUILD_SHIP_DOCKS},
|
||||
{ WWT_PANEL, 14, 523, 544, 0, 21, 0x2DA, STR_0184_BUILD_AIRPORTS},
|
||||
{ WWT_PANEL, 14, 545, 566, 0, 21, 0xFF3, STR_LANDSCAPING_TOOLBAR_TIP}, // tree icon is 0x2E6
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 457, 478, 0, 21, 0x2D7, STR_0181_BUILD_RAILROAD_TRACK},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 479, 500, 0, 21, 0x2D8, STR_0182_BUILD_ROADS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 501, 522, 0, 21, 0x2D9, STR_0183_BUILD_SHIP_DOCKS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 523, 544, 0, 21, 0x2DA, STR_0184_BUILD_AIRPORTS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 545, 566, 0, 21, 0xFF3, STR_LANDSCAPING_TOOLBAR_TIP}, // tree icon is 0x2E6
|
||||
|
||||
{ WWT_PANEL, 14, 574, 595, 0, 21, 0x2C9, STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
|
||||
{ WWT_PANEL, 14, 596, 617, 0, 21, 0x2A8, STR_0203_SHOW_LAST_MESSAGE_NEWS},
|
||||
{ WWT_PANEL, 14, 618, 639, 0, 21, 0x2D3, STR_0186_LAND_BLOCK_INFORMATION},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 574, 595, 0, 21, 0x2C9, STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 596, 617, 0, 21, 0x2A8, STR_0203_SHOW_LAST_MESSAGE_NEWS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 618, 639, 0, 21, 0x2D3, STR_0186_LAND_BLOCK_INFORMATION},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -1937,39 +1942,39 @@ static const WindowDesc _toolb_intro_desc = {
|
||||
|
||||
|
||||
static const Widget _toolb_scen_widgets[] = {
|
||||
{ WWT_PANEL, 14, 0, 21, 0, 21, 0x2D6, STR_0171_PAUSE_GAME},
|
||||
{ WWT_PANEL, 14, 22, 43, 0, 21, SPR_OPENTTD_BASE + 57, STR_FAST_FORWARD},
|
||||
{ WWT_PANEL, 14, 44, 65, 0, 21, 0x2EF, STR_0187_OPTIONS},
|
||||
{ WWT_PANEL_2, 14, 66, 87, 0, 21, 0x2D4, STR_0297_SAVE_SCENARIO_LOAD_SCENARIO},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 0, 21, 0, 21, 0x2D6, STR_0171_PAUSE_GAME},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 22, 43, 0, 21, SPR_OPENTTD_BASE + 57, STR_FAST_FORWARD},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 44, 65, 0, 21, 0x2EF, STR_0187_OPTIONS},
|
||||
{ WWT_PANEL_2, RESIZE_NONE, 14, 66, 87, 0, 21, 0x2D4, STR_0297_SAVE_SCENARIO_LOAD_SCENARIO},
|
||||
|
||||
{ WWT_PANEL, 14, 96, 225, 0, 21, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 96, 225, 0, 21, 0x0, STR_NULL},
|
||||
|
||||
{ WWT_PANEL, 14, 233, 362, 0, 21, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, 14, 236, 246, 5, 16, STR_0225, STR_029E_MOVE_THE_STARTING_DATE},
|
||||
{ WWT_CLOSEBOX, 14, 347, 357, 5, 16, STR_0224, STR_029F_MOVE_THE_STARTING_DATE},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 233, 362, 0, 21, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 236, 246, 5, 16, STR_0225, STR_029E_MOVE_THE_STARTING_DATE},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 347, 357, 5, 16, STR_0224, STR_029F_MOVE_THE_STARTING_DATE},
|
||||
|
||||
{ WWT_PANEL, 14, 371, 392, 0, 21, 0x2C4, STR_0175_DISPLAY_MAP_TOWN_DIRECTORY},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 371, 392, 0, 21, 0x2C4, STR_0175_DISPLAY_MAP_TOWN_DIRECTORY},
|
||||
|
||||
{ WWT_PANEL, 14, 400, 421, 0, 21, 0x2DF, STR_017F_ZOOM_THE_VIEW_IN},
|
||||
{ WWT_PANEL, 14, 422, 443, 0, 21, 0x2E0, STR_0180_ZOOM_THE_VIEW_OUT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 400, 421, 0, 21, 0x2DF, STR_017F_ZOOM_THE_VIEW_IN},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 422, 443, 0, 21, 0x2E0, STR_0180_ZOOM_THE_VIEW_OUT},
|
||||
|
||||
{ WWT_PANEL, 14, 452, 473, 0, 21, 0xFF3, STR_022E_LANDSCAPE_GENERATION},
|
||||
{ WWT_PANEL, 14, 474, 495, 0, 21, 0xFED, STR_022F_TOWN_GENERATION},
|
||||
{ WWT_PANEL, 14, 496, 517, 0, 21, 0x2E5, STR_0230_INDUSTRY_GENERATION},
|
||||
{ WWT_PANEL, 14, 518, 539, 0, 21, 0x2D8, STR_0231_ROAD_CONSTRUCTION},
|
||||
{ WWT_PANEL, 14, 540, 561, 0, 21, 0x2E6, STR_0288_PLANT_TREES},
|
||||
{ WWT_PANEL, 14, 562, 583, 0, 21, 0xFF2, STR_0289_PLACE_SIGN},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 452, 473, 0, 21, 0xFF3, STR_022E_LANDSCAPE_GENERATION},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 474, 495, 0, 21, 0xFED, STR_022F_TOWN_GENERATION},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 496, 517, 0, 21, 0x2E5, STR_0230_INDUSTRY_GENERATION},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 518, 539, 0, 21, 0x2D8, STR_0231_ROAD_CONSTRUCTION},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 540, 561, 0, 21, 0x2E6, STR_0288_PLANT_TREES},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 562, 583, 0, 21, 0xFF2, STR_0289_PLACE_SIGN},
|
||||
|
||||
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, 14, 596, 617, 0, 21, 0x2C9, STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
|
||||
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, 14, 618, 639, 0, 21, 0x2D3, STR_0186_LAND_BLOCK_INFORMATION},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 596, 617, 0, 21, 0x2C9, STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 618, 639, 0, 21, 0x2D3, STR_0186_LAND_BLOCK_INFORMATION},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -2209,9 +2214,9 @@ static void ScrollMainViewport(int x, int y)
|
||||
|
||||
|
||||
static const Widget _main_status_widgets[] = {
|
||||
{ WWT_IMGBTN, 14, 0, 139, 0, 11, 0x0, STR_NULL},
|
||||
{ WWT_PUSHIMGBTN, 14, 140, 499, 0, 11, 0x0, STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS},
|
||||
{ WWT_PUSHIMGBTN, 14, 500, 639, 0, 11, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 139, 0, 11, 0x0, STR_NULL},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 140, 499, 0, 11, 0x0, STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 500, 639, 0, 11, 0x0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -2323,14 +2328,6 @@ static void MainWindowWndProc(Window *w, WindowEvent *e) {
|
||||
DebugProc(e->keypress.keycode - ('0' | WKC_ALT));
|
||||
#endif
|
||||
break;
|
||||
case 'A' | WKC_CTRL:
|
||||
disable_computer^=1;
|
||||
ShowInfoF("Disable Computer: %s", disable_computer?"ON":"OFF");
|
||||
break;
|
||||
case 'B' | WKC_CTRL:
|
||||
_local_player^=1;
|
||||
ShowInfoF("Play as computer: %s", _local_player?"ON":"OFF");
|
||||
break;
|
||||
|
||||
// invoke autorail
|
||||
case 'A':
|
||||
@@ -2369,10 +2366,10 @@ static void MainWindowWndProc(Window *w, WindowEvent *e) {
|
||||
}
|
||||
|
||||
|
||||
void ShowSelectGameWindow();
|
||||
void ShowSelectGameWindow(void);
|
||||
extern void ShowJoinStatusWindowAfterJoin(void);
|
||||
|
||||
void SetupColorsAndInitialWindow()
|
||||
void SetupColorsAndInitialWindow(void)
|
||||
{
|
||||
int i;
|
||||
byte *b;
|
||||
@@ -2401,24 +2398,7 @@ void SetupColorsAndInitialWindow()
|
||||
w = AllocateWindow(0, 0, width, height, MainWindowWndProc, 0, NULL);
|
||||
AssignWindowViewport(w, 0, 0, width, height, 0x8080, 0);
|
||||
|
||||
w = AllocateWindowDesc(&_toolb_normal_desc);
|
||||
w->disabled_state = 1 << 17; // disable zoon-in button (by default game is zoomed in)
|
||||
|
||||
if (_networking) { // if networking, disable fast-forward button
|
||||
w->disabled_state |= (1 << 1);
|
||||
if (!_network_server) // if not server, disable pause button
|
||||
w->disabled_state |= (1 << 0);
|
||||
}
|
||||
|
||||
w->flags4 &= ~WF_WHITE_BORDER_MASK;
|
||||
|
||||
PositionMainToolbar(w); // already WC_MAIN_TOOLBAR passed (&_toolb_normal_desc)
|
||||
|
||||
_main_status_desc.top = height - 12;
|
||||
w = AllocateWindowDesc(&_main_status_desc);
|
||||
w->flags4 &= ~WF_WHITE_BORDER_MASK;
|
||||
|
||||
WP(w,def_d).data_1 = -1280;
|
||||
ShowVitalWindows();
|
||||
|
||||
/* Bring joining GUI to front till the client is really joined */
|
||||
if (_networking && !_network_server)
|
||||
@@ -2431,7 +2411,7 @@ void SetupColorsAndInitialWindow()
|
||||
|
||||
w = AllocateWindowDesc(&_toolb_scen_desc);
|
||||
w->disabled_state = 1 << 9;
|
||||
w->flags4 &= ~WF_WHITE_BORDER_MASK;
|
||||
CLRBITS(w->flags4, WF_WHITE_BORDER_MASK);
|
||||
|
||||
PositionMainToolbar(w); // already WC_MAIN_TOOLBAR passed (&_toolb_scen_desc)
|
||||
break;
|
||||
@@ -2440,7 +2420,30 @@ void SetupColorsAndInitialWindow()
|
||||
}
|
||||
}
|
||||
|
||||
void GameSizeChanged()
|
||||
void ShowVitalWindows(void)
|
||||
{
|
||||
Window *w;
|
||||
|
||||
w = AllocateWindowDesc(&_toolb_normal_desc);
|
||||
w->disabled_state = 1 << 17; // disable zoom-in button (by default game is zoomed in)
|
||||
CLRBITS(w->flags4, WF_WHITE_BORDER_MASK);
|
||||
|
||||
if (_networking) { // if networking, disable fast-forward button
|
||||
SETBIT(w->disabled_state, 1);
|
||||
if (!_network_server) // if not server, disable pause button
|
||||
SETBIT(w->disabled_state, 0);
|
||||
}
|
||||
|
||||
PositionMainToolbar(w); // already WC_MAIN_TOOLBAR passed (&_toolb_normal_desc)
|
||||
|
||||
_main_status_desc.top = _screen.height - 12;
|
||||
w = AllocateWindowDesc(&_main_status_desc);
|
||||
CLRBITS(w->flags4, WF_WHITE_BORDER_MASK);
|
||||
|
||||
WP(w,def_d).data_1 = -1280;
|
||||
}
|
||||
|
||||
void GameSizeChanged(void)
|
||||
{
|
||||
RelocateAllWindows(_screen.width, _screen.height);
|
||||
ScreenSizeChanged();
|
||||
|
||||
@@ -2,13 +2,61 @@
|
||||
#include "ttd.h"
|
||||
#include "map.h"
|
||||
|
||||
#define TILE_X_BITS 8
|
||||
#define TILE_Y_BITS 8
|
||||
|
||||
uint _map_log_x = TILE_X_BITS;
|
||||
uint _map_log_y = TILE_Y_BITS;
|
||||
|
||||
byte _map_type_and_height[TILES_X * TILES_Y];
|
||||
byte _map5[TILES_X * TILES_Y];
|
||||
byte _map3_lo[TILES_X * TILES_Y];
|
||||
byte _map3_hi[TILES_X * TILES_Y];
|
||||
byte _map_owner[TILES_X * TILES_Y];
|
||||
byte _map2[TILES_X * TILES_Y];
|
||||
byte _map_extra_bits[TILES_X * TILES_Y / 4];
|
||||
#define MAP_SIZE ((1 << TILE_X_BITS) * (1 << TILE_Y_BITS))
|
||||
|
||||
byte _map_type_and_height [MAP_SIZE];
|
||||
byte _map5 [MAP_SIZE];
|
||||
byte _map3_lo [MAP_SIZE];
|
||||
byte _map3_hi [MAP_SIZE];
|
||||
byte _map_owner [MAP_SIZE];
|
||||
uint16 _map2 [MAP_SIZE];
|
||||
byte _map_extra_bits [MAP_SIZE / 4];
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
TileIndex TileAdd(TileIndex tile, TileIndexDiff add,
|
||||
const char *exp, const char *file, int line)
|
||||
{
|
||||
int dx;
|
||||
int dy;
|
||||
uint x;
|
||||
uint y;
|
||||
|
||||
dx = add & MapMaxX();
|
||||
if (dx >= (int)MapSizeX() / 2) dx -= MapSizeX();
|
||||
dy = (add - dx) / (int)MapSizeX();
|
||||
|
||||
x = TileX(tile) + dx;
|
||||
y = TileY(tile) + dy;
|
||||
|
||||
if (x >= MapSizeX() || y >= MapSizeY()) {
|
||||
char buf[512];
|
||||
|
||||
sprintf(buf, "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed",
|
||||
exp, tile, add);
|
||||
#if !defined(_MSC_VER)
|
||||
fprintf(stderr, "%s:%d %s\n", file, line, buf);
|
||||
#else
|
||||
_assert(buf, (char*)file, line);
|
||||
#endif
|
||||
}
|
||||
|
||||
assert(TILE_XY(x,y) == TILE_MASK(tile + add));
|
||||
|
||||
return TILE_XY(x,y);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
const TileIndexDiffC _tileoffs_by_dir[] = {
|
||||
{-1, 0},
|
||||
{ 0, 1},
|
||||
{ 1, 0},
|
||||
{ 0, -1}
|
||||
};
|
||||
|
||||
@@ -1,22 +1,18 @@
|
||||
#ifndef MAP_H
|
||||
#define MAP_H
|
||||
|
||||
#define TILE_X_BITS 8
|
||||
#define TILE_Y_BITS 8
|
||||
#define TILE_FROM_XY(x,y) (int)((((y) >> 4) << MapLogX()) + ((x) >> 4))
|
||||
#define TILE_XY(x,y) (int)(((y) << MapLogX()) + (x))
|
||||
|
||||
#define TILES_X (1 << TILE_X_BITS)
|
||||
#define TILES_Y (1 << TILE_Y_BITS)
|
||||
#define TILE_MASK(x) ((x) & ((1 << (MapLogX() + MapLogY())) - 1))
|
||||
|
||||
#define TILE_X_MAX (TILES_X - 1)
|
||||
#define TILE_Y_MAX (TILES_Y - 1)
|
||||
|
||||
extern byte _map_type_and_height[];
|
||||
extern byte _map5[];
|
||||
extern byte _map3_lo[];
|
||||
extern byte _map3_hi[];
|
||||
extern byte _map_owner[];
|
||||
extern byte _map2[];
|
||||
extern byte _map_extra_bits[];
|
||||
extern byte _map_type_and_height[];
|
||||
extern byte _map5[];
|
||||
extern byte _map3_lo[];
|
||||
extern byte _map3_hi[];
|
||||
extern byte _map_owner[];
|
||||
extern uint16 _map2[];
|
||||
extern byte _map_extra_bits[];
|
||||
|
||||
// binary logarithm of the map size, try to avoid using this one
|
||||
static inline uint MapLogX(void) { extern uint _map_log_x; return _map_log_x; }
|
||||
@@ -30,4 +26,88 @@ static inline uint MapMaxY(void) { return MapSizeY() - 1; }
|
||||
/* The number of tiles in the map */
|
||||
static inline uint MapSize(void) { return MapSizeX() * MapSizeY(); }
|
||||
|
||||
|
||||
typedef uint16 TileIndex;
|
||||
|
||||
static inline uint TileX(TileIndex tile)
|
||||
{
|
||||
return tile & MapMaxX();
|
||||
}
|
||||
|
||||
static inline uint TileY(TileIndex tile)
|
||||
{
|
||||
return tile >> MapLogX();
|
||||
}
|
||||
|
||||
|
||||
typedef int16 TileIndexDiff;
|
||||
|
||||
typedef struct TileIndexDiffC {
|
||||
int16 x;
|
||||
int16 y;
|
||||
} TileIndexDiffC;
|
||||
|
||||
static inline TileIndexDiff ToTileIndexDiff(TileIndexDiffC tidc)
|
||||
{
|
||||
return (tidc.y << MapLogX()) + tidc.x;
|
||||
}
|
||||
|
||||
|
||||
#ifndef _DEBUG
|
||||
#define TILE_ADD(x,y) ((x) + (y))
|
||||
#else
|
||||
extern TileIndex TileAdd(TileIndex tile, TileIndexDiff add,
|
||||
const char *exp, const char *file, int line);
|
||||
#define TILE_ADD(x, y) (TileAdd((x), (y), #x " + " #y, __FILE__, __LINE__))
|
||||
#endif
|
||||
|
||||
#define TILE_ADDXY(tile, x, y) TILE_ADD(tile, TILE_XY(x, y))
|
||||
|
||||
|
||||
static inline TileIndexDiff TileOffsByDir(uint dir)
|
||||
{
|
||||
extern const TileIndexDiffC _tileoffs_by_dir[4];
|
||||
|
||||
assert(dir < lengthof(_tileoffs_by_dir));
|
||||
return ToTileIndexDiff(_tileoffs_by_dir[dir]);
|
||||
}
|
||||
|
||||
|
||||
static inline uint TileHeight(TileIndex tile)
|
||||
{
|
||||
assert(tile < MapSize());
|
||||
return _map_type_and_height[tile] & 0xf;
|
||||
}
|
||||
|
||||
static inline void SetTileHeight(TileIndex tile, uint height)
|
||||
{
|
||||
assert(tile < MapSize());
|
||||
assert(height < 16);
|
||||
_map_type_and_height[tile] &= ~0x0F;
|
||||
_map_type_and_height[tile] |= height;
|
||||
}
|
||||
|
||||
static inline uint TilePixelHeight(TileIndex tile)
|
||||
{
|
||||
return TileHeight(tile) * 8;
|
||||
}
|
||||
|
||||
static inline int TileType(TileIndex tile)
|
||||
{
|
||||
assert(tile < MapSize());
|
||||
return _map_type_and_height[tile] >> 4;
|
||||
}
|
||||
|
||||
static inline void SetTileType(TileIndex tile, uint type)
|
||||
{
|
||||
assert(tile < MapSize());
|
||||
_map_type_and_height[tile] &= ~0xF0;
|
||||
_map_type_and_height[tile] |= type << 4;
|
||||
}
|
||||
|
||||
static inline bool IsTileType(TileIndex tile, int type)
|
||||
{
|
||||
return TileType(tile) == type;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -71,7 +71,7 @@ typedef struct md5_state_s {
|
||||
} md5_state_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 941 B |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 7.1 KiB |
@@ -0,0 +1,319 @@
|
||||
/* XPM */
|
||||
static char * openttd_64_xpm[] = {
|
||||
"64 64 252 2",
|
||||
" c None",
|
||||
". c #212429",
|
||||
"+ c #030006",
|
||||
"@ c #402F20",
|
||||
"# c #80582F",
|
||||
"$ c #000100",
|
||||
"% c #252B31",
|
||||
"& c #2B1C0D",
|
||||
"* c #DC9C55",
|
||||
"= c #FFC36A",
|
||||
"- c #1F180E",
|
||||
"; c #D09351",
|
||||
"> c #FEBA6A",
|
||||
", c #ECAB62",
|
||||
"' c #7E5935",
|
||||
") c #F1AE5F",
|
||||
"! c #F8AE62",
|
||||
"~ c #2E3339",
|
||||
"{ c #6F4B28",
|
||||
"] c #150D04",
|
||||
"^ c #C3884C",
|
||||
"/ c #F4AB5F",
|
||||
"( c #684B2B",
|
||||
"_ c #353B3E",
|
||||
": c #11100E",
|
||||
"< c #FCB265",
|
||||
"[ c #5D4327",
|
||||
"} c #BA8144",
|
||||
"| c #E9A863",
|
||||
"1 c #E2A15A",
|
||||
"2 c #563B1E",
|
||||
"3 c #AC7A45",
|
||||
"4 c #694D32",
|
||||
"5 c #383937",
|
||||
"6 c #929492",
|
||||
"7 c #A5A8A8",
|
||||
"8 c #9B9E9D",
|
||||
"9 c #665D51",
|
||||
"0 c #49321A",
|
||||
"a c #3E4144",
|
||||
"b c #090F13",
|
||||
"c c #D5DADD",
|
||||
"d c #E7EDEF",
|
||||
"e c #F9FBF8",
|
||||
"f c #988E82",
|
||||
"g c #0A0201",
|
||||
"h c #A2703D",
|
||||
"i c #D9DBD7",
|
||||
"j c #F6F8F5",
|
||||
"k c #9A8A78",
|
||||
"l c #916333",
|
||||
"m c #5D5449",
|
||||
"n c #F1F3F0",
|
||||
"o c #EAA859",
|
||||
"p c #4B4D4F",
|
||||
"q c #9A6B37",
|
||||
"r c #696762",
|
||||
"s c #DFE1DE",
|
||||
"t c #EFF1EE",
|
||||
"u c #917E6B",
|
||||
"v c #332312",
|
||||
"w c #936D47",
|
||||
"x c #563E28",
|
||||
"y c #4F4842",
|
||||
"z c #767470",
|
||||
"A c #B1B3B0",
|
||||
"B c #CDD1D0",
|
||||
"C c #E9EBE7",
|
||||
"D c #F3F5F2",
|
||||
"E c #C0C2BF",
|
||||
"F c #6F6051",
|
||||
"G c #635345",
|
||||
"H c #FFB25F",
|
||||
"I c #050A06",
|
||||
"J c #664220",
|
||||
"K c #403A34",
|
||||
"L c #858886",
|
||||
"M c #C2C8CC",
|
||||
"N c #EDEFEC",
|
||||
"O c #DFE5E7",
|
||||
"P c #797064",
|
||||
"Q c #A8A29B",
|
||||
"R c #BE8953",
|
||||
"S c #ADB3B7",
|
||||
"T c #E5E7E4",
|
||||
"U c #9F7E5E",
|
||||
"V c #F4A554",
|
||||
"W c #F3A956",
|
||||
"X c #D98F46",
|
||||
"Y c #443D37",
|
||||
"Z c #B1B0A7",
|
||||
"` c #FDFFFC",
|
||||
" . c #927960",
|
||||
".. c #FFA652",
|
||||
"+. c #FBAA59",
|
||||
"@. c #11181E",
|
||||
"#. c #C9C5BD",
|
||||
"$. c #A89E91",
|
||||
"%. c #F6A052",
|
||||
"&. c #FBA950",
|
||||
"*. c #1A0B00",
|
||||
"=. c #AC783D",
|
||||
"-. c #A68666",
|
||||
";. c #7E6C5D",
|
||||
">. c #BB7B44",
|
||||
",. c #F69F4A",
|
||||
"'. c #F79A48",
|
||||
"). c #FFA349",
|
||||
"!. c #845728",
|
||||
"~. c #FDC880",
|
||||
"{. c #C3813D",
|
||||
"]. c #9E7047",
|
||||
"^. c #F5983F",
|
||||
"/. c #D07D2D",
|
||||
"(. c #7A5028",
|
||||
"_. c #817E79",
|
||||
":. c #85705A",
|
||||
"<. c #CA8136",
|
||||
"[. c #985A22",
|
||||
"}. c #98908A",
|
||||
"|. c #8B6C50",
|
||||
"1. c #F9953F",
|
||||
"2. c #C77228",
|
||||
"3. c #D1D1C8",
|
||||
"4. c #F39A4E",
|
||||
"5. c #FF9C3D",
|
||||
"6. c #F98F34",
|
||||
"7. c #F79335",
|
||||
"8. c #945A2A",
|
||||
"9. c #C17A3D",
|
||||
"0. c #EE8C36",
|
||||
"a. c #ED8632",
|
||||
"b. c #E8903D",
|
||||
"c. c #654B35",
|
||||
"d. c #B36420",
|
||||
"e. c #FF9030",
|
||||
"f. c #FB8B33",
|
||||
"g. c #FB8A29",
|
||||
"h. c #C06B20",
|
||||
"i. c #884914",
|
||||
"j. c #DD863C",
|
||||
"k. c #FB8427",
|
||||
"l. c #FD8E23",
|
||||
"m. c #B15B11",
|
||||
"n. c #E78024",
|
||||
"o. c #FC841D",
|
||||
"p. c #F37E13",
|
||||
"q. c #F89A41",
|
||||
"r. c #D77921",
|
||||
"s. c #655340",
|
||||
"t. c #FE801C",
|
||||
"u. c #FE7F0C",
|
||||
"v. c #FE7A08",
|
||||
"w. c #FF8814",
|
||||
"x. c #C4600D",
|
||||
"y. c #FF8700",
|
||||
"z. c #4E2505",
|
||||
"A. c #000205",
|
||||
"B. c #745C46",
|
||||
"C. c #DF7216",
|
||||
"D. c #F2760D",
|
||||
"E. c #FE7404",
|
||||
"F. c #FF8000",
|
||||
"G. c #974600",
|
||||
"H. c #7A3F12",
|
||||
"I. c #593513",
|
||||
"J. c #513D2D",
|
||||
"K. c #6A421A",
|
||||
"L. c #9C520F",
|
||||
"M. c #F67300",
|
||||
"N. c #3E210D",
|
||||
"O. c #BBC0C3",
|
||||
"P. c #CE6000",
|
||||
"Q. c #E86E00",
|
||||
"R. c #FF7500",
|
||||
"S. c #FF7B00",
|
||||
"T. c #A14800",
|
||||
"U. c #7A3601",
|
||||
"V. c #1E3E10",
|
||||
"W. c #352A35",
|
||||
"X. c #122509",
|
||||
"Y. c #3A7E1E",
|
||||
"Z. c #813A00",
|
||||
"`. c #8B8074",
|
||||
" + c #C25600",
|
||||
".+ c #A1836B",
|
||||
"++ c #F46B00",
|
||||
"@+ c #B57031",
|
||||
"#+ c #AD5000",
|
||||
"$+ c #1A3710",
|
||||
"%+ c #62C52C",
|
||||
"&+ c #61CC34",
|
||||
"*+ c #382D38",
|
||||
"=+ c #0B1A07",
|
||||
"-+ c #5BB92A",
|
||||
";+ c #6DE73A",
|
||||
">+ c #4A9222",
|
||||
",+ c #D05B00",
|
||||
"'+ c #DF5F00",
|
||||
")+ c #662E00",
|
||||
"!+ c #55B32E",
|
||||
"~+ c #6AD432",
|
||||
"{+ c #69DC39",
|
||||
"]+ c #1D380B",
|
||||
"^+ c #0A1608",
|
||||
"/+ c #72E236",
|
||||
"(+ c #438D24",
|
||||
"_+ c #752500",
|
||||
":+ c #A64002",
|
||||
"<+ c #BC5700",
|
||||
"[+ c #17320B",
|
||||
"}+ c #57AC28",
|
||||
"|+ c #42861D",
|
||||
"1+ c #5A2900",
|
||||
"2+ c #152C0C",
|
||||
"3+ c #0A1104",
|
||||
"4+ c #100001",
|
||||
"5+ c #469724",
|
||||
"6+ c #73F43D",
|
||||
"7+ c #234912",
|
||||
"8+ c #2E5F18",
|
||||
"9+ c #50AF29",
|
||||
"0+ c #6EDE32",
|
||||
"a+ c #295914",
|
||||
"b+ c #5CC132",
|
||||
"c+ c #255114",
|
||||
"d+ c #38761E",
|
||||
"e+ c #3F8222",
|
||||
"f+ c #52A025",
|
||||
"g+ c #6F2F00",
|
||||
"h+ c #894000",
|
||||
"i+ c #377019",
|
||||
"j+ c #7DFF3F",
|
||||
"k+ c #346A1C",
|
||||
"l+ c #C96E14",
|
||||
"m+ c #FF7004",
|
||||
"n+ c #0B200A",
|
||||
"o+ c #74EC36",
|
||||
"p+ c #7C4A1D",
|
||||
"q+ c #DE6701",
|
||||
"r+ c #210901",
|
||||
"s+ c #20440F",
|
||||
"t+ c #4EA529",
|
||||
"u+ c #8C3D00",
|
||||
"v+ c #4D9C27",
|
||||
"w+ c #66CF2D",
|
||||
"x+ c #C55301",
|
||||
"y+ c #2C0F00",
|
||||
"z+ c #142806",
|
||||
"A+ c #361500",
|
||||
"B+ c #421C02",
|
||||
"C+ c #3E7A1A",
|
||||
" ",
|
||||
" . + ",
|
||||
" . @ # $ ",
|
||||
" % & * = # $ ",
|
||||
" % - ; > , > ' $ ",
|
||||
" % - ; > , ) ! > ' $ ",
|
||||
" ~ - ; > ! ! , ) ) > { $ ",
|
||||
" ~ ] ^ > ! , , ! / , ! > ( $ ",
|
||||
" _ : ^ > , ! ! , / ! , , > < ( $ ",
|
||||
" ~ : ; > , ! , , < , / ! / / > < [ $ ",
|
||||
" _ : } > , , ! ! | 1 1 , ) , , , ) < 2 $ ",
|
||||
" _ : 3 = , , < , * 4 [ 4 ( 3 < / , ! > , 2 $ ",
|
||||
" _ : } > / ! , ! , } 5 6 7 8 9 | < , , ) ) < 0 $ ",
|
||||
" a b 3 > ! , | ! , < ^ 9 c d e f | ) ! , ! , > , 0 $ ",
|
||||
" a g h > , ! ! , , > > } 9 i j e k | , ! , ! ! / > / @ $ ",
|
||||
" a + h > , ! , , < ! , * l m i n e k | ! ! < > , , , > o @ $ ",
|
||||
" p b q = , , ! < , 1 h { [ @ r s t e u ; > ; # # 3 ! , ! > | v $ ",
|
||||
" p b w > / ! ! ) | q x y z 8 A B C t D E F # 2 p z G 1 ! , / H 1 v $ ",
|
||||
" p I l > , , , < * J K L M i C C C C n N D O 6 P M d Q R < ) ) / < * & $ ",
|
||||
" p b # > , , ! < | ( a S i N n n n D n t C t n n T C e B U < V V V W H X & $ ",
|
||||
" p b # > ) < , , ) q Y Z s C n t e ` j t n n n n t N N t C ./ V / V ..V +.X - $ ",
|
||||
" @.b # > , ! , ! < 1 x L i n n n D #.u $.e C C D ` C n C t e f * V %.%.V %.&...X *.$ ",
|
||||
" @.b { > > , ! , , < =.y M N t C e Q -.^ ;.C D e k Q ` n n t e Q >...,.,.,.,.,.'.).X ] $ ",
|
||||
" @.b { > ) , , , / ! ) !.z i t n j s U ~.{.9 i t j u !.f j t n e B ].&.'.'.'.'.'.^.'.)./.] $ ",
|
||||
" @.@.( > < / ! / , , / / (._.C n t n C :.V <.G i n j k %.[.}.j t D N |.,.'.^.'.^.1.^.1.1.).2.] $ ",
|
||||
" @.: 2 > ! / / / / / +.V +.(.}.C C t t ` Z ' [.9 3.n e u 4.5.(.E D n ` $.X 1.^.1.1.1.6.7.1.6.5.2.g $ ",
|
||||
" @.@.2 H W / V V V V V V V &.8._.C D C n n e E G P T t e k ,.5./.F n j i _.9.6.7.6.0.1.a.6.6.6.6.5.2.g $ ",
|
||||
" @.@.2 +.+./ V V V %.%.V %.,.V b.c.i D t t t N D d i C t j :.d.0.5.[._.u U R '.6.1.6.6.e.6.f.f.6.f.g.e.h.g $ ",
|
||||
" @.@.0 +.+.%.V V %.V ,.%.,.%.,.,...8.Q j t C n t t n N C t D #.z [ i.2.j.4...1.6.g.6.f.6.g.g.g.f.g.k.g.g.l.m.g $ ",
|
||||
" @.@.0 ..&.%.,.4.,.%.,.,.'.,.,.'.'.^.b.4 3.` n n C t t t n t t j D B 8 F i.n.e.k.f.f.f.g.k.f.g.g.o.o.o.o.p.o.l.m.g $ ",
|
||||
" @.. 0 &...,.%.,.'.,.'.'.'.'.^.^.^.^.q.1.r.s.B ` D n t t C n t t t t N t d 7 c.h.e.g.k.g.g.o.k.k.o.k.o.t.u.t.v.u.w.m.] $ ",
|
||||
" % g j.&.'.,.^.'.,.'.'.'.^.1.1.1.1.1.7.1.5.n.# 6 C ` j n n t t t t t t t N D O F x.l.o.t.t.t.t.u.t.u.t.t.u.v.u.u.v.y.z.A. ",
|
||||
" A.& j.).'.'.1.1.0.^.1.^.1.0.1.6.1.e.7.a.r.n.d.|.f i e e C n t t t t t t N e d B.C.o.p.t.u.D.v.D.v.v.v.v.v.E.v.F.G.g A. ",
|
||||
" g v b.q.0.^.1.5.a.7.6.7.6.6.6.a.d.H.I.J.K.e.k.2.8. .#.j t t D n t t t t N e M L.u.v.u.t.u.v.v.v.M.E.v.E.M.F.G.A.A. ",
|
||||
" A.N.^.6.7.a.7.1.6.6.6.6.6.e.h.@ r 6 O.6 d.g.g.l.P.:.C t t C e e t t t t N ` :.Q.v.E.E.v.R.E.R.v.E.E.R.F.G.+ A. ",
|
||||
" A.N.1.6.6.f.g.f.f.f.g.f.f.C.c.M N t O |.k.o.o.P.G i t e .:.3.e t t t n ` 7 x.v.S.v.E.R.R.R.E.R.S.F.T.A.$ ",
|
||||
" . $ N.6.e.f.g.g.g.f.o.k.k.k.K.S n D e A L.w.w.P.s.i t e U C.U.#.D C n t e M d.F.E.E.R.S.R.R.R.R.F.T.A.V.V.$ ",
|
||||
" W.X.Y.g N.6.l.g.k.k.p.k.o.w.t.Z.Q n t t D `. +u. +G i n D .+D.++J s n n C j M @+u.E.R.S.R.S.R.S.F.#+I $+%+&+V.$ ",
|
||||
" *+=+-+;+>+g z.k.o.p.t.u.t.t.u.u.G._.t t t n d B.,+'+s.i n e .+D.++)+O.t n t ` A d.u.M.R.R.R.S.R.F.#+A.$+!+~+{+~+]+$ ",
|
||||
" *+^+-+/+~+~+(++ z.w.o.u.t.t.v.u.t. +F C n t t j O B._+c.i n j U D.:+J.#.t n t ` k n.R.R.R.R.R.R.F.<+$ [+!+~+&+~+{+~+]+$ ",
|
||||
" ~ =+}+/+~+{+~+/+|+A.1+u.u.v.M.v.v.v.,+c.s n t C D j d _.`.i n ` |.)+@ 6 i C n j O ].l.E.R.S.R.R.F.<+g 2+-+&+~+~+{+&+;+&+3+$ ",
|
||||
"a 4+5+6+~+~+~+{+7+8+(+A.1+F.v.v.E.R.E.++K.#.n n n t t N t T C t D #.7 E i N n n e f j.S.E.M.R.M.F. ++ [+9+&+{+~+{+~+0+{+a+I @. ",
|
||||
" + 2+b+{+{+/+c+V.]+d+e++ )+v.v.R.R.E.E.U.S t n n e D t t N t C t j N C t t D ` Q >.w.E.R.R.R.F.P.g $+d+$+2+f+/+~+~+/+8++ A. ",
|
||||
" b X.&+/+c+V.{+~+I >+e++ g+S.S.S.S.E.h+}.t ` u u T ` D n t n t t n n D ` C }.>.g.E.R.R.R.F.P.g 2+d+=+!+f+=+}+{+/+8++ $ ",
|
||||
" + 2+&+X.i+j+k+V.{+~+i+A.g+S.R.E.v.T.z ` i h l+(.Q T e C n C e ` ` T A |.9.w.m+R.R.S.F.P.*.n+!+f+3+!+j+i+d+j+k+g A. ",
|
||||
" g $+&+$+2+V.o+-+3+Y.e+g U.F.v.E.'+{ `.P j.w.M.<+p+$.e n j 3.$.k w d.l.F.E.E.R.S.S.,+*.n+5+&+/+f+=+e+[+b+i++ A. ",
|
||||
" g V.-+8+0+b+^+e+[+|+k+$ U.F.S.E.v.k.f.t.m+R.S.'+B.N t j .9.n.o.u.R.E.R.S.R.F.q+r+n+e+[+!+{+o+>+=+!+e+g $ ",
|
||||
" + V./+&+=+3+f+}+A.&+d+$ Z.S.v.R.R.E.E.E.S.S.,+G 3.n j .+u.m+E.E.R.R.M.R.S.q+*.=+e+3+V.6+~+~+{+0+e++ $ ",
|
||||
" + s+!+f+%+n+=+t+b+5+k+I u+F.S.S.R.S.R.R.S.,+G i D e .+D.E.v.R.R.R.R.F.Q.r+3+t+c+e+V.i+/+~+;+e++ $ ",
|
||||
" + 7+;+;+}+v+w+X.=+>+k+A.h+F.R.S.R.R.S.S.x+G T ` ` .+p.R.R.M.S.R.S.Q.y+^+(+&+~+;+~+2+e+o+e++ $ ",
|
||||
" + 7+{+;+&+2+3+e+z+(+8+g G.F.R.R.R.R.M.,+J.S O.M :.o.R.R.R.R.F.Q.y+^+|+V.!+/+~+{+b+>+>+b $ ",
|
||||
" + 7+o+$+c+%+z+k+v+/+c+A.T.F.S.R.R.R.E.x.d.@+9.j.u.E.R.R.F.M.A+I e+=+s+o+~+~+~+o+>++ g ",
|
||||
" + 8+}+n+}+!+v+{+[+5+a+$ T.F.S.R.R.R.S.F.w.w.v.E.R.R.S.Q.A+A.5+a+8+$+(+/+~+;+>+b $ ",
|
||||
" g i+}+n+~+{+2+8+X.t+c+$ #+F.S.R.R.R.v.E.E.v.R.S.S.M.B+$ |+&+&+/+b+n+(+6+>++ $ ",
|
||||
" I k+~+b+z+d+j+(+I b+7+A.#+F.S.R.E.E.E.E.R.R.S.M.B+$ e+&+&+{+~+/+!+v+t+: I ",
|
||||
" g i+!+e+;+~+[+e+0+&+V.g #+F.S.R.v.E.R.S.S.D.z.g e+&+~+~+~+{+~+o+}+I $ ",
|
||||
" g i+6+%+2+C+;+~+{+&+n+g <+F.R.R.R.R.S.M.z.A.I c+~+0+~+~+~+/+t+: I ",
|
||||
" + e+}+d+/+~+{+/+i+g + ] <+F.S.M.S.S.1+g + 8+{+~+{+/+}+: A. ",
|
||||
" + d+6+~+~+;+i+A.$ A.g P.F.R.S.1++ + 8+/+;+!+3+A. ",
|
||||
" + e+o+;+d++ A. $ g P.F.)+g b k+b+3+A. ",
|
||||
" + e+(+b $ g *.1+A. + + + ",
|
||||
" g + g $ A. I ",
|
||||
" $ ",
|
||||
" "};
|
||||
@@ -9,9 +9,10 @@
|
||||
#include "network.h"
|
||||
#include "network_data.h"
|
||||
#include "network_server.h"
|
||||
#include "engine.h"
|
||||
|
||||
extern void StartupEconomy();
|
||||
extern void InitNewsItemStructs();
|
||||
extern void StartupEconomy(void);
|
||||
extern void InitNewsItemStructs(void);
|
||||
|
||||
byte _name_array[512][32];
|
||||
|
||||
@@ -28,11 +29,15 @@ static inline uint32 ROR(uint32 x, int n)
|
||||
#ifdef RANDOM_DEBUG
|
||||
#include "network_data.h"
|
||||
|
||||
uint32 DoRandom(uint line, char *file)
|
||||
uint32 DoRandom(int line, const char *file)
|
||||
#else
|
||||
uint32 Random()
|
||||
uint32 Random(void)
|
||||
#endif
|
||||
{
|
||||
|
||||
uint32 s;
|
||||
uint32 t;
|
||||
|
||||
#ifdef RANDOM_DEBUG
|
||||
if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server))
|
||||
printf("Random [%d/%d] %s:%d\n",_frame_counter, _current_player, file, line);
|
||||
@@ -40,8 +45,8 @@ uint32 Random()
|
||||
|
||||
#ifdef PLAYER_SEED_RANDOM
|
||||
if (_current_player>=MAX_PLAYERS || !_networking) {
|
||||
uint32 s = _random_seeds[0][0];
|
||||
uint32 t = _random_seeds[0][1];
|
||||
s = _random_seeds[0][0];
|
||||
t = _random_seeds[0][1];
|
||||
_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7);
|
||||
return _random_seeds[0][1] = ROR(s, 3);
|
||||
} else {
|
||||
@@ -52,15 +57,15 @@ uint32 Random()
|
||||
return _player_seeds[_current_player][1] = ROR(s, 3);
|
||||
}
|
||||
#else
|
||||
uint32 s = _random_seeds[0][0];
|
||||
uint32 t = _random_seeds[0][1];
|
||||
s = _random_seeds[0][0];
|
||||
t = _random_seeds[0][1];
|
||||
_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7);
|
||||
return _random_seeds[0][1] = ROR(s, 3);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef RANDOM_DEBUG
|
||||
uint DoRandomRange(uint max, uint line, char *file)
|
||||
uint DoRandomRange(uint max, int line, const char *file)
|
||||
{
|
||||
return (uint16)DoRandom(line, file) * max >> 16;
|
||||
}
|
||||
@@ -71,7 +76,7 @@ uint RandomRange(uint max)
|
||||
}
|
||||
#endif
|
||||
|
||||
uint32 InteractiveRandom()
|
||||
uint32 InteractiveRandom(void)
|
||||
{
|
||||
uint32 t = _random_seeds[1][1];
|
||||
uint32 s = _random_seeds[1][0];
|
||||
@@ -84,7 +89,7 @@ uint InteractiveRandomRange(uint max)
|
||||
return (uint16)InteractiveRandom() * max >> 16;
|
||||
}
|
||||
|
||||
void InitPlayerRandoms()
|
||||
void InitPlayerRandoms(void)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<MAX_PLAYERS; i++) {
|
||||
@@ -149,39 +154,48 @@ void CSleep(int milliseconds)
|
||||
#endif
|
||||
}
|
||||
|
||||
void InitializeClearLand();
|
||||
void InitializeRail();
|
||||
void InitializeRailGui();
|
||||
void InitializeRoad();
|
||||
void InitializeRoadGui();
|
||||
void InitializeAirportGui();
|
||||
void InitializeDock();
|
||||
void InitializeDockGui();
|
||||
void InitializeIndustries();
|
||||
void InitializeLandscape();
|
||||
void InitializeTowns();
|
||||
void InitializeTrees();
|
||||
void InitializeStations();
|
||||
static void InitializeNameMgr();
|
||||
void InitializePlayers();
|
||||
static void InitializeCheats();
|
||||
void InitializeVehicles(void);
|
||||
void InitializeOrders(void);
|
||||
void InitializeClearLand(void);
|
||||
void InitializeRail(void);
|
||||
void InitializeRailGui(void);
|
||||
void InitializeRoad(void);
|
||||
void InitializeRoadGui(void);
|
||||
void InitializeAirportGui(void);
|
||||
void InitializeDock(void);
|
||||
void InitializeDockGui(void);
|
||||
void InitializeIndustries(void);
|
||||
void InitializeLandscape(void);
|
||||
void InitializeTowns(void);
|
||||
void InitializeTrees(void);
|
||||
void InitializeSigns(void);
|
||||
void InitializeStations(void);
|
||||
static void InitializeNameMgr(void);
|
||||
void InitializePlayers(void);
|
||||
static void InitializeCheats(void);
|
||||
|
||||
void GenerateLandscape();
|
||||
void GenerateClearTile();
|
||||
void GenerateLandscape(void);
|
||||
void GenerateClearTile(void);
|
||||
|
||||
void GenerateIndustries();
|
||||
void GenerateUnmovables();
|
||||
void GenerateTowns();
|
||||
void GenerateIndustries(void);
|
||||
void GenerateUnmovables(void);
|
||||
void GenerateTowns(void);
|
||||
|
||||
void StartupPlayers();
|
||||
void StartupEngines();
|
||||
void StartupDisasters();
|
||||
void GenerateTrees();
|
||||
void StartupPlayers(void);
|
||||
void StartupDisasters(void);
|
||||
void GenerateTrees(void);
|
||||
|
||||
void ConvertGroundTilesIntoWaterTiles();
|
||||
void ConvertGroundTilesIntoWaterTiles(void);
|
||||
|
||||
void InitializeGame()
|
||||
void InitializeGame(void)
|
||||
{
|
||||
// Initialize the autoreplace array. Needs to be cleared between each game
|
||||
uint i;
|
||||
for (i = 0; i < lengthof(_autoreplace_array); i++)
|
||||
_autoreplace_array[i] = i;
|
||||
|
||||
AddTypeToEngines(); // make sure all engines have a type
|
||||
|
||||
SetObjectToPlace(1, 0, 0, 0);
|
||||
|
||||
_pause = 0;
|
||||
@@ -198,7 +212,7 @@ void InitializeGame()
|
||||
}
|
||||
|
||||
InitializeVehicles();
|
||||
_backup_orders_tile = 0;
|
||||
InitializeOrders();
|
||||
|
||||
InitNewsItemStructs();
|
||||
InitializeLandscape();
|
||||
@@ -212,6 +226,7 @@ void InitializeGame()
|
||||
InitializeDockGui();
|
||||
InitializeTowns();
|
||||
InitializeTrees();
|
||||
InitializeSigns();
|
||||
InitializeStations();
|
||||
InitializeIndustries();
|
||||
|
||||
@@ -308,13 +323,13 @@ byte *GetName(int id, byte *buff)
|
||||
}
|
||||
|
||||
|
||||
static void InitializeCheats()
|
||||
static void InitializeCheats(void)
|
||||
{
|
||||
memset(&_cheats, 0, sizeof(Cheats));
|
||||
}
|
||||
|
||||
|
||||
static void InitializeNameMgr()
|
||||
static void InitializeNameMgr(void)
|
||||
{
|
||||
memset(_name_array, 0, sizeof(_name_array));
|
||||
}
|
||||
@@ -353,13 +368,6 @@ StringID RealAllocateName(const byte *name, byte skip, bool check_double)
|
||||
return free_item | 0x7800 | (skip << 8);
|
||||
}
|
||||
|
||||
const TileIndexDiff _tileoffs_by_dir[4] = {
|
||||
TILE_XY(-1, 0),
|
||||
TILE_XY(0, 1),
|
||||
TILE_XY(1, 0),
|
||||
TILE_XY(0, -1),
|
||||
};
|
||||
|
||||
|
||||
#define M(a,b) ((a<<5)|b)
|
||||
static const uint16 _month_date_from_year_day[] = {
|
||||
@@ -442,7 +450,7 @@ uint ConvertYMDToDay(uint year, uint month, uint day)
|
||||
}
|
||||
|
||||
// convert a date on the form
|
||||
// 1920 - 2090
|
||||
// 1920 - 2090 (MAX_YEAR_END_REAL)
|
||||
// 192001 - 209012
|
||||
// 19200101 - 20901231
|
||||
// or if > 2090 and below 65536, treat it as a daycount
|
||||
@@ -451,7 +459,7 @@ uint ConvertIntDate(uint date)
|
||||
{
|
||||
uint year, month = 0, day = 1;
|
||||
|
||||
if (IS_INT_INSIDE(date, 1920, 2090 + 1)) {
|
||||
if (IS_INT_INSIDE(date, 1920, MAX_YEAR_END_REAL + 1)) {
|
||||
year = date - 1920;
|
||||
} else if (IS_INT_INSIDE(date, 192001, 209012+1)) {
|
||||
month = date % 100 - 1;
|
||||
@@ -526,21 +534,21 @@ void InitializeLandscapeVariables(bool only_constants)
|
||||
// distance in Manhattan metric
|
||||
uint GetTileDist(TileIndex xy1, TileIndex xy2)
|
||||
{
|
||||
return myabs(GET_TILE_X(xy1) - GET_TILE_X(xy2)) +
|
||||
myabs(GET_TILE_Y(xy1) - GET_TILE_Y(xy2));
|
||||
return myabs(TileX(xy1) - TileX(xy2)) +
|
||||
myabs(TileY(xy1) - TileY(xy2));
|
||||
}
|
||||
|
||||
// maximum distance in x _or_ y
|
||||
uint GetTileDist1D(TileIndex xy1, TileIndex xy2)
|
||||
{
|
||||
return max(myabs(GET_TILE_X(xy1) - GET_TILE_X(xy2)),
|
||||
myabs(GET_TILE_Y(xy1) - GET_TILE_Y(xy2)));
|
||||
return max(myabs(TileX(xy1) - TileX(xy2)),
|
||||
myabs(TileY(xy1) - TileY(xy2)));
|
||||
}
|
||||
|
||||
uint GetTileDist1Db(TileIndex xy1, TileIndex xy2)
|
||||
{
|
||||
int a = myabs(GET_TILE_X(xy1) - GET_TILE_X(xy2));
|
||||
int b = myabs(GET_TILE_Y(xy1) - GET_TILE_Y(xy2));
|
||||
int a = myabs(TileX(xy1) - TileX(xy2));
|
||||
int b = myabs(TileY(xy1) - TileY(xy2));
|
||||
|
||||
if (a > b)
|
||||
return a*2+b;
|
||||
@@ -550,22 +558,22 @@ uint GetTileDist1Db(TileIndex xy1, TileIndex xy2)
|
||||
|
||||
uint GetTileDistAdv(TileIndex xy1, TileIndex xy2)
|
||||
{
|
||||
uint a = myabs(GET_TILE_X(xy1) - GET_TILE_X(xy2));
|
||||
uint b = myabs(GET_TILE_Y(xy1) - GET_TILE_Y(xy2));
|
||||
uint a = myabs(TileX(xy1) - TileX(xy2));
|
||||
uint b = myabs(TileY(xy1) - TileY(xy2));
|
||||
return a*a+b*b;
|
||||
}
|
||||
|
||||
bool CheckDistanceFromEdge(TileIndex tile, uint distance)
|
||||
{
|
||||
return IS_INT_INSIDE(GET_TILE_X(tile), distance, TILE_X_MAX + 1 - distance) &&
|
||||
IS_INT_INSIDE(GET_TILE_Y(tile), distance, TILE_Y_MAX + 1 - distance);
|
||||
return IS_INT_INSIDE(TileX(tile), distance, MapSizeX() - distance) &&
|
||||
IS_INT_INSIDE(TileY(tile), distance, MapSizeY() - distance);
|
||||
}
|
||||
|
||||
void OnNewDay_Train(Vehicle *v);
|
||||
void OnNewDay_RoadVeh(Vehicle *v);
|
||||
void OnNewDay_Aircraft(Vehicle *v);
|
||||
void OnNewDay_Ship(Vehicle *v);
|
||||
void OnNewDay_EffectVehicle(Vehicle *v) { /* empty */ }
|
||||
static void OnNewDay_EffectVehicle(Vehicle *v) { /* empty */ }
|
||||
void OnNewDay_DisasterVehicle(Vehicle *v);
|
||||
|
||||
typedef void OnNewVehicleDayProc(Vehicle *v);
|
||||
@@ -579,21 +587,21 @@ static OnNewVehicleDayProc * _on_new_vehicle_day_proc[] = {
|
||||
OnNewDay_DisasterVehicle,
|
||||
};
|
||||
|
||||
void EnginesDailyLoop();
|
||||
void DisasterDailyLoop();
|
||||
void PlayersMonthlyLoop();
|
||||
void EnginesMonthlyLoop();
|
||||
void TownsMonthlyLoop();
|
||||
void IndustryMonthlyLoop();
|
||||
void StationMonthlyLoop();
|
||||
void EnginesDailyLoop(void);
|
||||
void DisasterDailyLoop(void);
|
||||
void PlayersMonthlyLoop(void);
|
||||
void EnginesMonthlyLoop(void);
|
||||
void TownsMonthlyLoop(void);
|
||||
void IndustryMonthlyLoop(void);
|
||||
void StationMonthlyLoop(void);
|
||||
|
||||
void PlayersYearlyLoop();
|
||||
void TrainsYearlyLoop();
|
||||
void RoadVehiclesYearlyLoop();
|
||||
void AircraftYearlyLoop();
|
||||
void ShipsYearlyLoop();
|
||||
void PlayersYearlyLoop(void);
|
||||
void TrainsYearlyLoop(void);
|
||||
void RoadVehiclesYearlyLoop(void);
|
||||
void AircraftYearlyLoop(void);
|
||||
void ShipsYearlyLoop(void);
|
||||
|
||||
void WaypointsDailyLoop();
|
||||
void WaypointsDailyLoop(void);
|
||||
|
||||
|
||||
static const uint16 _autosave_months[] = {
|
||||
@@ -604,9 +612,12 @@ static const uint16 _autosave_months[] = {
|
||||
0x001, // every 12 months
|
||||
};
|
||||
|
||||
void IncreaseDate()
|
||||
void IncreaseDate(void)
|
||||
{
|
||||
int i,ctr,t;
|
||||
const int vehicles_per_day = (1 << (sizeof(_date_fract) * 8)) / 885;
|
||||
uint i;
|
||||
VehicleID ctr;
|
||||
int t;
|
||||
YearMonthDay ymd;
|
||||
|
||||
if (_game_mode == GM_MENU) {
|
||||
@@ -620,15 +631,15 @@ void IncreaseDate()
|
||||
65536 / 885 = 74; 74x12 = 888. So max 888. Any vehicles above that were not _on_new_vehicle_day_proc'd
|
||||
eg. aged.
|
||||
So new code updates it for max vehicles.
|
||||
(NUM_VEHICLES / maximum number of times ctr is incremented before reset ) + 1 (to get last vehicles too)
|
||||
(_vehicles_size / maximum number of times ctr is incremented before reset ) + 1 (to get last vehicles too)
|
||||
max size of _date_fract / 885 (added each tick) is number of times before ctr is reset.
|
||||
Calculation might look complicated, but compiler just replaces it with 35, so that's ok
|
||||
*/
|
||||
|
||||
ctr = _vehicle_id_ctr_day;
|
||||
for(i=0; i!=(NUM_VEHICLES / ((1<<sizeof(_date_fract)*8) / 885)) + 1 && ctr != lengthof(_vehicles); i++) {
|
||||
Vehicle *v = &_vehicles[ctr++];
|
||||
if ((t=v->type) != 0)
|
||||
for (i = 0; i != (_vehicles_size / vehicles_per_day) + 1 && ctr != _vehicles_size; i++) {
|
||||
Vehicle *v = GetVehicle(ctr++);
|
||||
if ((t = v->type) != 0)
|
||||
_on_new_vehicle_day_proc[t - 0x10](v);
|
||||
}
|
||||
_vehicle_id_ctr_day = ctr;
|
||||
@@ -636,7 +647,8 @@ void IncreaseDate()
|
||||
/* increase day, and check if a new day is there? */
|
||||
_tick_counter++;
|
||||
|
||||
if ( (_date_fract += 885) >= 885)
|
||||
_date_fract += 885;
|
||||
if (_date_fract >= 885)
|
||||
return;
|
||||
|
||||
/* yeah, increse day counter and call various daily loops */
|
||||
@@ -695,10 +707,13 @@ void IncreaseDate()
|
||||
NetworkServerYearlyLoop();
|
||||
#endif /* ENABLE_NETWORK */
|
||||
|
||||
/* check if we reached 2090, that's the maximum year. */
|
||||
if (_cur_year == 171) {
|
||||
/* check if we reached end of the game (31 dec 2050) */
|
||||
if (_cur_year == _patches.ending_date - MAX_YEAR_BEGIN_REAL) {
|
||||
ShowEndGameChart();
|
||||
/* check if we reached 2090 (MAX_YEAR_END_REAL), that's the maximum year. */
|
||||
} else if (_cur_year == (MAX_YEAR_END + 1)) {
|
||||
Vehicle *v;
|
||||
_cur_year = 170;
|
||||
_cur_year = MAX_YEAR_END;
|
||||
_date = 62093;
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
v->date_of_last_service -= 365; // 1 year is 365 days long
|
||||
@@ -713,10 +728,10 @@ void IncreaseDate()
|
||||
|
||||
int FindFirstBit(uint32 value)
|
||||
{
|
||||
// This is much faster then the one that was before here.
|
||||
// This is much faster than the one that was before here.
|
||||
// Created by Darkvater.. blame him if it is wrong ;)
|
||||
// Btw, the macro FINDFIRSTBIT is better to use when your value is
|
||||
// not more then 128.
|
||||
// not more than 128.
|
||||
byte i = 0;
|
||||
if (value & 0xffff0000) { value >>= 16; i += 16; }
|
||||
if (value & 0x0000ff00) { value >>= 8; i += 8; }
|
||||
@@ -727,28 +742,7 @@ int FindFirstBit(uint32 value)
|
||||
}
|
||||
|
||||
|
||||
extern uint SafeTileAdd(uint tile, int add, const char *exp, const char *file, int line)
|
||||
{
|
||||
int x = GET_TILE_X(tile) + (signed char)(add & 0xFF);
|
||||
int y = GET_TILE_Y(tile) + ((((0x8080 + add)>>8) & 0xFF) - 0x80);
|
||||
|
||||
if (x < 0 || y < 0 || x >= TILES_X || y >= TILES_Y) {
|
||||
char buf[512];
|
||||
|
||||
sprintf(buf, "TILE_ADD(%s) when adding 0x%.4X and %d failed", exp, tile, add);
|
||||
#if !defined(_DEBUG) || !defined(_MSC_VER)
|
||||
printf("%s\n", buf);
|
||||
#else
|
||||
_assert(buf, (char*)file, line);
|
||||
#endif
|
||||
}
|
||||
|
||||
assert(TILE_XY(x,y) == TILE_MASK(tile + add));
|
||||
|
||||
return TILE_XY(x,y);
|
||||
}
|
||||
|
||||
static void Save_NAME()
|
||||
static void Save_NAME(void)
|
||||
{
|
||||
int i;
|
||||
byte *b = _name_array[0];
|
||||
@@ -761,7 +755,7 @@ static void Save_NAME()
|
||||
}
|
||||
}
|
||||
|
||||
static void Load_NAME()
|
||||
static void Load_NAME(void)
|
||||
{
|
||||
int index;
|
||||
|
||||
@@ -786,7 +780,7 @@ static const byte _game_opt_desc[] = {
|
||||
};
|
||||
|
||||
// Save load game options
|
||||
static void SaveLoad_OPTS()
|
||||
static void SaveLoad_OPTS(void)
|
||||
{
|
||||
SlObject(&_opt, _game_opt_desc);
|
||||
}
|
||||
@@ -814,7 +808,7 @@ static const SaveLoadGlobVarList _date_desc[] = {
|
||||
|
||||
// Save load date related variables as well as persistent tick counters
|
||||
// XXX: currently some unrelated stuff is just put here
|
||||
static void SaveLoad_DATE()
|
||||
static void SaveLoad_DATE(void)
|
||||
{
|
||||
SlGlobList(_date_desc);
|
||||
}
|
||||
@@ -827,41 +821,53 @@ static const SaveLoadGlobVarList _view_desc[] = {
|
||||
{NULL, 0, 0, 0}
|
||||
};
|
||||
|
||||
static void SaveLoad_VIEW()
|
||||
static void SaveLoad_VIEW(void)
|
||||
{
|
||||
SlGlobList(_view_desc);
|
||||
}
|
||||
|
||||
static void SaveLoad_MAPT() {
|
||||
static void SaveLoad_MAPT(void)
|
||||
{
|
||||
SlArray(_map_type_and_height, MapSize(), SLE_UINT8);
|
||||
}
|
||||
|
||||
static void SaveLoad_MAP2() {
|
||||
SlArray(_map2, MapSize(), SLE_UINT8);
|
||||
static void SaveLoad_MAP2(void)
|
||||
{
|
||||
if (_sl.version < 5) {
|
||||
/* In those versions the _map2 was 8 bits */
|
||||
SlArray(_map2, MapSize(), SLE_FILE_U8 | SLE_VAR_U16);
|
||||
} else {
|
||||
SlArray(_map2, MapSize(), SLE_UINT16);
|
||||
}
|
||||
}
|
||||
|
||||
static void SaveLoad_M3LO() {
|
||||
static void SaveLoad_M3LO(void)
|
||||
{
|
||||
SlArray(_map3_lo, MapSize(), SLE_UINT8);
|
||||
}
|
||||
|
||||
static void SaveLoad_M3HI() {
|
||||
static void SaveLoad_M3HI(void)
|
||||
{
|
||||
SlArray(_map3_hi, MapSize(), SLE_UINT8);
|
||||
}
|
||||
|
||||
static void SaveLoad_MAPO() {
|
||||
static void SaveLoad_MAPO(void)
|
||||
{
|
||||
SlArray(_map_owner, MapSize(), SLE_UINT8);
|
||||
}
|
||||
|
||||
static void SaveLoad_MAP5() {
|
||||
static void SaveLoad_MAP5(void)
|
||||
{
|
||||
SlArray(_map5, MapSize(), SLE_UINT8);
|
||||
}
|
||||
|
||||
static void SaveLoad_MAPE() {
|
||||
static void SaveLoad_MAPE(void)
|
||||
{
|
||||
SlArray(_map_extra_bits, MapSize() / 4, SLE_UINT8);
|
||||
}
|
||||
|
||||
|
||||
static void Save_CHTS()
|
||||
static void Save_CHTS(void)
|
||||
{
|
||||
byte count = sizeof(_cheats)/sizeof(Cheat);
|
||||
Cheat* cht = (Cheat*) &_cheats;
|
||||
@@ -874,7 +880,7 @@ static void Save_CHTS()
|
||||
}
|
||||
}
|
||||
|
||||
static void Load_CHTS()
|
||||
static void Load_CHTS(void)
|
||||
{
|
||||
Cheat* cht = (Cheat*) &_cheats;
|
||||
|
||||
|
||||
@@ -158,10 +158,8 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
DeleteName(old_str);
|
||||
|
||||
if (p->name_1 == STR_SV_UNNAMED) {
|
||||
byte *s = " Transport";
|
||||
byte *d = (byte*)_decode_parameters, b;
|
||||
d--; do d++; while (*d);
|
||||
do *d++ = b = *s++; while(d != (byte*)endof(_decode_parameters) && b != 0);
|
||||
ttd_strlcat(
|
||||
(char*)_decode_parameters, " Transport", sizeof(_decode_parameters));
|
||||
DoCommandByTile(0, p1, 0, DC_EXEC, CMD_CHANGE_COMPANY_NAME);
|
||||
}
|
||||
MarkWholeScreenDirty();
|
||||
@@ -172,96 +170,13 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void UpdateSignVirtCoords(SignStruct *ss)
|
||||
{
|
||||
Point pt = RemapCoords(ss->x, ss->y, ss->z);
|
||||
SetDParam(0, ss->str);
|
||||
UpdateViewportSignPos(&ss->sign, pt.x, pt.y - 6, STR_2806);
|
||||
}
|
||||
|
||||
void UpdateAllSignVirtCoords()
|
||||
{
|
||||
SignStruct *ss;
|
||||
for(ss=_sign_list; ss != endof(_sign_list); ss++)
|
||||
if (ss->str != 0)
|
||||
UpdateSignVirtCoords(ss);
|
||||
|
||||
}
|
||||
|
||||
static void MarkSignDirty(SignStruct *ss)
|
||||
{
|
||||
MarkAllViewportsDirty(
|
||||
ss->sign.left-6,
|
||||
ss->sign.top-3,
|
||||
ss->sign.left+ss->sign.width_1*4+12,
|
||||
ss->sign.top + 45
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
int32 CmdPlaceSign(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
SignStruct *ss;
|
||||
|
||||
for(ss=_sign_list; ss != endof(_sign_list); ss++) {
|
||||
if (ss->str == 0) {
|
||||
if (flags & DC_EXEC) {
|
||||
ss->str = STR_280A_SIGN;
|
||||
ss->x = x;
|
||||
ss->y = y;
|
||||
ss->z = GetSlopeZ(x,y);
|
||||
UpdateSignVirtCoords(ss);
|
||||
MarkSignDirty(ss);
|
||||
_new_sign_struct = ss;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return_cmd_error(STR_2808_TOO_MANY_SIGNS);
|
||||
}
|
||||
|
||||
// p1 = sign index
|
||||
// p2: 1 -> remove sign
|
||||
int32 CmdRenameSign(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
StringID str,old_str;
|
||||
SignStruct *ss;
|
||||
|
||||
if (_decode_parameters[0] != 0 && !p2) {
|
||||
str = AllocateNameUnique((byte*)_decode_parameters, 0);
|
||||
if (str == 0)
|
||||
return CMD_ERROR;
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
ss = &_sign_list[p1];
|
||||
MarkSignDirty(ss);
|
||||
DeleteName(ss->str);
|
||||
ss->str = str;
|
||||
UpdateSignVirtCoords(ss);
|
||||
MarkSignDirty(ss);
|
||||
} else {
|
||||
DeleteName(str);
|
||||
}
|
||||
} else {
|
||||
if (flags & DC_EXEC) {
|
||||
ss = &_sign_list[p1];
|
||||
old_str = ss->str;
|
||||
ss->str = 0;
|
||||
DeleteName(old_str);
|
||||
MarkSignDirty(ss);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// p1 = 0 decrease pause counter
|
||||
// p1 = 1 increase pause counter
|
||||
int32 CmdPause(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
if (flags & DC_EXEC) {
|
||||
_pause += p1?1:-1;
|
||||
if(_pause==(byte)-1) _pause = 0;
|
||||
_pause += (p1 == 1) ? 1 : -1;
|
||||
if (_pause == (byte)-1) _pause = 0;
|
||||
InvalidateWindow(WC_STATUS_BAR, 0);
|
||||
InvalidateWindow(WC_MAIN_TOOLBAR, 0);
|
||||
}
|
||||
@@ -285,6 +200,11 @@ int32 CmdGiveMoney(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
SET_EXPENSES_TYPE(EXPENSES_OTHER);
|
||||
|
||||
p1 = clamp(p1, 0, 0xFFFFFF); // Clamp between 16 million and 0
|
||||
|
||||
if (p1 == 0)
|
||||
return CMD_ERROR;
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
// Add money to player
|
||||
byte old_cp = _current_player;
|
||||
@@ -313,37 +233,3 @@ int32 CmdChangeDifficultyLevel(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const byte _sign_desc[] = {
|
||||
SLE_VAR(SignStruct,str, SLE_UINT16),
|
||||
SLE_VAR(SignStruct,x, SLE_INT16),
|
||||
SLE_VAR(SignStruct,y, SLE_INT16),
|
||||
SLE_VAR(SignStruct,z, SLE_UINT8),
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
static void Save_SIGN()
|
||||
{
|
||||
SignStruct *s;
|
||||
int i;
|
||||
for(i=0,s=_sign_list; i!=lengthof(_sign_list); i++,s++) {
|
||||
if (s->str != 0) {
|
||||
SlSetArrayIndex(i);
|
||||
SlObject(s, _sign_desc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Load_SIGN()
|
||||
{
|
||||
int index;
|
||||
while ((index = SlIterateArray()) != -1) {
|
||||
SlObject(&_sign_list[index], _sign_desc);
|
||||
}
|
||||
}
|
||||
|
||||
const ChunkHandler _sign_chunk_handlers[] = {
|
||||
{ 'SIGN', Save_SIGN, Load_SIGN, CH_ARRAY | CH_LAST},
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "hal.h" // for file list
|
||||
|
||||
bool _query_string_active;
|
||||
void SetFiosType(const byte fiostype);
|
||||
|
||||
/* Now this is what I call dirty.. the edit-box needs to be rewritten! */
|
||||
static bool _do_edit_on_text_even_when_no_change_to_edit_box;
|
||||
@@ -58,8 +57,8 @@ static void LandInfoWndProc(Window *w, WindowEvent *e)
|
||||
DrawStringCentered(140, 38, str, 0);
|
||||
|
||||
snprintf(_userstring, USERSTRING_LEN, "%.4X", lid->tile);
|
||||
SetDParam(0, GET_TILE_X(lid->tile));
|
||||
SetDParam(1, GET_TILE_Y(lid->tile));
|
||||
SetDParam(0, TileX(lid->tile));
|
||||
SetDParam(1, TileY(lid->tile));
|
||||
SetDParam(2, STR_SPEC_USERSTRING);
|
||||
DrawStringCentered(140, 49, STR_LANDINFO_COORDS, 0);
|
||||
|
||||
@@ -96,9 +95,9 @@ static void LandInfoWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _land_info_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 279, 0, 13, STR_01A3_LAND_AREA_INFORMATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, 14, 0, 279, 14, 92, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 279, 0, 13, STR_01A3_LAND_AREA_INFORMATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 279, 14, 92, 0x0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -143,7 +142,7 @@ static void Place_LandInfo(uint tile)
|
||||
GetTileDesc(tile, &lid.td);
|
||||
|
||||
#if defined(_DEBUG)
|
||||
DEBUG(misc, 0) ("TILE: %#x (%i,%i)", tile, GET_TILE_X(tile), GET_TILE_Y(tile));
|
||||
DEBUG(misc, 0) ("TILE: %#x (%i,%i)", tile, TileX(tile), TileY(tile));
|
||||
DEBUG(misc, 0) ("TILE: %d ", tile);
|
||||
DEBUG(misc, 0) ("_map_type_and_height=%#x", _map_type_and_height[tile]);
|
||||
DEBUG(misc, 0) ("_map2=%#x", _map2[tile]);
|
||||
@@ -154,7 +153,7 @@ static void Place_LandInfo(uint tile)
|
||||
#endif
|
||||
}
|
||||
|
||||
void PlaceLandBlockInfo()
|
||||
void PlaceLandBlockInfo(void)
|
||||
{
|
||||
if (_cursor.sprite == 0x2CF) {
|
||||
ResetObjectToPlace();
|
||||
@@ -164,40 +163,106 @@ void PlaceLandBlockInfo()
|
||||
}
|
||||
}
|
||||
|
||||
static const char *credits[] = {
|
||||
/*************************************************************************
|
||||
* maximum length of string which fits in window -^*/
|
||||
"Original design by Chris Sawyer",
|
||||
"Original graphics by Simon Foster",
|
||||
"",
|
||||
"The OpenTTD team (in alphabetical order):",
|
||||
" Bjarni Corfitzen (Bjarni) - MacOS port",
|
||||
" Victor Fischer (Celestar) - Programming everywhere you need him to",
|
||||
" Tamas Faragó (Darkvater) - Lead coder",
|
||||
" Dominik Scherer (dominik81) - Lead coder",
|
||||
" Kerekes Miham (MiHaMiX) - Translator system, and Nightlies host",
|
||||
" Owen Rudge (orudge) - Forum- and masterserver host, OS/2 port",
|
||||
" Christoph Mallon (Tron) - Programmer, code correctness police",
|
||||
" Patric Stout (TrueLight) - Coder, network guru, SVN- and website host",
|
||||
"",
|
||||
"Retired Developers:",
|
||||
" Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)",
|
||||
" Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)",
|
||||
"",
|
||||
"Special thanks go out to:",
|
||||
" Josef Drexler - For his great work on TTDPatch",
|
||||
" Marcin Grzegorczyk - For his documentation of TTD internals",
|
||||
" blathijs - For his many patches, suggestions and major work on maprewrite",
|
||||
" pasky - Many patches, newgrf support",
|
||||
" Stefan Meißner (sign_de) - For his work on the console",
|
||||
" Cian Duffy (MYOB) - BeOS port / manual writing",
|
||||
" Christian Rosentreter (tokaiz) - MorphOS / AmigaOS port",
|
||||
"",
|
||||
" Michael Blunck - Pre-Signals and Semaphores © 2003",
|
||||
" George - Canal/Lock graphics © 2003-2004",
|
||||
" Marcin Grzegorczyk - Foundations for Tracks on Slopes",
|
||||
" All Translators - Who made OpenTTD a truly international game",
|
||||
" Bug Reporters - Without whom OpenTTD would still be full of bugs!",
|
||||
NULL,
|
||||
"",
|
||||
"",
|
||||
"And last but not least:",
|
||||
" Chris Sawyer - For an amazing game!"
|
||||
};
|
||||
|
||||
static void AboutWindowProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch(e->event) {
|
||||
case WE_CREATE: /* Set up window counter and start position of scroller */
|
||||
WP(w, scroller_d).counter = 0;
|
||||
WP(w, scroller_d).height = w->height - 40;
|
||||
break;
|
||||
case WE_PAINT: {
|
||||
int x,y;
|
||||
const char *str;
|
||||
char buffer[100];
|
||||
uint i;
|
||||
int y = WP(w, scroller_d).height;
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
x = 200;
|
||||
y = 0;
|
||||
DrawStringCentered(x, y += 17, STR_00B6_ORIGINAL_COPYRIGHT, 0);
|
||||
DrawStringCentered(x, y += 10, STR_00B7_VERSION, 0);
|
||||
DrawString(20, y += 20, STR_00B8_ORIGINAL_DESIGN_PROGRAM, 0);
|
||||
DrawString(20, y += 10, STR_00B9_ORIGINAL_GRAPHICS, 0);
|
||||
DrawString(20, y += 30, STR_SPECIAL_THANKS, 0);
|
||||
// will probably be dynamic when stringhandling is finally reworked.
|
||||
DrawString(20, y += 10, STR_SPECIAL_THANKS_SIGNALS, 0);
|
||||
DrawString(20, y += 10, STR_SPECIAL_THANKS_CANALS, 0);
|
||||
DrawString(20, y += 10, STR_SPECIAL_THANKS_FOUNDATIONS, 0);
|
||||
DrawStringMultiCenter(x, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, 0x18E);
|
||||
break;
|
||||
// Show original copyright and revision version
|
||||
DrawStringCentered(210, 17, STR_00B6_ORIGINAL_COPYRIGHT, 0);
|
||||
DrawStringCentered(210, 17 + 10, STR_00B7_VERSION, 0);
|
||||
|
||||
// Show all scrolling credits
|
||||
for (i = 0; i < lengthof(credits); i++) {
|
||||
if (y >= 50 && y < (w->height - 40)) {
|
||||
str = credits[i];
|
||||
/* Hack-Alert: Translated by is a dynamic string as it changes
|
||||
* with the language chosen. So the special value of NULL is used
|
||||
* to identify this for the moment */
|
||||
if (str == NULL) {
|
||||
GetString(buffer, STR_TRANSLATED_BY);
|
||||
str = buffer;
|
||||
}
|
||||
|
||||
DoDrawString(str, 10, y, 0x10);
|
||||
}
|
||||
y += 10;
|
||||
}
|
||||
|
||||
// If the last text has scrolled start anew from the start
|
||||
if (y < 50) WP(w, scroller_d).height = w->height - 40;
|
||||
|
||||
DrawStringMultiCenter(210, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, 398);
|
||||
} break;
|
||||
case WE_MOUSELOOP: /* Timer to scroll the text and adjust the new top */
|
||||
if (WP(w, scroller_d).counter++ % 3 == 0) {
|
||||
WP(w, scroller_d).height--;
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static const Widget _about_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 14, 11, 399, 0, 13, STR_015B_OPENTTD, STR_NULL},
|
||||
{ WWT_PANEL, 14, 0, 399, 14, 271, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 419, 0, 13, STR_015B_OPENTTD, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 0, 419, 14, 271, 0x0, STR_NULL},
|
||||
{ WWT_FRAME, RESIZE_NONE, 14, 5, 414, 40, 245, STR_NULL, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const WindowDesc _about_desc = {
|
||||
WDP_CENTER, WDP_CENTER, 400, 272,
|
||||
WDP_CENTER, WDP_CENTER, 420, 272,
|
||||
WC_GAME_OPTIONS,0,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
|
||||
_about_widgets,
|
||||
@@ -205,7 +270,7 @@ static const WindowDesc _about_desc = {
|
||||
};
|
||||
|
||||
|
||||
void ShowAboutWindow()
|
||||
void ShowAboutWindow(void)
|
||||
{
|
||||
DeleteWindowById(WC_GAME_OPTIONS, 0);
|
||||
AllocateWindowDesc(&_about_desc);
|
||||
@@ -306,22 +371,22 @@ static void BuildTreesWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _build_trees_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 142, 0, 13, STR_2802_TREES, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 142, 14, 170, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, 14, 2, 35, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 37, 70, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 72, 105, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 107, 140, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 2, 35, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 37, 70, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 72, 105, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 107, 140, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 2, 35, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 37, 70, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 72, 105, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 107, 140, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_CLOSEBOX, 14, 2, 140, 157, 168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 142, 0, 13, STR_2802_TREES, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 142, 14, 170, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 140, 157, 168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -334,23 +399,23 @@ static const WindowDesc _build_trees_desc = {
|
||||
};
|
||||
|
||||
static const Widget _build_trees_scen_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 142, 0, 13, STR_2802_TREES, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 7, 0, 142, 14, 183, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, 14, 2, 35, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 37, 70, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 72, 105, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 107, 140, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 2, 35, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 37, 70, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 72, 105, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 107, 140, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 2, 35, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 37, 70, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 72, 105, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, 14, 107, 140, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_CLOSEBOX, 14, 2, 140, 157, 168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
|
||||
{ WWT_CLOSEBOX, 14, 2, 140, 170, 181, STR_028A_RANDOM_TREES, STR_028B_PLANT_TREES_RANDOMLY_OVER},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 142, 0, 13, STR_2802_TREES, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 142, 14, 183, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 140, 157, 168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 140, 170, 181, STR_028A_RANDOM_TREES, STR_028B_PLANT_TREES_RANDOMLY_OVER},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -363,12 +428,12 @@ static const WindowDesc _build_trees_scen_desc = {
|
||||
};
|
||||
|
||||
|
||||
void ShowBuildTreesToolbar()
|
||||
void ShowBuildTreesToolbar(void)
|
||||
{
|
||||
AllocateWindowDesc(&_build_trees_desc);
|
||||
}
|
||||
|
||||
void ShowBuildTreesScenToolbar()
|
||||
void ShowBuildTreesScenToolbar(void)
|
||||
{
|
||||
AllocateWindowDescFront(&_build_trees_scen_desc, 0);
|
||||
}
|
||||
@@ -379,16 +444,16 @@ static uint _errmsg_duration;
|
||||
|
||||
|
||||
static const Widget _errmsg_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 4, 11, 239, 0, 13, STR_00B2_MESSAGE, STR_NULL},
|
||||
{ WWT_PANEL, 4, 0, 239, 14, 45, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 239, 0, 13, STR_00B2_MESSAGE, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 4, 0, 239, 14, 45, 0x0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _errmsg_face_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 4, 11, 333, 0, 13, STR_00B3_MESSAGE_FROM, STR_NULL},
|
||||
{ WWT_PANEL, 4, 0, 333, 14, 136, 0x0, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 333, 0, 13, STR_00B3_MESSAGE_FROM, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 4, 0, 333, 14, 136, 0x0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -399,7 +464,7 @@ static void ErrmsgWndProc(Window *w, WindowEvent *e)
|
||||
COPY_IN_DPARAM(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
|
||||
DrawWindowWidgets(w);
|
||||
COPY_IN_DPARAM(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
|
||||
if (w->widget != _errmsg_face_widgets) {
|
||||
if (!IsWindowOfPrototype(w, _errmsg_face_widgets)) {
|
||||
DrawStringMultiCenter(
|
||||
120,
|
||||
(_errmsg_message_1 == INVALID_STRING_ID ? 25 : 15),
|
||||
@@ -540,7 +605,7 @@ void ShowCostOrIncomeAnimation(int x, int y, int z, int32 cost)
|
||||
}
|
||||
|
||||
static Widget _tooltips_widgets[] = {
|
||||
{ WWT_PANEL, 14, 0, 199, 0, 31, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 0, 199, 0, 31, 0x0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -648,7 +713,7 @@ void DrawStationCoverageAreaText(int sx, int sy, uint mask, int rad) {
|
||||
int y = _thd.pos.y;
|
||||
uint accepts[NUM_CARGO];
|
||||
if (x != -1) {
|
||||
GetAcceptanceAroundTiles(accepts, TILE_FROM_XY(x,y), _thd.new_size.x >> 4, _thd.new_size.y >> 4, rad);
|
||||
GetAcceptanceAroundTiles(accepts, TILE_FROM_XY(x, y), _thd.size.x /16, _thd.size.y /16 , rad);
|
||||
DrawStationCoverageText(accepts, sx, sy, mask);
|
||||
}
|
||||
}
|
||||
@@ -692,6 +757,14 @@ void SetVScrollCount(Window *w, int num)
|
||||
if (num < w->vscroll.pos) w->vscroll.pos = num;
|
||||
}
|
||||
|
||||
void SetVScroll2Count(Window *w, int num)
|
||||
{
|
||||
w->vscroll2.count = num;
|
||||
num -= w->vscroll2.cap;
|
||||
if (num < 0) num = 0;
|
||||
if (num < w->vscroll2.pos) w->vscroll2.pos = num;
|
||||
}
|
||||
|
||||
void SetHScrollCount(Window *w, int num)
|
||||
{
|
||||
w->hscroll.count = num;
|
||||
@@ -700,10 +773,25 @@ void SetHScrollCount(Window *w, int num)
|
||||
if (num < w->hscroll.pos) w->hscroll.pos = num;
|
||||
}
|
||||
|
||||
/* Get the count of characters in the string as well as the width in pixels
|
||||
* [IN]buf: string to be checked
|
||||
* [OUT]count: gets set to the count of characters
|
||||
* [OUT]width: gets set to the pixels width */
|
||||
static void GetCurrentStringSize(const byte *buf, int *count, int *width)
|
||||
{
|
||||
*count = 0;
|
||||
*width = -1;
|
||||
|
||||
do {
|
||||
if (*++buf == 0)
|
||||
break;
|
||||
(*count)++;
|
||||
(*width) += _stringwidth_table[*buf - 32];
|
||||
} while (1);
|
||||
}
|
||||
|
||||
int HandleEditBoxKey(Window *w, int wid, WindowEvent *we)
|
||||
{
|
||||
byte *p;
|
||||
int width,count;
|
||||
int key = we->keypress.ascii;
|
||||
|
||||
@@ -713,16 +801,37 @@ int HandleEditBoxKey(Window *w, int wid, WindowEvent *we)
|
||||
return 2;
|
||||
} else if (we->keypress.keycode == WKC_RETURN) {
|
||||
return 1;
|
||||
#ifdef WIN32
|
||||
} else if (we->keypress.keycode == (WKC_CTRL | 'V')) {
|
||||
if (IsClipboardFormatAvailable(CF_TEXT)) {
|
||||
const byte* data;
|
||||
HGLOBAL cbuf;
|
||||
|
||||
OpenClipboard(NULL);
|
||||
cbuf = GetClipboardData(CF_TEXT);
|
||||
data = GlobalLock(cbuf); // clipboard data
|
||||
|
||||
GetCurrentStringSize(WP(w,querystr_d).buf - 1, &count, &width);
|
||||
|
||||
/* IS_INT_INSIDE = filter for ascii-function codes like BELL and so on [we need an special filter here later] */
|
||||
for (; (IS_INT_INSIDE(*data, ' ', 256)) && // valid ASCII char
|
||||
(count < WP(w,querystr_d).maxlen - 1 && // max charcount; always allow for terminating '\0'
|
||||
width + _stringwidth_table[(int)(*data) - 32] <= WP(w,querystr_d).maxwidth); ++data) { // max screensize
|
||||
|
||||
// append data and update size parameters
|
||||
WP(w,querystr_d).buf[count] = *data;
|
||||
count++;
|
||||
width += _stringwidth_table[*data - 32];
|
||||
}
|
||||
WP(w,querystr_d).buf[count + 1] = '\0';
|
||||
|
||||
GlobalUnlock(cbuf);
|
||||
CloseClipboard();
|
||||
InvalidateWidget(w, wid);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
width = -1;
|
||||
p = WP(w,querystr_d).buf - 1;
|
||||
count = 0;
|
||||
do {
|
||||
if (*++p == 0)
|
||||
break;
|
||||
count++;
|
||||
width += _stringwidth_table[*p - 32];
|
||||
} while (1);
|
||||
GetCurrentStringSize(WP(w,querystr_d).buf - 1, &count, &width);
|
||||
|
||||
if (we->keypress.keycode == WKC_BACKSPACE) {
|
||||
if (count != 0) {
|
||||
@@ -730,15 +839,13 @@ int HandleEditBoxKey(Window *w, int wid, WindowEvent *we)
|
||||
InvalidateWidget(w, wid);
|
||||
}
|
||||
} else if (IS_INT_INSIDE((key = we->keypress.ascii), 32, 256)) {
|
||||
if (count < WP(w,querystr_d).maxlen && width + _stringwidth_table[key-32] <= WP(w,querystr_d).maxwidth) {
|
||||
if (count < WP(w,querystr_d).maxlen && width + _stringwidth_table[key - 32] <= WP(w,querystr_d).maxwidth) {
|
||||
WP(w,querystr_d).buf[count] = key;
|
||||
WP(w,querystr_d).buf[count+1] = 0;
|
||||
WP(w,querystr_d).buf[count + 1] = '\0';
|
||||
InvalidateWidget(w, wid);
|
||||
}
|
||||
} else {
|
||||
// key wasn't caught
|
||||
} else // key wasn't caught
|
||||
we->keypress.cont = true;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -851,12 +958,12 @@ press_ok:;
|
||||
}
|
||||
|
||||
static const Widget _query_string_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 14, 11, 259, 0, 13, STR_012D, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 0, 259, 14, 29, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, 14, 0, 129, 30, 41, STR_012E_CANCEL, STR_NULL},
|
||||
{ WWT_TEXTBTN, 14, 130, 259, 30, 41, STR_012F_OK, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 2, 257, 16, 27, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 259, 0, 13, STR_012D, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 259, 14, 29, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 129, 30, 41, STR_012E_CANCEL, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 130, 259, 30, 41, STR_012F_OK, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 2, 257, 16, 27, 0x0, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -910,63 +1017,67 @@ void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, b
|
||||
}
|
||||
|
||||
static const Widget _load_dialog_1_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_4001_LOAD_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 48, 293, 0x0, STR_NULL},
|
||||
{ WWT_6, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
|
||||
{ WWT_SCROLLBAR, 14, 246, 256, 48, 293, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 256, 0, 13, STR_4001_LOAD_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, RESIZE_RIGHT, 14, 0, 256, 26, 47, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_RB, 14, 0, 256, 48, 293, 0x0, STR_NULL},
|
||||
{ WWT_6, RESIZE_RB, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 245, 256, 48, 281, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 245, 256, 282, 293, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _load_dialog_2_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_0298_LOAD_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 48, 293, 0x0, STR_NULL},
|
||||
{ WWT_6, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
|
||||
{ WWT_SCROLLBAR, 14, 246, 256, 48, 293, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 256, 0, 13, STR_0298_LOAD_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, RESIZE_RIGHT, 14, 0, 256, 26, 47, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_RB, 14, 0, 256, 48, 293, 0x0, STR_NULL},
|
||||
{ WWT_6, RESIZE_RB, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 245, 256, 48, 281, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 245, 256, 282, 293, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _save_dialog_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_4000_SAVE_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 48, 291, 0x0, STR_NULL},
|
||||
{ WWT_6, 14, 2, 243, 50, 289, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
|
||||
{ WWT_SCROLLBAR, 14, 246, 256, 48, 291, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 292, 307, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 2, 254, 294, 305, 0x0, STR_400B_CURRENTLY_SELECTED_NAME},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 127, 308, 319, STR_4003_DELETE, STR_400C_DELETE_THE_CURRENTLY_SELECTED},
|
||||
{ WWT_PUSHTXTBTN, 14, 128, 256, 308, 319, STR_4002_SAVE, STR_400D_SAVE_THE_CURRENT_GAME_USING},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 256, 0, 13, STR_4000_SAVE_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, RESIZE_RIGHT, 14, 0, 256, 26, 47, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_RB, 14, 0, 256, 48, 291, 0x0, STR_NULL},
|
||||
{ WWT_6, RESIZE_RB, 14, 2, 243, 50, 290, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 245, 256, 48, 291, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_IMGBTN, RESIZE_RTB, 14, 0, 256, 292, 307, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_RTB, 14, 2, 254, 294, 305, 0x0, STR_400B_CURRENTLY_SELECTED_NAME},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 127, 308, 319, STR_4003_DELETE, STR_400C_DELETE_THE_CURRENTLY_SELECTED},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 128, 244, 308, 319, STR_4002_SAVE, STR_400D_SAVE_THE_CURRENT_GAME_USING},
|
||||
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 245, 256, 308, 319, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
static const Widget _save_dialog_scen_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_0299_SAVE_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 48, 291, 0x0, STR_NULL},
|
||||
{ WWT_6, 14, 2, 243, 50, 289, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
|
||||
{ WWT_SCROLLBAR, 14, 246, 256, 48, 291, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_IMGBTN, 14, 0, 256, 292, 307, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 2, 254, 294, 305, 0x0, STR_400B_CURRENTLY_SELECTED_NAME},
|
||||
{ WWT_PUSHTXTBTN, 14, 0, 127, 308, 319, STR_4003_DELETE, STR_400C_DELETE_THE_CURRENTLY_SELECTED},
|
||||
{ WWT_PUSHTXTBTN, 14, 128, 256, 308, 319, STR_4002_SAVE, STR_400D_SAVE_THE_CURRENT_GAME_USING},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 256, 0, 13, STR_0299_SAVE_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, RESIZE_RIGHT, 14, 0, 256, 26, 47, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_RB, 14, 0, 256, 48, 291, 0x0, STR_NULL},
|
||||
{ WWT_6, RESIZE_RB, 14, 2, 243, 50, 290, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 245, 256, 48, 291, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_IMGBTN, RESIZE_RTB, 14, 0, 256, 292, 307, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_RTB, 14, 2, 254, 294, 305, 0x0, STR_400B_CURRENTLY_SELECTED_NAME},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 127, 308, 319, STR_4003_DELETE, STR_400C_DELETE_THE_CURRENTLY_SELECTED},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 128, 244, 308, 319, STR_4002_SAVE, STR_400D_SAVE_THE_CURRENT_GAME_USING},
|
||||
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 245, 256, 308, 319, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
|
||||
void BuildFileList()
|
||||
void BuildFileList(void)
|
||||
{
|
||||
FiosFreeSavegameList();
|
||||
if(_saveload_mode==SLD_NEW_GAME || _saveload_mode==SLD_LOAD_SCENARIO || _saveload_mode==SLD_SAVE_SCENARIO)
|
||||
@@ -975,7 +1086,7 @@ void BuildFileList()
|
||||
_fios_list = FiosGetSavegameList(&_fios_num, _saveload_mode);
|
||||
}
|
||||
|
||||
static void DrawFiosTexts()
|
||||
static void DrawFiosTexts(void)
|
||||
{
|
||||
const char *path;
|
||||
StringID str;
|
||||
@@ -993,7 +1104,7 @@ static void DrawFiosTexts()
|
||||
#endif
|
||||
|
||||
|
||||
static void MakeSortedSaveGameList()
|
||||
static void MakeSortedSaveGameList(void)
|
||||
{
|
||||
/* Directories are always above the files (FIOS_TYPE_DIR)
|
||||
* Drives (A:\ (windows only) are always under the files (FIOS_TYPE_DRIVE)
|
||||
@@ -1014,7 +1125,7 @@ static void MakeSortedSaveGameList()
|
||||
}
|
||||
|
||||
s_amount = _fios_num - sort_start - sort_end;
|
||||
if ((bool)s_amount)
|
||||
if (s_amount > 0)
|
||||
qsort(_fios_list + sort_start, s_amount, sizeof(FiosItem), compare_FiosItems);
|
||||
}
|
||||
|
||||
@@ -1034,10 +1145,10 @@ static void GenerateFileName(void)
|
||||
GetString(_edit_str_buf, STR_4004);
|
||||
}
|
||||
|
||||
extern void StartupEngines(void);
|
||||
|
||||
static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
const int list_start = 51;
|
||||
|
||||
switch(e->event) {
|
||||
case WE_PAINT: {
|
||||
int y,pos;
|
||||
@@ -1052,17 +1163,17 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
|
||||
MakeSortedSaveGameList();
|
||||
}
|
||||
|
||||
GfxFillRect(3, list_start, 3+239, list_start+239, 0xD7);
|
||||
DoDrawString(_savegame_sort_order & 1 ? "\xAA" : "\xA0", _savegame_sort_order <= 1 ? 248 : 118, 15, 0x10);
|
||||
GfxFillRect(w->widget[6].left + 1, w->widget[6].top + 1, w->widget[6].right, w->widget[6].bottom, 0xD7);
|
||||
DoDrawString(_savegame_sort_order & 1 ? "\xAA" : "\xA0", _savegame_sort_order <= 1 ? w->widget[3].right - 9 : w->widget[2].right - 9, 15, 0x10);
|
||||
|
||||
y = list_start;
|
||||
y = w->widget[6].top + 1;
|
||||
pos = w->vscroll.pos;
|
||||
while (pos < _fios_num) {
|
||||
item = _fios_list + pos;
|
||||
DoDrawString(item->title[0] ? item->title : item->name, 4, y, _fios_colors[item->type] );
|
||||
pos++;
|
||||
y+=10;
|
||||
if (y >= w->vscroll.cap*10+list_start)
|
||||
if (y >= w->vscroll.cap*10+w->widget[6].top+1)
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1086,7 +1197,7 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
|
||||
break;
|
||||
|
||||
case 6: { /* Click the listbox */
|
||||
int y = (e->click.pt.y - list_start) / 10;
|
||||
int y = (e->click.pt.y - w->widget[6].top - 1) / 10;
|
||||
char *name;
|
||||
const FiosItem *file;
|
||||
|
||||
@@ -1142,6 +1253,9 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
|
||||
} else if (HASBIT(w->click_state, 11)) { /* Save button clicked */
|
||||
_switch_mode = SM_SAVE;
|
||||
FiosMakeSavegameName(_file_to_saveload.name, WP(w,querystr_d).buf);
|
||||
|
||||
/* In the editor set up the vehicle engines correctly (date might have changed) */
|
||||
if (_game_mode == GM_EDITOR) StartupEngines();
|
||||
}
|
||||
break;
|
||||
case WE_DESTROY:
|
||||
@@ -1151,13 +1265,29 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
|
||||
_query_string_active = false;
|
||||
FiosFreeSavegameList();
|
||||
break;
|
||||
case WE_RESIZE: {
|
||||
/* Widget 2 and 3 have to go with halve speed, make it so obiwan */
|
||||
uint diff = e->sizing.diff.x / 2;
|
||||
w->widget[2].right += diff;
|
||||
w->widget[3].left += diff;
|
||||
w->widget[3].right += e->sizing.diff.x;
|
||||
|
||||
/* Same for widget 10 and 11 in save-dialog */
|
||||
if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
|
||||
w->widget[10].right += diff;
|
||||
w->widget[11].left += diff;
|
||||
w->widget[11].right += e->sizing.diff.x;
|
||||
}
|
||||
|
||||
w->vscroll.cap += e->sizing.diff.y / 10;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
static const WindowDesc _load_dialog_desc = {
|
||||
WDP_CENTER, WDP_CENTER, 257, 294,
|
||||
WC_SAVELOAD,0,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
|
||||
_load_dialog_1_widgets,
|
||||
SaveLoadDlgWndProc,
|
||||
};
|
||||
@@ -1165,7 +1295,7 @@ static const WindowDesc _load_dialog_desc = {
|
||||
static const WindowDesc _load_dialog_scen_desc = {
|
||||
WDP_CENTER, WDP_CENTER, 257, 294,
|
||||
WC_SAVELOAD,0,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
|
||||
_load_dialog_2_widgets,
|
||||
SaveLoadDlgWndProc,
|
||||
};
|
||||
@@ -1173,7 +1303,7 @@ static const WindowDesc _load_dialog_scen_desc = {
|
||||
static const WindowDesc _save_dialog_desc = {
|
||||
WDP_CENTER, WDP_CENTER, 257, 320,
|
||||
WC_SAVELOAD,0,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
|
||||
_save_dialog_widgets,
|
||||
SaveLoadDlgWndProc,
|
||||
};
|
||||
@@ -1181,7 +1311,7 @@ static const WindowDesc _save_dialog_desc = {
|
||||
static const WindowDesc _save_dialog_scen_desc = {
|
||||
WDP_CENTER, WDP_CENTER, 257, 320,
|
||||
WC_SAVELOAD,0,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
|
||||
_save_dialog_scen_widgets,
|
||||
SaveLoadDlgWndProc,
|
||||
};
|
||||
@@ -1205,6 +1335,9 @@ void ShowSaveLoadDialog(int mode)
|
||||
|
||||
w = AllocateWindowDesc(_saveload_dialogs[mode]);
|
||||
w->vscroll.cap = 24;
|
||||
w->resize.step_width = 2;
|
||||
w->resize.step_height = 10;
|
||||
w->resize.height = w->height - 14 * 10; // Minimum of 10 items
|
||||
w->click_state |= (1 << 6);
|
||||
WP(w,querystr_d).caret = 0;
|
||||
WP(w,querystr_d).maxlen = MAX_QUERYSTR_LEN;
|
||||
@@ -1226,19 +1359,21 @@ void ShowSaveLoadDialog(int mode)
|
||||
ResetObjectToPlace();
|
||||
}
|
||||
|
||||
void RedrawAutosave()
|
||||
void RedrawAutosave(void)
|
||||
{
|
||||
SetWindowDirty(FindWindowById(WC_STATUS_BAR, 0));
|
||||
}
|
||||
|
||||
static const Widget _select_scenario_widgets[] = {
|
||||
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 7, 11, 256, 0, 13, STR_400E_SELECT_NEW_GAME_TYPE, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHTXTBTN, 7, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, 7, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, 7, 0, 245, 26, 319, 0x0, STR_NULL},
|
||||
{ WWT_6, 7, 2, 243, 28, 317, 0x0, STR_400F_SELECT_SCENARIO_GREEN_PRE},
|
||||
{ WWT_SCROLLBAR, 7, 246, 256, 26, 319, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 7, 11, 256, 0, 13, STR_400E_SELECT_NEW_GAME_TYPE, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, RESIZE_RIGHT, 7, 0, 256, 14, 25, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 7, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 7, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
|
||||
{ WWT_IMGBTN, RESIZE_RB, 7, 0, 244, 26, 319, 0x0, STR_NULL},
|
||||
{ WWT_6, RESIZE_RB, 7, 2, 243, 28, 317, 0x0, STR_400F_SELECT_SCENARIO_GREEN_PRE},
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 7, 245, 256, 26, 307, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_RESIZEBOX, RESIZE_LRTB, 7, 245, 256, 308, 319, 0x0, STR_RESIZE_BUTTON},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -1258,7 +1393,7 @@ static void SelectScenarioWndProc(Window *w, WindowEvent *e) {
|
||||
SetVScrollCount(w, _fios_num);
|
||||
|
||||
DrawWindowWidgets(w);
|
||||
DoDrawString(_savegame_sort_order & 1 ? "\xAA" : "\xA0", _savegame_sort_order <= 1 ? 248 : 118, 15, 0x10);
|
||||
DoDrawString(_savegame_sort_order & 1 ? "\xAA" : "\xA0", _savegame_sort_order <= 1 ? w->widget[4].right - 9 : w->widget[3].right - 9, 15, 0x10);
|
||||
DrawString(4, 32, STR_4010_GENERATE_RANDOM_NEW_GAME, 9);
|
||||
|
||||
y = list_start;
|
||||
@@ -1276,19 +1411,19 @@ static void SelectScenarioWndProc(Window *w, WindowEvent *e) {
|
||||
|
||||
case WE_CLICK:
|
||||
switch(e->click.widget) {
|
||||
case 2: /* Sort scenario names by name */
|
||||
case 3: /* Sort scenario names by name */
|
||||
_savegame_sort_order = (_savegame_sort_order == 2) ? 3 : 2;
|
||||
_savegame_sort_dirty = true;
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
|
||||
case 3: /* Sort scenario names by date */
|
||||
case 4: /* Sort scenario names by date */
|
||||
_savegame_sort_order = (_savegame_sort_order == 0) ? 1 : 0;
|
||||
_savegame_sort_dirty = true;
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
|
||||
case 5: /* Click the listbox */
|
||||
case 6: /* Click the listbox */
|
||||
if(e->click.pt.y < list_start)
|
||||
DoCommandP(0, Random(), InteractiveRandom(), NULL, CMD_GEN_RANDOM_NEW_GAME);
|
||||
else {
|
||||
@@ -1312,6 +1447,16 @@ static void SelectScenarioWndProc(Window *w, WindowEvent *e) {
|
||||
}
|
||||
case WE_DESTROY:
|
||||
break;
|
||||
|
||||
case WE_RESIZE: {
|
||||
/* Widget 3 and 4 have to go with halve speed, make it so obiwan */
|
||||
uint diff = e->sizing.diff.x / 2;
|
||||
w->widget[3].right += diff;
|
||||
w->widget[4].left += diff;
|
||||
w->widget[4].right += e->sizing.diff.x;
|
||||
|
||||
w->vscroll.cap += e->sizing.diff.y / 10;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1332,12 +1477,12 @@ void SetFiosType(const byte fiostype)
|
||||
static const WindowDesc _select_scenario_desc = {
|
||||
WDP_CENTER, WDP_CENTER, 257, 320,
|
||||
WC_SAVELOAD,0,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
|
||||
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
|
||||
_select_scenario_widgets,
|
||||
SelectScenarioWndProc
|
||||
};
|
||||
|
||||
void AskForNewGameToStart()
|
||||
void AskForNewGameToStart(void)
|
||||
{
|
||||
Window *w;
|
||||
|
||||
@@ -1349,6 +1494,9 @@ void AskForNewGameToStart()
|
||||
|
||||
w = AllocateWindowDesc(&_select_scenario_desc);
|
||||
w->vscroll.cap = 27;
|
||||
w->resize.step_width = 2;
|
||||
w->resize.step_height = 10;
|
||||
w->resize.height = w->height - 10 * 17; // Minimum of 10 in the list
|
||||
}
|
||||
|
||||
static int32 ClickMoneyCheat(int32 p1, int32 p2)
|
||||
@@ -1373,7 +1521,7 @@ static int32 ClickChangePlayerCheat(int32 p1, int32 p2)
|
||||
}
|
||||
|
||||
// p1 -1 or +1 (down/up)
|
||||
int32 ClickChangeClimateCheat(int32 p1, int32 p2)
|
||||
static int32 ClickChangeClimateCheat(int32 p1, int32 p2)
|
||||
{
|
||||
if(p1==-1) p1 = 3;
|
||||
if(p1==4) p1 = 0;
|
||||
@@ -1383,10 +1531,10 @@ int32 ClickChangeClimateCheat(int32 p1, int32 p2)
|
||||
return _opt.landscape;
|
||||
}
|
||||
|
||||
extern void EnginesMonthlyLoop();
|
||||
extern void EnginesMonthlyLoop(void);
|
||||
|
||||
// p2 1 (increase) or -1 (decrease)
|
||||
int32 ClickChangeDateCheat(int32 p1, int32 p2)
|
||||
static int32 ClickChangeDateCheat(int32 p1, int32 p2)
|
||||
{
|
||||
YearMonthDay ymd;
|
||||
ConvertDayToYMD(&ymd, _date);
|
||||
@@ -1472,10 +1620,10 @@ static const CheatEntry _cheats_ui[] = {
|
||||
|
||||
|
||||
static const Widget _cheat_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 399, 0, 13, STR_CHEATS, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, 14, 0, 399, 14, 147, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 0, 399, 14, 147, 0x0, STR_CHEATS_TIP},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 399, 0, 13, STR_CHEATS, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 0, 399, 14, 147, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 399, 14, 147, 0x0, STR_CHEATS_TIP},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -1618,7 +1766,7 @@ static const WindowDesc _cheats_desc = {
|
||||
};
|
||||
|
||||
|
||||
void ShowCheatWindow()
|
||||
void ShowCheatWindow(void)
|
||||
{
|
||||
Window *w;
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ static const int midi_idx[] = {
|
||||
};
|
||||
|
||||
|
||||
static void SkipToPrevSong()
|
||||
static void SkipToPrevSong(void)
|
||||
{
|
||||
byte *b = _cur_playlist;
|
||||
byte *p = b;
|
||||
@@ -86,7 +86,7 @@ static void SkipToPrevSong()
|
||||
_song_is_active = false;
|
||||
}
|
||||
|
||||
static void SkipToNextSong()
|
||||
static void SkipToNextSong(void)
|
||||
{
|
||||
byte *b = _cur_playlist, t;
|
||||
|
||||
@@ -106,7 +106,7 @@ static void MusicVolumeChanged(byte new_vol)
|
||||
_music_driver->set_volume(new_vol);
|
||||
}
|
||||
|
||||
static void DoPlaySong()
|
||||
static void DoPlaySong(void)
|
||||
{
|
||||
char filename[256];
|
||||
snprintf(filename, sizeof(filename), "%sgm_tt%.2d.gm",
|
||||
@@ -114,12 +114,12 @@ static void DoPlaySong()
|
||||
_music_driver->play_song(filename);
|
||||
}
|
||||
|
||||
static void DoStopMusic()
|
||||
static void DoStopMusic(void)
|
||||
{
|
||||
_music_driver->stop_song();
|
||||
}
|
||||
|
||||
static void SelectSongToPlay()
|
||||
static void SelectSongToPlay(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -142,7 +142,7 @@ static void SelectSongToPlay()
|
||||
}
|
||||
}
|
||||
|
||||
static void StopMusic()
|
||||
static void StopMusic(void)
|
||||
{
|
||||
_music_wnd_cursong = 0;
|
||||
DoStopMusic();
|
||||
@@ -150,7 +150,7 @@ static void StopMusic()
|
||||
InvalidateWindowWidget(WC_MUSIC_WINDOW, 0, 9);
|
||||
}
|
||||
|
||||
static void PlayPlaylistSong()
|
||||
static void PlayPlaylistSong(void)
|
||||
{
|
||||
if (_cur_playlist[0] == 0) {
|
||||
SelectSongToPlay();
|
||||
@@ -164,13 +164,13 @@ static void PlayPlaylistSong()
|
||||
InvalidateWindowWidget(WC_MUSIC_WINDOW, 0, 9);
|
||||
}
|
||||
|
||||
void ResetMusic()
|
||||
void ResetMusic(void)
|
||||
{
|
||||
_music_wnd_cursong = 1;
|
||||
DoPlaySong();
|
||||
}
|
||||
|
||||
void MusicLoop()
|
||||
void MusicLoop(void)
|
||||
{
|
||||
if (!msf.btn_down && _song_is_active) {
|
||||
StopMusic();
|
||||
@@ -275,19 +275,19 @@ static void MusicTrackSelectionWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _music_track_selection_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5,STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 431, 0, 13, STR_01EB_MUSIC_PROGRAM_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, 14, 0, 431, 14, 217, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 2, 181, 22, 215, 0x0, STR_01FA_CLICK_ON_MUSIC_TRACK_TO},
|
||||
{ WWT_IMGBTN, 14, 250, 429, 22, 215, 0x0, STR_01F2_CURRENT_PROGRAM_OF_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, 14, 186, 245, 44, 51, 0x0, STR_01F3_SELECT_ALL_TRACKS_PROGRAM},
|
||||
{ WWT_PUSHIMGBTN, 14, 186, 245, 52, 59, 0x0, STR_01F4_SELECT_OLD_STYLE_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, 14, 186, 245, 60, 67, 0x0, STR_01F5_SELECT_NEW_STYLE_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, 14, 186, 245, 68, 75, 0x0, STR_0330_SELECT_EZY_STREET_STYLE},
|
||||
{ WWT_PUSHIMGBTN, 14, 186, 245, 76, 83, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
|
||||
{ WWT_PUSHIMGBTN, 14, 186, 245, 84, 91, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
|
||||
{ WWT_PUSHIMGBTN, 14, 186, 245, 108, 115, 0x0, STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1},
|
||||
{ WWT_PUSHIMGBTN, 14, 186, 245, 124, 131, 0x0, STR_01F9_SAVE_MUSIC_SETTINGS},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5,STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 431, 0, 13, STR_01EB_MUSIC_PROGRAM_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 431, 14, 217, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 2, 181, 22, 215, 0x0, STR_01FA_CLICK_ON_MUSIC_TRACK_TO},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 250, 429, 22, 215, 0x0, STR_01F2_CURRENT_PROGRAM_OF_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 44, 51, 0x0, STR_01F3_SELECT_ALL_TRACKS_PROGRAM},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 52, 59, 0x0, STR_01F4_SELECT_OLD_STYLE_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 60, 67, 0x0, STR_01F5_SELECT_NEW_STYLE_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 68, 75, 0x0, STR_0330_SELECT_EZY_STREET_STYLE},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 76, 83, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 84, 91, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 108, 115, 0x0, STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 124, 131, 0x0, STR_01F9_SAVE_MUSIC_SETTINGS},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -299,7 +299,7 @@ static const WindowDesc _music_track_selection_desc = {
|
||||
MusicTrackSelectionWndProc
|
||||
};
|
||||
|
||||
static void ShowMusicTrackSelection()
|
||||
static void ShowMusicTrackSelection(void)
|
||||
{
|
||||
AllocateWindowDescFront(&_music_track_selection_desc, 0);
|
||||
}
|
||||
@@ -446,24 +446,24 @@ static void MusicWindowWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
static const Widget _music_window_widgets[] = {
|
||||
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, 14, 11, 299, 0, 13, STR_01D2_JAZZ_JUKEBOX, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHIMGBTN, 14, 0, 21, 14, 35, 0x2C5, STR_01DE_SKIP_TO_PREVIOUS_TRACK},
|
||||
{ WWT_PUSHIMGBTN, 14, 22, 43, 14, 35, 0x2C6, STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION},
|
||||
{ WWT_PUSHIMGBTN, 14, 44, 65, 14, 35, 0x2C7, STR_01E0_STOP_PLAYING_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, 14, 66, 87, 14, 35, 0x2C8, STR_01E1_START_PLAYING_MUSIC},
|
||||
{ WWT_IMGBTN, 14, 88, 299, 14, 35, 0x0, STR_01E2_DRAG_SLIDERS_TO_SET_MUSIC},
|
||||
{ WWT_IMGBTN, 14, 186, 201, 15, 34, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 0, 299, 36, 57, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, 14, 59, 240, 45, 53, 0x0, STR_NULL},
|
||||
{ WWT_PUSHIMGBTN, 14, 6, 55, 42, 49, 0x0, STR_01FB_TOGGLE_PROGRAM_SHUFFLE},
|
||||
{ WWT_PUSHIMGBTN, 14, 244, 293, 42, 49, 0x0, STR_01FC_SHOW_MUSIC_TRACK_SELECTION},
|
||||
{ WWT_PUSHIMGBTN, 14, 0, 49, 58, 65, 0x0, STR_01F3_SELECT_ALL_TRACKS_PROGRAM},
|
||||
{ WWT_PUSHIMGBTN, 14, 50, 99, 58, 65, 0x0, STR_01F4_SELECT_OLD_STYLE_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, 14, 100, 149, 58, 65, 0x0, STR_01F5_SELECT_NEW_STYLE_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, 14, 150, 199, 58, 65, 0x0, STR_0330_SELECT_EZY_STREET_STYLE},
|
||||
{ WWT_PUSHIMGBTN, 14, 200, 249, 58, 65, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
|
||||
{ WWT_PUSHIMGBTN, 14, 250, 299, 58, 65, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 299, 0, 13, STR_01D2_JAZZ_JUKEBOX, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 0, 21, 14, 35, 0x2C5, STR_01DE_SKIP_TO_PREVIOUS_TRACK},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 22, 43, 14, 35, 0x2C6, STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 44, 65, 14, 35, 0x2C7, STR_01E0_STOP_PLAYING_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 66, 87, 14, 35, 0x2C8, STR_01E1_START_PLAYING_MUSIC},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 88, 299, 14, 35, 0x0, STR_01E2_DRAG_SLIDERS_TO_SET_MUSIC},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 186, 201, 15, 34, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 299, 36, 57, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 59, 240, 45, 53, 0x0, STR_NULL},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 6, 55, 42, 49, 0x0, STR_01FB_TOGGLE_PROGRAM_SHUFFLE},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 244, 293, 42, 49, 0x0, STR_01FC_SHOW_MUSIC_TRACK_SELECTION},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 0, 49, 58, 65, 0x0, STR_01F3_SELECT_ALL_TRACKS_PROGRAM},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 50, 99, 58, 65, 0x0, STR_01F4_SELECT_OLD_STYLE_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 100, 149, 58, 65, 0x0, STR_01F5_SELECT_NEW_STYLE_MUSIC},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 150, 199, 58, 65, 0x0, STR_0330_SELECT_EZY_STREET_STYLE},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 200, 249, 58, 65, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 250, 299, 58, 65, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -475,7 +475,7 @@ static const WindowDesc _music_window_desc = {
|
||||
MusicWindowWndProc
|
||||
};
|
||||
|
||||
void ShowMusicWindow()
|
||||
void ShowMusicWindow(void)
|
||||
{
|
||||
AllocateWindowDescFront(&_music_window_desc, 0);
|
||||
}
|
||||
|
||||
@@ -41,9 +41,9 @@ static byte _network_clients_connected = 0;
|
||||
static uint16 _network_client_index = NETWORK_SERVER_INDEX + 1;
|
||||
|
||||
/* Some externs / forwards */
|
||||
extern void ShowJoinStatusWindow();
|
||||
extern void StateGameLoop();
|
||||
extern uint GetCurrentCurrencyRate();
|
||||
extern void ShowJoinStatusWindow(void);
|
||||
extern void StateGameLoop(void);
|
||||
extern uint GetCurrentCurrencyRate(void);
|
||||
|
||||
// Function that looks up the CI for a given client-index
|
||||
NetworkClientInfo *NetworkFindClientInfoFromIndex(uint16 client_index)
|
||||
@@ -182,18 +182,20 @@ uint NetworkCalculateLag(const NetworkClientState *cs)
|
||||
|
||||
// There was a non-recoverable error, drop back to the main menu with a nice
|
||||
// error
|
||||
void NetworkError(StringID error_string)
|
||||
static void NetworkError(StringID error_string)
|
||||
{
|
||||
_switch_mode = SM_MENU;
|
||||
_switch_mode_errorstr = error_string;
|
||||
}
|
||||
|
||||
void ClientStartError(char *error) {
|
||||
static void ClientStartError(const char *error)
|
||||
{
|
||||
DEBUG(net, 0)("[NET] Client could not start network: %s",error);
|
||||
NetworkError(STR_NETWORK_ERR_CLIENT_START);
|
||||
}
|
||||
|
||||
void ServerStartError(char *error) {
|
||||
static void ServerStartError(const char *error)
|
||||
{
|
||||
DEBUG(net, 0)("[NET] Server could not start network: %s",error);
|
||||
NetworkError(STR_NETWORK_ERR_SERVER_START);
|
||||
}
|
||||
@@ -219,7 +221,8 @@ static void NetworkClientError(byte res, NetworkClientState *cs) {
|
||||
default: errorno = NETWORK_ERROR_GENERAL;
|
||||
}
|
||||
// This means we fucked up and the server closed the connection
|
||||
if (res != NETWORK_RECV_STATUS_SERVER_ERROR && res != NETWORK_RECV_STATUS_SERVER_FULL) {
|
||||
if (res != NETWORK_RECV_STATUS_SERVER_ERROR && res != NETWORK_RECV_STATUS_SERVER_FULL &&
|
||||
res != NETWORK_RECV_STATUS_SERVER_BANNED) {
|
||||
SEND_COMMAND(PACKET_CLIENT_ERROR)(errorno);
|
||||
|
||||
// Dequeue all commands before closing the socket
|
||||
@@ -481,7 +484,10 @@ void NetworkCloseClient(NetworkClientState *cs)
|
||||
{
|
||||
NetworkClientInfo *ci;
|
||||
// Socket is already dead
|
||||
if (cs->socket == INVALID_SOCKET) return;
|
||||
if (cs->socket == INVALID_SOCKET) {
|
||||
cs->quited = true;
|
||||
return;
|
||||
}
|
||||
|
||||
DEBUG(net, 1) ("[NET] Closed client connection");
|
||||
|
||||
@@ -508,6 +514,7 @@ void NetworkCloseClient(NetworkClientState *cs)
|
||||
|
||||
closesocket(cs->socket);
|
||||
cs->writable = false;
|
||||
cs->quited = true;
|
||||
|
||||
// Free all pending and partially received packets
|
||||
while (cs->packet_queue != NULL) {
|
||||
@@ -615,6 +622,8 @@ static void NetworkAcceptClients(void)
|
||||
#else
|
||||
LONG sin_len; // for some reason we need a 'LONG' under MorphOS
|
||||
#endif
|
||||
uint i;
|
||||
bool banned;
|
||||
|
||||
// Should never ever happen.. is it possible??
|
||||
assert(_listensocket != INVALID_SOCKET);
|
||||
@@ -639,6 +648,33 @@ static void NetworkAcceptClients(void)
|
||||
{int b = 1; setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (const char*)&b, sizeof(b));}
|
||||
#endif
|
||||
|
||||
/* Check if the client is banned */
|
||||
banned = false;
|
||||
for (i = 0; i < lengthof(_network_ban_list); i++) {
|
||||
if (_network_ban_list[i] == NULL)
|
||||
continue;
|
||||
|
||||
if (sin.sin_addr.s_addr == inet_addr(_network_ban_list[i])) {
|
||||
Packet *p = NetworkSend_Init(PACKET_SERVER_BANNED);
|
||||
|
||||
DEBUG(net, 1)("[NET] Banned ip tried to join (%s), refused", _network_ban_list[i]);
|
||||
|
||||
p->buffer[0] = p->size & 0xFF;
|
||||
p->buffer[1] = p->size >> 8;
|
||||
|
||||
send(s, p->buffer, p->size, 0);
|
||||
closesocket(s);
|
||||
|
||||
free(p);
|
||||
|
||||
banned = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* If this client is banned, continue with next client */
|
||||
if (banned)
|
||||
continue;
|
||||
|
||||
cs = NetworkAllocClient(s);
|
||||
if (cs == NULL) {
|
||||
// no more clients allowed?
|
||||
@@ -842,17 +878,17 @@ void NetworkAddServer(const byte *b)
|
||||
/* Generates the list of manually added hosts from NetworkGameList and
|
||||
* dumps them into the array _network_host_list. This array is needed
|
||||
* by the function that generates the config file. */
|
||||
void NetworkRebuildHostList()
|
||||
void NetworkRebuildHostList(void)
|
||||
{
|
||||
int i=0;
|
||||
uint i = 0;
|
||||
NetworkGameList *item = _network_game_list;
|
||||
while (item != NULL && i!=lengthof(_network_host_list)) {
|
||||
while (item != NULL && i != lengthof(_network_host_list)) {
|
||||
if (item->manually)
|
||||
_network_host_list[i++] = strdup(item->info.hostname);
|
||||
_network_host_list[i++] = str_fmt("%s:%i", item->info.hostname, item->port);
|
||||
item = item->next;
|
||||
}
|
||||
|
||||
for (; i<lengthof(_network_host_list); i++) {
|
||||
for (; i < lengthof(_network_host_list); i++) {
|
||||
_network_host_list[i] = strdup("");
|
||||
}
|
||||
}
|
||||
@@ -891,6 +927,8 @@ static void NetworkInitGameInfo(void)
|
||||
NetworkClientInfo *ci;
|
||||
|
||||
ttd_strlcpy(_network_game_info.server_name, _network_server_name, sizeof(_network_game_info.server_name));
|
||||
ttd_strlcpy(_network_game_info.server_password, _network_server_password, sizeof(_network_server_password));
|
||||
ttd_strlcpy(_network_game_info.rcon_password, _network_rcon_password, sizeof(_network_rcon_password));
|
||||
if (_network_game_info.server_name[0] == '\0')
|
||||
snprintf(_network_game_info.server_name, sizeof(_network_game_info.server_name), "Unnamed Server");
|
||||
|
||||
@@ -906,8 +944,8 @@ static void NetworkInitGameInfo(void)
|
||||
_network_game_info.spectators_on = 0;
|
||||
_network_game_info.game_date = _date;
|
||||
_network_game_info.start_date = ConvertIntDate(_patches.starting_date);
|
||||
_network_game_info.map_width = TILES_X;
|
||||
_network_game_info.map_height = TILES_Y;
|
||||
_network_game_info.map_width = MapSizeX();
|
||||
_network_game_info.map_height = MapSizeY();
|
||||
_network_game_info.map_set = _opt.landscape;
|
||||
|
||||
if (_network_game_info.server_password[0] == '\0') {
|
||||
@@ -1262,10 +1300,10 @@ void NetworkStartUp(void)
|
||||
DEBUG(net, 3) ("[NET][Core] Starting network...");
|
||||
|
||||
#if defined(__MORPHOS__) || defined(__AMIGA__)
|
||||
/*
|
||||
/*
|
||||
* IMPORTANT NOTE: SocketBase needs to be initialized before we use _any_
|
||||
* network related function, else: crash.
|
||||
*/
|
||||
*/
|
||||
{
|
||||
DEBUG(misc,3) ("[NET][Core] Loading bsd socket library");
|
||||
if (!(SocketBase = OpenLibrary("bsdsocket.library", 4))) {
|
||||
@@ -1291,7 +1329,7 @@ void NetworkStartUp(void)
|
||||
#endif // __AMIGA__
|
||||
}
|
||||
#endif // __MORPHOS__ / __AMIGA__
|
||||
|
||||
|
||||
// Network is available
|
||||
_network_available = true;
|
||||
_network_dedicated = false;
|
||||
@@ -1310,7 +1348,7 @@ void NetworkStartUp(void)
|
||||
memset(&_network_game_info, 0, sizeof(_network_game_info));
|
||||
|
||||
/* XXX - Hard number here, because the strings can currently handle no more
|
||||
then 10 clients -- TrueLight */
|
||||
than 10 clients -- TrueLight */
|
||||
_network_game_info.clients_max = 10;
|
||||
|
||||
// Let's load the network in windows
|
||||
|
||||